กลับไปหน้าบทความ

อ่าน 6 นาที

NoSQL

NoSQL (ชื่อเรียกแบบไม่เป็นทางการที่ต่อมากลายเป็นชื่อทางการ หมายถึง "ไม่ใช่แค่ SQL " หรือ "ไม่ใช่เชิงสัมพันธ์") [ 1 ] หมายถึงรูปแบบ การออกแบบ ฐานข้อมูล ประเภทหนึ่ง...

NoSQL

NoSQL (ชื่อเรียกแบบไม่เป็นทางการที่ต่อมากลายเป็นชื่อทางการ หมายถึง "ไม่ใช่แค่SQL " หรือ "ไม่ใช่เชิงสัมพันธ์") [ 1 ]หมายถึงรูปแบบ การออกแบบ ฐานข้อมูล ประเภทหนึ่ง ที่จัดเก็บและเรียกค้นข้อมูลแตกต่างจากโครงสร้างแบบตารางดั้งเดิมของฐานข้อมูลเชิงสัมพันธ์ต่างจากฐานข้อมูลเชิงสัมพันธ์ที่จัดระเบียบข้อมูลเป็นแถวและคอลัมน์เหมือนสเปรดชีต ฐานข้อมูล NoSQL ใช้โครงสร้างข้อมูลเดียว เช่นคู่คีย์-ค่าคอลัมน์กว้าง กราฟหรือเอกสารเพื่อเก็บข้อมูล เนื่องจากรูปแบบการออกแบบที่ไม่ใช่เชิงสัมพันธ์นี้ไม่จำเป็นต้องมีสคีมา ที่ตายตัว จึงสามารถปรับขนาดได้ง่ายเพื่อจัดการ ชุดข้อมูลขนาดใหญ่ ซึ่งมักไม่มีโครงสร้าง [ 2 ]บางครั้งระบบ NoSQL ถูกเรียกว่า"ไม่ใช่แค่ SQL"เพราะสามารถรองรับ ภาษาการสืบค้นที่คล้าย SQLหรือทำงานร่วมกับฐานข้อมูล SQL ใน การตั้งค่าแบบ polyglot-persistentซึ่งมีการรวมฐานข้อมูลหลายประเภทเข้าด้วยกัน[ 3 ] [ 4 ]ฐานข้อมูลที่ไม่ใช่เชิงสัมพันธ์มีมาตั้งแต่ช่วงปลายทศวรรษ 1960 แต่คำว่า "NoSQL" ปรากฏขึ้นในช่วงต้นทศวรรษ 2000 โดยได้รับแรงกระตุ้นจากความต้องการของ บริษัท Web 2.0เช่น แพลตฟอร์มโซเชียลมีเดีย[ 5 ] [ 6 ]

ฐานข้อมูล NoSQL เป็นที่นิยมใน แอปพลิเคชันเว็บ ขนาดใหญ่และแบบเรียลไทม์เนื่องจากการออกแบบที่เรียบง่าย ความสามารถในการปรับขนาดข้ามคลัสเตอร์ของเครื่อง (เรียกว่าการปรับขนาดแนวนอน ) และการควบคุมความพร้อมใช้งาน ของข้อมูล ที่ แม่นยำ [ 7 ] [ 8 ]โครงสร้างเหล่านี้สามารถเร่งความเร็วงานบางอย่างและมักถือว่ามีความยืดหยุ่นมากกว่าตารางฐานข้อมูลแบบตายตัว[ 9 ]อย่างไรก็ตาม ระบบ NoSQL จำนวนมากให้ความสำคัญกับความเร็วและความพร้อมใช้งานมากกว่าความสอดคล้องอย่างเคร่งครัด (ตามทฤษฎี CAP ) โดยใช้ความสอดคล้องในที่สุด ซึ่งการอัปเดตจะไปถึงโหนดทั้งหมดในที่สุด โดยทั่วไปภายในไม่กี่มิลลิวินาที แต่อาจทำให้เกิดความล่าช้าเล็กน้อยในการเข้าถึงข้อมูลล่าสุด ซึ่งเรียกว่าการอ่านที่ล้าสมัย[ 10 ]ในขณะที่ส่วนใหญ่ขาด การสนับสนุนธุรกรรม ACID อย่างเต็มรูปแบบ แต่บางระบบ เช่นMongoDBก็มีให้เป็นคุณสมบัติหลัก[ 11 ]

