บทช่วยสอน NoSQL: คืออะไร ประเภทของฐานข้อมูล NoSQL และตัวอย่าง

NoSQL คืออะไร?

NoSQL ฐานข้อมูลเป็นระบบการจัดการข้อมูลที่ไม่เกี่ยวข้อง ซึ่งไม่ต้องการสคีมาแบบตายตัว หลีกเลี่ยงการรวมและปรับขนาดได้ง่าย วัตถุประสงค์หลักของการใช้ฐานข้อมูล NoSQL คือเพื่อการจัดเก็บข้อมูลแบบกระจายที่มีความต้องการพื้นที่จัดเก็บข้อมูลจำนวนมาก NoSQL ใช้สำหรับข้อมูลขนาดใหญ่และเว็บแอปแบบเรียลไทม์ ตัวอย่างเช่น บริษัทอย่าง Twitter, Facebook และ Google รวบรวมข้อมูลผู้ใช้หลายเทราไบต์ทุกวัน

ฐานข้อมูล NoSQL ย่อมาจาก “Not Only SQL” หรือ “Not SQL” แม้ว่าคำที่ดีกว่าจะเป็น "NoREL" แต่ NoSQL ก็ยังคงอยู่ Carl Strozz เปิดตัวแนวคิด NoSQL ในปี 1998

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

ฐานข้อมูล NoSQL

ทำไมต้อง NoSQL?

แนวคิดของฐานข้อมูล NoSQL ได้รับความนิยมจากยักษ์ใหญ่อินเทอร์เน็ตเช่น Google, Facebook, Amazonฯลฯ ที่ต้องจัดการกับข้อมูลจำนวนมหาศาล เวลาตอบสนองของระบบจะช้าเมื่อคุณใช้ RDBMS สำหรับข้อมูลจำนวนมาก

เพื่อแก้ไขปัญหานี้ เราสามารถ "ขยายขนาด" ระบบของเราโดยการอัพเกรดฮาร์ดแวร์ที่มีอยู่ของเรา กระบวนการนี้มีราคาแพง

อีกทางเลือกหนึ่งสำหรับปัญหานี้คือการกระจายโหลดฐานข้อมูลบนโฮสต์หลายตัวทุกครั้งที่โหลดเพิ่มขึ้น วิธีการนี้เรียกว่า "การขยายขนาด"

NoSQL

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

ประวัติโดยย่อของฐานข้อมูล NoSQL

  • 1998- Carlo Strozzi ใช้คำว่า NoSQL สำหรับฐานข้อมูลเชิงสัมพันธ์โอเพ่นซอร์สแบบไลท์เวทของเขา
  • 2000- ฐานข้อมูลกราฟ Neo4j เปิดตัวแล้ว
  • พ.ศ. 2004 (ค.ศ. XNUMX) – เปิดตัว Google BigTable
  • 2005- CouchDB เปิดตัว
  • 2007- บทความวิจัยเรื่อง Amazon ไดนาโมถูกปล่อยออกมา
  • 2008- Facebooks โอเพ่นซอร์ส Cassandra โครงการ
  • 2009- คำว่า NoSQL ได้รับการแนะนำอีกครั้ง

คุณสมบัติของ NoSQL

ไม่สัมพันธ์กัน

  • ฐานข้อมูล NoSQL ไม่เคยติดตาม โมเดลเชิงสัมพันธ์
  • อย่าจัดเตรียมตารางที่มีเรกคอร์ดคอลัมน์คงที่แบบเรียบๆ
  • ทำงานกับการรวมที่มีอยู่ในตัวเองหรือ BLOB
  • ไม่ต้องการการแมปเชิงวัตถุสัมพันธ์และการทำให้ข้อมูลเป็นมาตรฐาน
  • ไม่มีคุณสมบัติที่ซับซ้อน เช่น ภาษาสอบถาม ตัววางแผนสอบถาม การผนวกรวมความสมบูรณ์ของข้อมูลอ้างอิง ACID

ไม่มีสคีมา

  • ฐานข้อมูล NoSQL นั้นไม่มีสคีมาหรือมีสคีมาแบบผ่อนคลาย
  • ไม่ต้องการคำจำกัดความใดๆ ของสคีมาของข้อมูล
  • นำเสนอโครงสร้างข้อมูลที่หลากหลายในโดเมนเดียวกัน
