1.1 วิธีการทำงานของฐานข้อมูล NoSQL

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

พิจารณาตัวอย่างการสร้างแบบจำลองสคีมาสำหรับฐานข้อมูลหนังสืออย่างง่าย

  • ในฐานข้อมูลเชิงสัมพันธ์ รายการหนังสือมักจะถูกแบ่งออกเป็นหลายส่วน (หรือ "ทำให้เป็นมาตรฐาน") และจัดเก็บไว้ในตารางที่แยกจากกัน ซึ่งความสัมพันธ์ถูกกำหนดโดยข้อจำกัดของคีย์หลักและคีย์นอก ในตัวอย่างนี้ ตาราง หนังสือมี คอลัมน์ ISBN ชื่อหนังสือและ "ISBNและ"ผู้แต่ง"ISBN ผู้เขียนตารางและชื่อผู้แต่งและID ผู้แต่งคอลัมน์ผู้แต่งฉบับหมายเลข ". โมเดลเชิงสัมพันธ์ได้รับการออกแบบมาเพื่อรักษา Referential Integrity ระหว่างตารางในฐานข้อมูล ข้อมูลจะถูกทำให้เป็นมาตรฐานเพื่อลดความซ้ำซ้อนและโดยทั่วไปจะปรับให้เหมาะสมสำหรับการจัดเก็บ

  • ในฐานข้อมูล NoSQL โดยทั่วไป บันทึกหนังสือจะถูกจัดเก็บเป็นเอกสาร JSON สำหรับหนังสือหรือองค์ประกอบแต่ละเล่ม ค่าISBN , Book Title , Edition Number , Author Name ,และAuthor IDจะถูกจัดเก็บเป็นแอตทริบิวต์ในเอกสารเดียว ในโมเดลนี้ ข้อมูลได้รับการปรับให้เหมาะสมสำหรับการพัฒนาที่ใช้งานง่ายและความสามารถในการปรับขนาดในแนวนอน

1.2 ฐานข้อมูล NoSQL สามารถใช้ทำอะไรได้บ้าง

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

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

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

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

  • ฟังก์ชั่ นกว้าง ฐานข้อมูล NoSQL มี API และประเภทข้อมูลที่หลากหลายซึ่งได้รับการออกแบบมาโดยเฉพาะสำหรับโมเดลข้อมูลที่เกี่ยวข้อง

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

มีการใช้ฐานข้อมูล NoSQL ซึ่งไม่สะดวกในการจัดเก็บข้อมูลในรูปแบบของตาราง ดังนั้นจึงจัดเก็บไว้ในรูปแบบที่แตกต่างกันมาก โดยปกติแล้ว ฐานข้อมูล NoSQL จะมีประเภทข้อมูลหลักอยู่ 6 ประเภท

ฐานข้อมูลขึ้นอยู่กับคู่ของคีย์-ค่า

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

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

เอกสาร

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

โมเดลเอกสารทำงานได้ดีในแค็ตตาล็อก โปรไฟล์ผู้ใช้ และระบบการจัดการเนื้อหา ซึ่งเอกสารแต่ละฉบับจะไม่ซ้ำกันและเปลี่ยนแปลงตลอดเวลา Amazon DocumentDB (เข้ากันได้กับ MongoDB) และ MongoDB เป็นฐานข้อมูลเอกสารทั่วไปที่มี API ที่ใช้งานได้และใช้งานง่ายสำหรับการพัฒนาที่คล่องตัว

ฐานข้อมูลกราฟ

ฐานข้อมูลกราฟช่วยให้การพัฒนาและเรียกใช้แอปพลิเคชันที่ทำงานกับชุดข้อมูลที่ซับซ้อนทำได้ง่ายขึ้น ตัวอย่างทั่วไปของการใช้ฐานข้อมูลกราฟ ได้แก่ เครือข่ายสังคม บริการแนะนำ ระบบตรวจจับการฉ้อโกง และกราฟความรู้ Amazon Neptune เป็นบริการฐานข้อมูลกราฟที่มีการจัดการเต็มรูปแบบ Neptune รองรับ Property Graph และ Resource Description Framework (RDF) โดยมีกราฟ API สองแบบให้เลือก: TinkerPop และ RDF/SPARQL ฐานข้อมูลกราฟทั่วไป ได้แก่ Neo4j และ Giraph