อุปสรรคต่อการนำไปใช้

อุปสรรคต่อการนำ NoSQL มาใช้ในวงกว้าง ได้แก่ การใช้ ภาษาการสืบค้นระดับต่ำแทน SQL ความไม่สามารถในการเชื่อมต่อ แบบเฉพาะกิจ ระหว่างตาราง การขาดอินเทอร์เฟซที่เป็นมาตรฐาน และการลงทุนจำนวนมากที่ทำไปแล้วในฐานข้อมูลเชิงสัมพันธ์[ 12 ]ระบบ NoSQL บางระบบมีความเสี่ยงที่จะสูญเสียข้อมูลผ่านการเขียนที่สูญหายหรือรูปแบบอื่นๆ แม้ว่าคุณสมบัติเช่นการบันทึกการเขียนล่วงหน้าซึ่งเป็นวิธีการบันทึกการเปลี่ยนแปลงก่อนที่จะนำไปใช้ จะช่วยป้องกันสิ่งนี้ได้[ 13 ] [ 14 ]สำหรับการประมวลผลธุรกรรมแบบกระจายข้ามฐานข้อมูลหลายแห่ง การรักษาความสอดคล้องของข้อมูลเป็นความท้าทายสำหรับทั้งระบบ NoSQL และระบบเชิงสัมพันธ์ เนื่องจากฐานข้อมูลเชิงสัมพันธ์ไม่สามารถบังคับใช้กฎที่เชื่อมโยงฐานข้อมูลที่แยกจากกันได้ และมีระบบเพียงไม่กี่ระบบที่รองรับทั้ง ธุรกรรม ACIDและ มาตรฐาน X/Open XAสำหรับการจัดการการอัปเดตแบบกระจาย[ 15 ] [ 16 ] ข้อจำกัดภายในสภาพแวดล้อมอินเทอร์เฟซได้รับการแก้ไขโดยใช้โปรโตคอลการจำลองเสมือนเชิงความหมาย เพื่อให้บริการ NoSQL สามารถเข้าถึงได้โดยระบบปฏิบัติการ ส่วนใหญ่ [ 17 ]

ประวัติศาสตร์

เครื่องเล่น Last.fm
เครื่องเล่น Last.fm

คำว่าNoSQLถูกใช้โดยCarlo Strozziในปี 1998 เพื่อตั้งชื่อฐานข้อมูลเชิงสัมพันธ์แบบโอเพนซอร์ส Strozzi NoSQL ที่มีน้ำหนักเบา ซึ่งไม่ได้เปิดเผย อินเทอร์เฟซ ภาษาการสอบถามเชิงโครงสร้าง (SQL) มาตรฐาน แต่ยังคงเป็นเชิงสัมพันธ์[ 18 ] RDBMS NoSQL ของเขาแตกต่างจากแนวคิดทั่วไปของฐานข้อมูล NoSQL ในช่วงประมาณปี 2009 Strozzi แนะนำว่า เนื่องจากขบวนการ NoSQL ในปัจจุบัน "แยกตัวออกจากแบบจำลองเชิงสัมพันธ์โดยสิ้นเชิง ดังนั้นจึงควรเรียกว่า 'NoREL' ให้เหมาะสมกว่า" [ 19 ]ซึ่งหมายถึง "ไม่ใช่เชิงสัมพันธ์"

Johan Oskarsson ซึ่งในขณะนั้นเป็นนักพัฒนาที่Last.fmได้นำคำว่าNoSQL กลับมาใช้อีกครั้ง ในช่วงต้นปี 2552 เมื่อเขาจัดงานเพื่อหารือเกี่ยวกับ " ฐานข้อมูล แบบกระจายที่ไม่ใช่เชิงสัมพันธ์แบบ โอเพนซอร์ส " [ 20 ]ชื่อนี้พยายามที่จะระบุการเกิดขึ้นของแหล่งเก็บข้อมูลแบบกระจายที่ไม่ใช่เชิงสัมพันธ์จำนวนมากขึ้นเรื่อยๆ รวมถึงโคลนโอเพนซอร์สของBigtable / MapReduce ของ Google และ DynamoDBของ Amazon