คุณสมบัติของ NoSQL
NoSQL ไม่มีสคีมา

API แบบธรรมดา

  • เสนออินเทอร์เฟซที่ใช้งานง่ายสำหรับการจัดเก็บและการสืบค้นข้อมูลที่ให้ไว้
  • API อนุญาตให้มีการจัดการข้อมูลและวิธีการเลือกข้อมูลระดับต่ำ
  • โปรโตคอลแบบข้อความส่วนใหญ่ใช้กับ HTTP REST กับ JSON
  • ส่วนใหญ่ใช้ไม่มีภาษาคิวรี NoSQL ตามมาตรฐาน
  • ฐานข้อมูลที่เปิดใช้งานเว็บที่ทำงานเป็นบริการผ่านอินเทอร์เน็ต

กระจาย

  • ฐานข้อมูล NoSQL หลายฐานข้อมูลสามารถดำเนินการในลักษณะกระจายได้
  • เสนอความสามารถในการปรับขนาดอัตโนมัติและเฟลโอเวอร์
  • บ่อยครั้งที่แนวคิด ACID สามารถเสียสละเพื่อความสามารถในการขยายขนาดและปริมาณงานได้
  • ส่วนใหญ่ไม่มีการจำลองแบบซิงโครนัสระหว่างโหนดแบบกระจาย การจำลองแบบอะซิงโครนัสหลายมาสเตอร์ แบบเพียร์ทูเพียร์ การจำลอง HDFS
  • ให้ความสม่ำเสมอในที่สุดเท่านั้น
  • ไม่มีอะไรแบ่งปัน Archiเทคเจอร์ สิ่งนี้ทำให้การประสานงานน้อยลงและการกระจายตัวที่สูงขึ้น
คุณสมบัติของ NoSQL
NoSQL ไม่มีการแชร์อะไรเลย

ประเภทของฐานข้อมูล NoSQL

ฐานข้อมูล NoSQL แบ่งออกเป็นสี่ประเภทหลักๆ ได้แก่ คู่คีย์-ค่า เชิงคอลัมน์ อิงกราฟ และเชิงเอกสาร ทุกประเภทมีคุณสมบัติและข้อจำกัดเฉพาะตัว ไม่มีฐานข้อมูลใดที่ระบุข้างต้นจะดีไปกว่าการแก้ปัญหาทั้งหมด ผู้ใช้ควรเลือกฐานข้อมูลตามความต้องการผลิตภัณฑ์ของตน

ประเภทของฐานข้อมูล NoSQL:

  • ตามคู่คีย์-ค่า
  • กราฟเชิงคอลัมน์
  • ตามกราฟ
  • เน้นเอกสาร

ประเภทของฐานข้อมูล NoSQL

ตามค่าคีย์คู่

ข้อมูลจะถูกจัดเก็บไว้ในคู่คีย์/ค่า ได้รับการออกแบบในลักษณะที่จะจัดการกับข้อมูลจำนวนมากและภาระงานหนัก

ฐานข้อมูลพื้นที่จัดเก็บคู่คีย์-ค่าจะจัดเก็บข้อมูลเป็นตารางแฮชโดยที่แต่ละคีย์ไม่ซ้ำกัน และค่าอาจเป็น JSON, BLOB (Binary Large Objects) สตริง ฯลฯ

ตัวอย่างเช่น คู่คีย์-ค่าอาจมีคีย์เช่น "เว็บไซต์" ที่เชื่อมโยงกับค่าเช่น "Guru99"

ตามค่าคีย์คู่

เป็นหนึ่งในตัวอย่างฐานข้อมูล NoSQL พื้นฐานที่สุด ฐานข้อมูล NoSQL ประเภทนี้ใช้เป็นคอลเลกชัน พจนานุกรม อาร์เรย์ที่เชื่อมโยง ฯลฯ การจัดเก็บค่าคีย์ช่วยให้นักพัฒนาจัดเก็บข้อมูลที่ไม่มีสคีมา ทำงานได้ดีที่สุดสำหรับเนื้อหาในตะกร้าสินค้า

Redis, Dynamo, Riak คือตัวอย่าง NoSQL บางส่วนของฐานข้อมูลที่เก็บคีย์-ค่า พวกเขาทั้งหมดขึ้นอยู่กับ Amazonกระดาษไดนาโม