ฐานข้อมูลในหน่วยความจำ

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

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

Amazon ElastiCache เป็นบริการแคชในหน่วยความจำที่เข้ากันได้กับ Redis และ Memcached ที่มีการจัดการเต็มรูปแบบ เพื่อรองรับปริมาณงานที่มีเวลาแฝงต่ำและปริมาณงานสูง ลูกค้าเช่น Tinder ที่ต้องการให้แอปตอบสนองแบบเรียลไทม์กำลังใช้ระบบในหน่วยความจำมากกว่าระบบจัดเก็บข้อมูลในดิสก์ อีกตัวอย่างหนึ่งของคลังข้อมูลที่สร้างขึ้นตามวัตถุประสงค์คือ Amazon DynamoDB Accelerator (DAX) DAX ช่วยให้ DynamoDB อ่านข้อมูลได้เร็วขึ้นหลายเท่า

ค้นหาฐานข้อมูล

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

นอกจากนี้ Amazon OpenSearch ยังเป็นบริการค้นหาข้อความแบบเต็มที่ทรงพลังและมีประสิทธิภาพสูง Expedia ใช้ประโยชน์จากโดเมนบริการ Amazon OpenSearch กว่า 150 โดเมน ข้อมูล 30 TB และเอกสาร 3 หมื่นล้านฉบับสำหรับกรณีการใช้งานที่สำคัญต่อภารกิจที่หลากหลาย

1.4 การเปรียบเทียบฐานข้อมูล SQL (เชิงสัมพันธ์) และ NoSQL (ไม่เชิงสัมพันธ์)

NoSQL มีข้อดีมากมาย ดังนั้นในทางทฤษฎีแล้ว คุณควรรู้ว่าเครื่องมือที่คุณต้องการมีอยู่แล้วก่อนที่จะเขียนมันด้วยตัวเอง ด้านล่างนี้ฉันจะให้การเปรียบเทียบฐานข้อมูล NoSQL และ SQL:

ปริมาณงานที่เหมาะสม

ฐานข้อมูลเชิงสัมพันธ์ได้รับการออกแบบมาสำหรับแอ็พพลิเคชันการประมวลผลธุรกรรมแบบเรียลไทม์ (OLTP) ที่มีความสม่ำเสมอสูงและเหมาะสำหรับการประมวลผลเชิงวิเคราะห์แบบเรียลไทม์ (OLAP)

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

โมเดลข้อมูล

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

ฐานข้อมูล NoSQL มีโมเดลข้อมูลที่หลากหลาย เช่น คู่คีย์-ค่า เอกสาร และกราฟที่ได้รับการปรับแต่งเพื่อประสิทธิภาพและความสามารถในการปรับขนาดสูง

คุณสมบัติของกรด

ฐานข้อมูลเชิงสัมพันธ์มีชุดของคุณสมบัติของกรด: อะตอมมิก ความสม่ำเสมอ การแยกตัว ความน่าเชื่อถือ

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

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

ผลงาน

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

โดยทั่วไปประสิทธิภาพจะขึ้นอยู่กับขนาดของคลัสเตอร์ฮาร์ดแวร์พื้นฐาน เวลาแฝงของเครือข่าย และแอปพลิเคชันการโทร

ขูดหินปูน

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

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

เอพีไอ

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

API เชิงวัตถุช่วยให้นักพัฒนาแอปพลิเคชันสามารถเขียนและเรียกใช้โครงสร้างข้อมูลได้อย่างง่ายดาย การใช้พาร์ติชันคีย์ แอปพลิเคชันสามารถค้นหาคู่คีย์-ค่า ชุดคอลัมน์ หรือเอกสารกึ่งโครงสร้างที่มีออบเจกต์อนุกรมและแอตทริบิวต์ของแอปพลิเคชัน