ประเภทและตัวอย่าง

มีวิธีการต่างๆ มากมายในการจำแนกฐานข้อมูล NoSQL โดยมีหมวดหมู่และหมวดหมู่ย่อยที่แตกต่างกัน ซึ่งบางส่วนอาจทับซ้อนกัน ต่อไปนี้เป็นการจำแนกประเภทที่ไม่ครบถ้วนตามแบบจำลองข้อมูล พร้อมตัวอย่าง: [ 21 ]

พิมพ์ตัวอย่างที่โดดเด่นของประเภทนี้
แคชแบบคีย์-ค่าApache Ignite , Couchbase , Coherence , eXtreme Scale , Hazelcast , Infinispan , Memcached , Redis , Velocity
ร้านค้าคีย์-ค่าAzure Cosmos DB , ArangoDB , Amazon DynamoDB , Aerospike , Couchbase , ScyllaDB
ระบบจัดเก็บข้อมูลแบบคีย์-ค่า (แบบมีความสอดคล้องกันในที่สุด)Azure Cosmos DB , Oracle NoSQL Database , Riak , Voldemort
ที่เก็บข้อมูลแบบคีย์-ค่า (เรียงลำดับ)FoundationDB , InfinityDB , LMDB , MemcacheDB
ร้านทูเปิลApache River , GigaSpaces , Tarantool , TIBCO ActiveSpaces, OpenLink Virtuoso
ทริปเปิลสโตร์AllegroGraph , MarkLogic , Ontotext-OWLIM , ฐานข้อมูล Oracle NoSQL , Profium Sense, Virtuoso Universal Server
ฐานข้อมูลวัตถุObjectivity/DB , Perst , ZODB , db4o , GemStone/S , InterSystems Caché , JADE , ObjectDatabase++ , ObjectDB , ObjectStore , ODABA , Realm , OpenLink Virtuoso , Versant Object Database , Indexed Database API
ที่เก็บเอกสารAzure Cosmos DB , ArangoDB , BaseX , Clusterpoint , Couchbase , CouchDB , DocumentDB , eXist-db , Google Cloud Firestore , IBM Domino , MarkLogic , MongoDB , RavenDB , Qizx, RethinkDB , Elasticsearch , OrientDB
ร้านค้าเสากว้างAzure Cosmos DB , Amazon DynamoDB , Bigtable , Cassandra , Google Cloud Datastore , HBase , Hypertable , ScyllaDB
ฐานข้อมูลแบบหลายโมเดลดั้งเดิมArangoDB , Azure Cosmos DB , OrientDB , MarkLogic , Apache Ignite , [ 22 ] [ 23 ] Couchbase , FoundationDB , Oracle Database , AgensGraph
ฐานข้อมูลกราฟAzure Cosmos DB , AllegroGraph , ArangoDB , Apache Giraph , GUN (Graph Universe Node) , InfiniteGraph , MarkLogic , Neo4J , OrientDB , Virtuoso
ฐานข้อมูลหลายค่าฐานข้อมูล D3 Pick , Extensible Storage Engine (ESE/NT), InfinityDB , InterSystems Caché , ฐานข้อมูล jBASE Pick , mvBase Rocket Software , mvEnterprise Rocket Software , Northgate Information Solutions Reality (ฐานข้อมูล Pick/MV ดั้งเดิม), OpenQM, OpenInsight (Windows) และ Advanced Revelation (DOS) ของ Revelation Software, UniData Rocket U2 , UniVerse Rocket U2

ร้านค้าคีย์-ค่า

ระบบจัดเก็บข้อมูลแบบคีย์-ค่า (KV) ใช้อาร์เรย์แบบเชื่อมโยง (เรียกอีกอย่างว่าแผนที่หรือพจนานุกรม) เป็นแบบจำลองข้อมูลพื้นฐาน ในแบบจำลองนี้ ข้อมูลจะถูกแสดงเป็นชุดของคู่คีย์-ค่า โดยที่คีย์ที่เป็นไปได้แต่ละคีย์จะปรากฏในชุดได้มากที่สุดเพียงครั้งเดียว[ 24 ] [ 25 ]