ตามคอลัมน์

ฐานข้อมูลเชิงคอลัมน์ทำงานบนคอลัมน์และอิงตามรายงาน BigTable โดย Google ทุกคอลัมน์จะได้รับการปฏิบัติแยกกัน ค่าของฐานข้อมูลคอลัมน์เดียวจะถูกจัดเก็บต่อเนื่องกัน

ฐานข้อมูล NoSQL แบบอิงคอลัมน์

ฐานข้อมูล NoSQL ที่ใช้คอลัมน์

พวกเขาให้ประสิทธิภาพสูงในการสืบค้นแบบรวมเช่น SUM, COUNT, AVG, MIN ฯลฯ เนื่องจากข้อมูลพร้อมใช้งานในคอลัมน์

ฐานข้อมูล NoSQL แบบอิงคอลัมน์ถูกนำมาใช้กันอย่างแพร่หลายในการจัดการคลังข้อมูล ระบบธุรกิจอัจฉริยะ, CRM, แค็ตตาล็อกการ์ดห้องสมุด,

เอชเบส, Cassandra, HBase, Hypertable คือตัวอย่างการสืบค้น NoSQL ของฐานข้อมูลแบบคอลัมน์

เชิงเอกสาร

DB NoSQL เชิงเอกสารจัดเก็บและดึงข้อมูลเป็นคู่ค่าคีย์ แต่ส่วนของค่าจะถูกจัดเก็บเป็นเอกสาร เอกสารถูกจัดเก็บในรูปแบบ JSON หรือ XML DB เข้าใจค่าและสามารถสอบถามได้

เทียบกับเชิงสัมพันธ์ เอกสาร

เทียบกับเชิงสัมพันธ์ เอกสาร

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

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

Amazon ซิมเพิลดีบี, CouchDB, MongoDB, เรียค, โลตัสโน๊ต, MongoDBเป็นเอกสารยอดนิยมที่มีต้นกำเนิด ระบบดีบีเอ็มเอส.

ตามกราฟ

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

ตามกราฟ

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

ฐานข้อมูลฐานกราฟส่วนใหญ่ใช้สำหรับเครือข่ายสังคม โลจิสติกส์ ข้อมูลเชิงพื้นที่

Neo4J, กราฟอนันต์, OrientDB, FlockDB คือฐานข้อมูลแบบกราฟยอดนิยมบางส่วน

เครื่องมือกลไกการค้นหาสำหรับ NoSQL

กลไกการดึงข้อมูลที่พบบ่อยที่สุดคือการดึงค่าตาม REST โดยยึดตามคีย์/ID ด้วยทรัพยากร GET

ฐานข้อมูลที่เก็บเอกสารเสนอการสืบค้นที่ยากขึ้นเนื่องจากเข้าใจค่าในคู่คีย์-ค่า ตัวอย่างเช่น, CouchDB อนุญาตให้กำหนดมุมมองด้วย MapReduce

ทฤษฎีบท CAP คืออะไร?

ทฤษฎีบท CAP เรียกอีกอย่างว่าทฤษฎีบทของผู้ผลิตเบียร์ โดยระบุว่าเป็นไปไม่ได้ที่ที่เก็บข้อมูลแบบกระจายจะให้การรับประกันมากกว่าสองในสาม

  1. ความมั่นคง
  2. ความพร้อมที่จะให้บริการ
  3. ความอดทนของพาร์ติชัน

สอดคล้อง:

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

สถานะ:

ฐานข้อมูลควรพร้อมใช้งานและตอบสนองอยู่เสมอ มันไม่ควรจะมีการหยุดทำงานใดๆ

ความอดทนของพาร์ติชัน:

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

ความสอดคล้องในที่สุด

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

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

ฐาน: Bอนิจจา Aพร้อมใช้งาน Sมักจะรัฐ Eความสม่ำเสมอของช่องลม

  • โดยพื้นฐานแล้ว Available หมายความว่า DB พร้อมใช้งานตลอดเวลาตามทฤษฎีบท CAP
  • สถานะซอฟต์หมายถึงแม้ไม่มีอินพุต สถานะของระบบอาจมีการเปลี่ยนแปลง
  • ความสอดคล้องในที่สุดหมายความว่าระบบจะมีความสม่ำเสมอเมื่อเวลาผ่านไป