แบบจำลองคีย์-ค่าเป็นหนึ่งในแบบจำลองข้อมูลที่ไม่ธรรมดาที่ง่ายที่สุด และแบบจำลองข้อมูลที่ซับซ้อนกว่ามักจะถูกนำไปใช้เป็นส่วนขยายของแบบจำลองคีย์-ค่า แบบจำลองคีย์-ค่าสามารถขยายไปเป็นแบบจำลองที่มีลำดับแบบไม่ต่อเนื่องซึ่งรักษาคีย์ในลำดับพจนานุกรม ส่วนขยายนี้มีประสิทธิภาพในการ คำนวณ สูง เนื่องจากสามารถเรียก ช่วงคีย์ที่เลือกได้อย่างมีประสิทธิภาพ[ 26 ]

ระบบจัดเก็บข้อมูลแบบคีย์-ค่าสามารถใช้โมเดลความสอดคล้องได้หลากหลายตั้งแต่ความสอดคล้องในที่สุด (eventual consistency ) ไปจนถึง ความสามารถ ในการเรียงลำดับ (serializability ) ฐานข้อมูลบางประเภทสนับสนุนการเรียงลำดับของคีย์ มีการใช้งานฮาร์ดแวร์หลายรูปแบบ และผู้ใช้บางรายจัดเก็บข้อมูลในหน่วยความจำ (RAM) ในขณะที่บางรายจัดเก็บไว้ในไดรฟ์โซลิดสเตต (SSD) หรือดิสก์หมุน (หรือที่เรียกว่าฮาร์ดดิสก์ไดรฟ์ (HDD))

ที่เก็บเอกสาร

แนวคิดหลักของฐานข้อมูลแบบเอกสารคือ "เอกสาร" แม้ว่ารายละเอียดของคำจำกัดความนี้จะแตกต่างกันไปในแต่ละฐานข้อมูลแบบเอกสาร แต่ทั้งหมดก็ถือว่าเอกสารนั้นบรรจุและเข้ารหัสข้อมูล (หรือสารสนเทศ) ในรูปแบบหรือการเข้ารหัสมาตรฐานบางอย่าง การเข้ารหัสที่ใช้กันทั่วไป ได้แก่XML , YAML , JSONและ รูปแบบ ไบนารีเช่นBSONเอกสารจะถูกระบุในฐานข้อมูลโดยใช้คีย์ เฉพาะ ที่แทนเอกสารนั้น ลักษณะเด่นอีกประการหนึ่งของฐานข้อมูลแบบเอกสารคือAPIหรือภาษาการสืบค้นเพื่อดึงเอกสารตามเนื้อหาของเอกสารนั้น

ระบบแต่ละแบบมีวิธีการจัดระเบียบและ/หรือจัดกลุ่มเอกสารที่แตกต่างกัน:

  • คอลเลกชัน
  • แท็ก
  • เมตาเดต้าที่ไม่สามารถมองเห็นได้
  • ลำดับชั้นของไดเร็กทอรี

เมื่อเปรียบเทียบกับฐานข้อมูลเชิงสัมพันธ์แล้ว คอลเลกชันอาจเปรียบได้กับตาราง และเอกสารอาจเปรียบได้กับระเบียน แต่ทั้งสองอย่างแตกต่างกัน – ทุกระเบียนในตารางจะมีลำดับของฟิลด์เหมือนกัน ในขณะที่เอกสารในคอลเลกชันอาจมีฟิลด์ที่แตกต่างกันอย่างสิ้นเชิง

กราฟ

ฐานข้อมูลกราฟถูกออกแบบมาสำหรับข้อมูลที่มีความสัมพันธ์ซึ่งสามารถแสดงได้อย่างดีในรูปกราฟที่ประกอบด้วยองค์ประกอบที่เชื่อมต่อกันด้วยความสัมพันธ์จำนวนจำกัด ตัวอย่างข้อมูลได้แก่ความสัมพันธ์ทางสังคมการเชื่อมโยงระบบขนส่งสาธารณะ แผนที่ถนน โครงสร้างเครือข่าย เป็นต้น

ฐานข้อมูลกราฟและภาษาการสืบค้นข้อมูลของฐานข้อมูลเหล่านั้น
ชื่อภาษาหมายเหตุ
เอเจนส์กราฟไซเฟอร์ฐานข้อมูลกราฟหลายโมเดล
อัลเลโกรกราฟสปาร์คิวแอลร้านค้าสามชั้น RDF
อเมซอน เนปจูนเกรมลิน , สปาร์คิวแอลฐานข้อมูลกราฟ
อารังโกดีบีAQL, JavaScript , GraphQLระบบจัดการฐานข้อมูลแบบหลายโมเดล: ฐานข้อมูลเอกสาร , ฐานข้อมูลกราฟและที่เก็บข้อมูลแบบคีย์-ค่า
Azure Cosmos DBเกรมลินฐานข้อมูลกราฟ
เดกซ์/สปาร์คซีC++ , Java , C# , Pythonฐานข้อมูลกราฟ
ฟล็อกดีบีสกาล่าฐานข้อมูลกราฟ
GUN (Graph Universe Node)โค้ด JavaScriptฐานข้อมูลกราฟ
IBM Db2สปาร์คิวแอลเพิ่มการจัดเก็บข้อมูลแบบ RDF triple store ใน DB2 10
อินฟินิตี้กราฟชวาฐานข้อมูลกราฟ
จานัสกราฟชวาฐานข้อมูลกราฟ
มาร์คลอจิกJava , JavaScript , SPARQL , XQueryฐานข้อมูลเอกสารหลายรูปแบบและที่เก็บข้อมูลไตรภาค RDF
นีโอ4เจไซเฟอร์ฐานข้อมูลกราฟ
โอเพนลิงก์ เวอร์ทูโอโซC++ , C# , Java , SPARQLมิดเดิลแวร์และเอนจินฐานข้อมูลแบบไฮบริด
ออราเคิลSPARQL 1.1เพิ่มแหล่งเก็บ RDF สามชั้นใน 11 กรัม
โอเรียนท์ดีบีจาวา , SQLฐาน ข้อมูลเอกสารและกราฟแบบหลายโมเดล
โอว์ลิมJava , SPARQL 1.1ร้านค้าสามชั้น RDF
โปรเฟียม เซนส์จาวา , SPARQLร้านค้าสามชั้น RDF
เรดิสกราฟไซเฟอร์ฐานข้อมูลกราฟ
บริษัท สแควร์ เอ็นเตอร์ไพรส์ชวาฐานข้อมูลกราฟ
เทอร์มินัสดีบีJavaScript, Python , บันทึกข้อมูลแหล่งเก็บข้อมูลสามส่วนและแหล่งเก็บข้อมูลเอกสาร RDF แบบโอเพนซอร์ส[ 27 ]

ผลงาน

โดยทั่วไปแล้ว ประสิทธิภาพของฐานข้อมูล NoSQL จะถูกประเมินโดยใช้ตัวชี้วัดปริมาณงาน (throughput ) ซึ่งวัดเป็นจำนวนการดำเนินการต่อวินาที การประเมินประสิทธิภาพต้องให้ความสำคัญกับเกณฑ์มาตรฐาน ที่เหมาะสม เช่น การกำหนดค่าในสภาพแวดล้อมการผลิต พารามิเตอร์ของฐานข้อมูล ปริมาณข้อมูลที่คาดการณ์ไว้ และภาระงาน ของผู้ ใช้ พร้อมกัน

Ben Scofield จัดอันดับฐานข้อมูล NoSQL ประเภทต่างๆ ดังนี้: [ 28 ]

แบบจำลองข้อมูลผลงานความสามารถในการปรับขนาดความยืดหยุ่นความซับซ้อนความถูกต้องของข้อมูลฟังก์ชันการทำงาน
ร้านค้าคีย์-ค่าสูงสูงสูงไม่มีต่ำตัวแปร (ไม่มี)
ร้านค้าแบบเสาเรียงสูงสูงปานกลางต่ำต่ำน้อยที่สุด
ร้านค้าที่เน้นเอกสารเป็นหลักสูงตัวแปร (สูง)สูงต่ำต่ำตัวแปร (ต่ำ)
ฐานข้อมูลกราฟตัวแปรตัวแปรสูงสูงต่ำ-ปานกลางทฤษฎีกราฟ
ฐานข้อมูลเชิงสัมพันธ์ตัวแปรตัวแปรต่ำปานกลางสูงพีชคณิตเชิงสัมพันธ์