ความสอดคล้องในที่สุด

ข้อดีของ NoSQL

  • สามารถใช้เป็นแหล่งข้อมูลหลักหรือแหล่งข้อมูลเชิงวิเคราะห์ได้
  • ความสามารถด้านข้อมูลขนาดใหญ่
  • ไม่มีจุดล้มเหลวแม้แต่จุดเดียว
  • การจำลองแบบง่าย
  • ไม่จำเป็นต้องแยกเลเยอร์แคช
  • มันให้ประสิทธิภาพที่รวดเร็วและความสามารถในการขยายแนวนอน
  • สามารถจัดการข้อมูลที่มีโครงสร้าง กึ่งโครงสร้าง และไม่มีโครงสร้างได้อย่างเท่าเทียมกัน
  • การเขียนโปรแกรมเชิงวัตถุซึ่งใช้งานง่ายและยืดหยุ่น
  • ฐานข้อมูล NoSQL ไม่ต้องการเซิร์ฟเวอร์ประสิทธิภาพสูงโดยเฉพาะ
  • รองรับภาษาและแพลตฟอร์มหลักของนักพัฒนา
  • ง่ายต่อการนำไปใช้มากกว่าการใช้ RDBMS
  • สามารถใช้เป็นแหล่งข้อมูลหลักสำหรับแอปพลิเคชันออนไลน์ได้
  • จัดการข้อมูลขนาดใหญ่ซึ่งจัดการความเร็ว ความหลากหลาย ปริมาณ และความซับซ้อนของข้อมูล
  • โดดเด่นด้านฐานข้อมูลแบบกระจายและการดำเนินงานศูนย์ข้อมูลหลายศูนย์
  • ขจัดความจำเป็นในการใช้เลเยอร์แคชเฉพาะในการจัดเก็บข้อมูล
  • นำเสนอการออกแบบสคีมาที่ยืดหยุ่นซึ่งสามารถเปลี่ยนแปลงได้อย่างง่ายดายโดยไม่มีการหยุดทำงานหรือบริการหยุดชะงัก

ข้อเสียของ NoSQL

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

สรุป

  • NoSQL เป็น DMS ที่ไม่เชิงสัมพันธ์ ซึ่งไม่ต้องการสคีมาคงที่ หลีกเลี่ยงการรวม และปรับขนาดได้ง่าย
  • แนวคิดของฐานข้อมูล NoSQL ได้รับความนิยมจากยักษ์ใหญ่อินเทอร์เน็ตเช่น Google, Facebook, Amazonฯลฯ ที่ต้องจัดการกับข้อมูลจำนวนมหาศาล
  • ในปี 1998 Carlo Strozzi ใช้คำว่า NoSQL สำหรับฐานข้อมูลเชิงสัมพันธ์โอเพ่นซอร์สแบบไลท์เวทของเขา
  • ฐานข้อมูล NoSQL ไม่เคยเป็นไปตามโมเดลเชิงสัมพันธ์ เนื่องจากไม่มีสคีมาหรือมีสคีมาแบบผ่อนคลาย
  • ฐานข้อมูล NoSQL สี่ประเภทคือ 1) ตามคู่คีย์-ค่า 2) กราฟเชิงคอลัมน์ 3) ตามกราฟ 4) เน้นเอกสาร
  • NOSQL สามารถจัดการข้อมูลที่มีโครงสร้าง กึ่งมีโครงสร้าง และไม่มีโครงสร้างโดยให้ผลเท่าเทียมกัน
  • ทฤษฎีบท CAP ประกอบด้วยคำสามคำคือ Consistency, Availability และ Partition Tolerance
  • BASE ย่อมาจาก Bอนิจจา Aพร้อมใช้งาน Sมักจะรัฐ Eความสม่ำเสมอของช่องลม
  • คำว่า “ความสอดคล้องในที่สุด” หมายถึงการมีสำเนาข้อมูลบนเครื่องหลายเครื่องเพื่อให้มีความพร้อมใช้งานและความสามารถในการปรับขนาดสูง
  • NOSQL เสนอความสามารถในการสืบค้นที่จำกัด