การเปรียบเทียบประสิทธิภาพและความสามารถในการขยายขนาดมักทำโดยใช้เกณฑ์มาตรฐาน YCSB เป็นหลัก

การจัดการข้อมูลเชิงสัมพันธ์

เนื่องจากฐานข้อมูล NoSQL ส่วนใหญ่ไม่มีความสามารถในการใช้การเชื่อมตาราง (joins) ในการสืบค้นข้อมูล ดังนั้นโครงสร้างฐานข้อมูลจึงจำเป็นต้องออกแบบแตกต่างออกไป มีเทคนิคหลักสามประการสำหรับการจัดการข้อมูลเชิงสัมพันธ์ในฐานข้อมูล NoSQL (ดูการเชื่อมตารางและการสนับสนุน ACIDสำหรับฐานข้อมูล NoSQL ที่รองรับการเชื่อมตาราง)

คำถามหลายข้อ

แทนที่จะดึงข้อมูลทั้งหมดด้วยการสืบค้นเพียงครั้งเดียว มักจะต้องทำการสืบค้นหลายครั้งเพื่อให้ได้ข้อมูลที่ต้องการ การสืบค้นแบบ NoSQL มักจะเร็วกว่าการสืบค้นแบบ SQL แบบดั้งเดิม ดังนั้นต้นทุนของการสืบค้นเพิ่มเติมอาจยอมรับได้ หากจำเป็นต้องทำการสืบค้นจำนวนมากเกินไป วิธีการอีกสองวิธีที่เหลือจะเหมาะสมกว่า

การแคช การจำลองแบบ และข้อมูลที่ไม่ได้รับการปรับให้เป็นมาตรฐาน

แทนที่จะเก็บเฉพาะคีย์ต่างประเทศ เป็นเรื่องปกติที่จะเก็บค่าต่างประเทศจริงไว้พร้อมกับข้อมูลของโมเดล ตัวอย่างเช่น ความคิดเห็นในบล็อกแต่ละรายการอาจมีชื่อผู้ใช้ นอกเหนือจากรหัสผู้ใช้ ทำให้เข้าถึงชื่อผู้ใช้ได้ง่ายโดยไม่ต้องค้นหาเพิ่มเติม อย่างไรก็ตาม เมื่อชื่อผู้ใช้เปลี่ยนไป จะต้องเปลี่ยนชื่อผู้ใช้ในหลายที่ในฐานข้อมูล ดังนั้นวิธีการนี้จึงทำงานได้ดีกว่าเมื่อการอ่านบ่อยกว่าการเขียน[ 29 ]

ข้อมูลรัง

ในฐานข้อมูลแบบเอกสาร เช่น MongoDB เป็นเรื่องปกติที่จะจัดเก็บข้อมูลจำนวนมากไว้ในคอลเลกชันจำนวนน้อย ตัวอย่างเช่น ในแอปพลิเคชันบล็อก เราอาจเลือกที่จะจัดเก็บความคิดเห็นไว้ในเอกสารของบทความบล็อก เพื่อให้สามารถเรียกดูความคิดเห็นทั้งหมดได้ด้วยการเรียกใช้เพียงครั้งเดียว ดังนั้นในแนวทางนี้ เอกสารเดียวจึงมีข้อมูลทั้งหมดที่จำเป็นสำหรับงานเฉพาะนั้นๆ

ACID และเข้าร่วมสนับสนุน

ฐานข้อมูลจะถูกระบุว่ารองรับ คุณสมบัติ ACID (ความเป็นอะตอม ความสอดคล้อง การแยก และความคงทน) หรือ การดำเนินการ เชื่อมต่อ (join ) หากเอกสารประกอบของฐานข้อมูลนั้นระบุเช่นนั้น อย่างไรก็ตาม นี่ไม่ได้หมายความว่าความสามารถนั้นได้รับการสนับสนุนอย่างเต็มที่ในลักษณะเดียวกับฐานข้อมูล SQL ส่วนใหญ่เสมอไป

ฐานข้อมูลกรดเข้าร่วม
แอโรสไปค์ใช่เลขที่
เอเจนส์กราฟใช่ใช่
อะปาเช่ อิกไนต์ใช่ใช่
อารังโกดีบีใช่ใช่
อเมซอน ไดนาโมดีบีใช่เลขที่
คอชเบสใช่ใช่
คอชดีบีใช่ใช่
IBM Db2ใช่ใช่
อินฟินิตี้ดีบีใช่เลขที่
LMDBใช่เลขที่
มาร์คลอจิกใช่ใช่[ nb 1 ]
มงโกดีบีใช่ใช่[ nb 2 ]
โอเรียนท์ดีบีใช่ใช่[ nb 3 ]
  1. ^การเชื่อมต่อไม่จำเป็นต้องใช้กับฐานข้อมูลเอกสาร แต่ MarkLogic สามารถทำการเชื่อมต่อโดยใช้ความหมายได้ [ 30 ]
  2. ^ MongoDB ไม่รองรับการเข้าร่วมจากคอลเลกชันแบบชาร์ดจนถึงเวอร์ชัน 5.1 [ 31 ]
  3. ^ OrientDB สามารถแก้ไขการเชื่อมต่อแบบ 1:1 โดยใช้ลิงก์โดยการจัดเก็บลิงก์โดยตรงไปยังเรคอร์ดภายนอก [ 32 ]

การเพิ่มประสิทธิภาพการค้นหาและการสร้างดัชนีในฐานข้อมูล NoSQL

ฐานข้อมูล NoSQL ต่างๆ เช่นDynamoDB , MongoDB , Cassandra , Couchbase , HBase และ Redis แสดงพฤติกรรมที่แตกต่างกันเมื่อทำการค้นหาข้อมูลในฟิลด์ที่ไม่มีดัชนี หลายฐานข้อมูลจะทำการสแกนทั้งตารางหรือทั้งคอลเลกชันสำหรับการค้นหาดังกล่าว จากนั้นจึงทำการกรองข้อมูลหลังจากดึงข้อมูลเสร็จแล้ว อย่างไรก็ตาม ฐานข้อมูล NoSQL สมัยใหม่มักจะรวมเอาคุณสมบัติขั้นสูงเพื่อเพิ่มประสิทธิภาพการค้นหา ตัวอย่างเช่น MongoDB รองรับดัชนีแบบผสมและกลยุทธ์การเพิ่มประสิทธิภาพการค้นหา Cassandra มีดัชนีรองและมุมมองแบบ Materialized View และ Redis ใช้กลไกการสร้างดัชนีแบบกำหนดเองที่ปรับให้เหมาะกับกรณีการใช้งานเฉพาะ ระบบอย่าง Elasticsearch ใช้ดัชนีแบบกลับด้านสำหรับการค้นหาข้อความที่มีประสิทธิภาพ แต่ก็ยังอาจต้องทำการสแกนแบบเต็มสำหรับฟิลด์ที่ไม่มีดัชนี พฤติกรรมนี้สะท้อนให้เห็นถึงจุดเน้นในการออกแบบของระบบ NoSQL หลายๆ ระบบที่เน้นเรื่องความสามารถในการขยายขนาดและการดำเนินการตามคีย์ที่มีประสิทธิภาพ มากกว่าการค้นหาข้อมูลที่เหมาะสมที่สุดสำหรับฟิลด์ต่างๆ ดังนั้น แม้ว่าฐานข้อมูลเหล่านี้จะโดดเด่นในด้าน การดำเนินการ CRUD พื้นฐาน และการค้นหาตามคีย์ แต่ความเหมาะสมสำหรับการสืบค้นที่ซับซ้อนซึ่งเกี่ยวข้องกับการเชื่อมต่อหรือการกรองที่ไม่ใช้ดัชนีจะแตกต่างกันไปตามประเภทของฐานข้อมูล—เอกสาร คีย์-ค่า คอลัมน์กว้าง หรือกราฟ—และการใช้งานเฉพาะ[ 33 ]

ดูเพิ่มเติม

อ่านเพิ่มเติม

  • Sadalage, Pramod; Fowler, Martin (2012). NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence . Addison-Wesley. ISBN 978-0-321-82662-6.
  • McCreary, Dan; Kelly, Ann (2013). ทำความเข้าใจ NoSQL: คู่มือสำหรับผู้จัดการและพวกเราทุกคน . Manning. ISBN 9781617291074.
  • Wiese, Lena (2015). การจัดการข้อมูลขั้นสูงสำหรับ SQL, NoSQL, คลาวด์ และฐานข้อมูลแบบกระจาย . DeGruyter/Oldenbourg. ISBN 978-3-11-044140-6.
  • Strauch, Christof (2012). "ฐานข้อมูล NoSQL" (PDF )
  • Moniruzzaman, AB; Hossain, SA (2013). "ฐานข้อมูล NoSQL: ยุคใหม่ของฐานข้อมูลสำหรับการวิเคราะห์ข้อมูลขนาดใหญ่ - การจำแนกประเภท คุณลักษณะ และการเปรียบเทียบ" arXiv : 1307.0191 [ cs.DB ]
  • Orend, Kai (2013). " การวิเคราะห์และการจำแนกประเภทของฐานข้อมูล NoSQL และการประเมินความสามารถในการทดแทนเลเยอร์การคงอยู่ของข้อมูลเชิงวัตถุสัมพันธ์" CiteSeerX  10.1.1.184.483
  • กฤษณะ พระพิฆเนศ; กุลการ์นี, ซารัง; ทัดภาวาลา, ธรรมเมษ คีริต. “วิธีการและระบบการแบ่งปันข้อมูลตามเวอร์ชัน การรวบรวม และการรายงานข้อมูล ”
  • สตรัค, คริสตอฟ. "เอกสารข้อมูล NoSQL" (PDF ) สตุ๊ตการ์ท: Hochschule der Medien.
  • เอ็ดลิช, สเตฟาน. "รายการฐานข้อมูล NoSQL" .
  • นอยบาวเออร์, ปีเตอร์ (2010). "ฐานข้อมูลกราฟ, NOSQL และ Neo4j" .
  • Bushik, Sergey (2012). "การเปรียบเทียบฐานข้อมูล NoSQL ที่ไม่ขึ้นกับผู้จำหน่าย: Cassandra, HBase, MongoDB, Riak" . NetworkWorld.
  • Zicari, Roberto V. (2014). "คลังข้อมูล NoSQL – บทความ เอกสาร การนำเสนอ" . odbms.org .
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=NoSQL&oldid=1357603487 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ NoSQL

NoSQL (ชื่อเรียกแบบไม่เป็นทางการที่ต่อมากลายเป็นชื่อทางการ หมายถึง "ไม่ใช่แค่ SQL " หรือ "ไม่ใช่เชิงสัมพันธ์") [ 1 ] หมายถึงรูปแบบ การออกแบบ ฐานข้อมูล ประเภทหนึ่ง...

อุปสรรคต่อการนำไปใช้

อุปสรรคต่อการนำ NoSQL มาใช้ในวงกว้าง ได้แก่ การใช้ ภาษาการสืบค้น ระดับต่ำแทน SQL ความไม่สามารถใน การเชื่อมต่อ แบบเฉพาะกิจ ระหว่างตาราง การขาดอินเทอร์เฟซที่เป็นมาตรฐาน และการลงทุนจำนวนมากที่ทำไปแล้วในฐานข้อมูลเชิงสัมพันธ์ [ 12 ] ระบบ NoSQL...

ประวัติศาสตร์

คำว่า NoSQL ถูกใช้โดย Carlo Strozzi ในปี 1998 เพื่อตั้งชื่อ ฐานข้อมูลเชิงสัมพันธ์แบบโอเพนซอร์ส Strozzi NoSQL ที่มีน้ำหนักเบา ซึ่งไม่ได้เปิดเผย อินเทอร์เฟซ ภาษาการสอบถามเชิงโครงสร้าง (SQL) มาตรฐาน แต่ยังคงเป็นเชิงสัมพันธ์ [ 18 ] RDBMS NoSQL...

ประเภทและตัวอย่าง

มีวิธีการต่างๆ มากมายในการจำแนกฐานข้อมูล NoSQL โดยมีหมวดหมู่และหมวดหมู่ย่อยที่แตกต่างกัน ซึ่งบางส่วนอาจทับซ้อนกัน ต่อไปนี้เป็นการจำแนกประเภทที่ไม่ครบถ้วนตามแบบจำลองข้อมูล พร้อมตัวอย่าง: [ 21 ]