NoSQL คืออะไร
ฐานข้อมูลที่ไม่ใช่เชิงสัมพันธ์ประสิทธิภาพสูงที่มีโมเดลข้อมูลที่ยืดหยุ่น
ฐานข้อมูล NoSQL คืออะไร
ฐานข้อมูล NoSQL สร้างตามวัตถุประสงค์สำหรับโมเดลข้อมูลแบบเฉพาะเจาะจงและมีแบบแผนที่ยืดหยุ่นสำหรับการสร้างแอปพลิเคชันอันทันสมัย ฐานข้อมูล NoSQL เป็นที่รู้จักกันดีในด้านความง่ายในการพัฒนา การทำงาน และประสิทธิภาพตามขนาดที่ต้องการ หน้านี้ประกอบด้วยทรัพยากรเพื่อช่วยให้คุณเข้าใจฐานข้อมูล NoSQL และเริ่มต้นใช้งาน
ฐานข้อมูล NoSQL (ไม่ใช่เชิงสัมพันธ์) ทำงานอย่างไร
ฐานข้อมูล NoSQL ใช้โมเดลข้อมูลที่หลากหลายสำหรับการเข้าถึงและจัดการข้อมูล ฐานข้อมูลประเภทนี้ได้รับการปรับปรุงประสิทธิภาพสำหรับแอปพลิเคชันที่ต้องใช้ข้อมูลปริมาณมาก มีเวลาแฝงต่ำ และมีโมเดลข้อมูลที่ยืดหยุ่นโดยเฉพาะ ซึ่งเกิดขึ้นโดยการผ่อนปรนข้อจำกัดความสม่ำเสมอข้อมูลของฐานข้อมูลอื่นๆ
ลองดูพิจารณาตัวอย่างการสร้างโมเดลแบบแผนสำหรับฐานข้อมูลหนังสือแบบไม่ซับซ้อน:
- ในฐานข้อมูลเชิงสัมพันธ์ บันทึกหนังสือมักถูกแยกออกจากกัน (หรือ “มาตรฐาน”) และจัดเก็บในตารางแยก ส่วนความสัมพันธ์จะถูกกำหนดโดยข้อจำกัดคีย์หลักและคีย์นอก ในตัวอย่างนี้ ตารางหนังสือมีคอลัมน์สำหรับ ISBN, ชื่อหนังสือ และครั้งที่พิมพ์ ตารางผู้เขียนมีคอลัมน์สำหรับรหัสผู้เขียนและชื่อผู้เขียน และสุดท้ายตาราง ISBN ของผู้เขียนมีคอลัมน์สำหรับรหัสผู้เขียนและ ISBN โมเดลเชิงสัมพันธ์ถูกออกแบบมาเพื่อทำให้ฐานข้อมูลสามารถบังคับใช้ความสมบูรณ์อ้างอิงระหว่างตารางต่างๆ ในฐานข้อมูล ปรับให้เป็นปกติเพื่อลดความซ้ำซ้อน และได้รับการปรับปรุงประสิทธิภาพสำหรับพื้นที่จัดเก็บอย่างทั่วถึง
- ในฐานข้อมูล NoSQL บันทึกหนังสือมักจะถูกจัดเก็บเป็นเอกสาร JSON สำหรับหนังสือแต่ละเล่ม รายการ, ISBN, ชื่อหนังสือ, ครั้งที่พิมพ์, ชื่อผู้เขียน และรหัสผู้เขียนจะถูกจัดเก็บเป็นคุณลักษณะในเอกสารเดียว ในโมเดลนี้ ข้อมูลได้รับการปรับปรุงประสิทธิภาพสำหรับการพัฒนาที่ง่ายและความสามารถในการปรับขนาดแนวนอน
ทำไมคุณจึงควรใช้ฐานข้อมูล NoSQL
ฐานข้อมูล NoSQL เหมาะมากสำหรับแอปพลิเคชันสมัยใหม่ เช่น อุปกรณ์เคลื่อนที่ เว็บ และเกมที่จำเป็นต้องมีฐานข้อมูลที่ยืดหยุ่น ปรับขนาดได้ ประสิทธิภาพสูง และทำงานได้ดีเยี่ยมเพื่อมอบประสบการณ์ผู้ใช้ที่ยอดเยี่ยม
- ความยืดหยุ่น: โดยทั่วไป ฐานข้อมูล NoSQL จะมีแบบแผนยืดหยุ่นที่ทำให้การพัฒนาเกิดขึ้นเร็วและทำซ้ำคำสั่งได้ดียิ่งขึ้นกว่าเดิม โมเดลข้อมูลที่ยืดหยุ่นทำให้ฐานข้อมูล NoSQL เหมาะสมที่สุดสำหรับข้อมูลแบบกึ่งมีโครงสร้างและไม่มีโครงสร้าง
- ความสามารถในการปรับขนาด: โดยทั่วไป ฐานข้อมูล NoSQL มักถูกออกแบบมาให้ปรับขนาดออกได้โดยใช้คลัสเตอร์แบบกระจายของฮาร์ดแวร์แทนการปรับขนาดขึ้นโดยเพิ่มเซิร์ฟเวอร์ที่มีราคาแพงและมีประสิทธิภาพสูง ผู้ให้บริการระบบคลาวด์บางเจ้าจัดการปฏิบัติการนี้อยู่เบื้องหลังในแบบบริการที่มีการจัดการเต็มรูปแบบ
- ประสิทธิภาพสูง: ฐานข้อมูล NoSQL ได้รับการปรับปรุงประสิทธิภาพสำหรับโมเดลข้อมูลบางโมเดล และเข้าถึงรูปแบบที่เปิดใช้งานประสิทธิภาพที่สูงกว่าการพยายามดำเนินการทำงานที่คล้ายกันด้วยฐานข้อมูลเชิงสัมพันธ์
- ทำงานได้ดีเยี่ยม: ฐานข้อมูล NoSQL มี API การทำงานและประเภทข้อมูลที่สร้างตามวัตถุประสงค์สำหรับโมเดลข้อมูลแต่ละโมเดลที่สอดคล้องกัน
ประเภทฐานข้อมูล NoSQL

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

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

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

ในหน่วยความจำ: แอปพลิเคชันสำหรับเกมและเทคโนโลยีโฆษณามีกรณีการใช้งาน เช่น บอร์ดผู้นำ การจัดเก็บเซสชัน และการวิเคราะห์แบบเรียลไทม์ที่จำเป็นต้องใช้เวลาในการตอบสนองเป็นมิลลิวินาที และอาจมีปริมาณการรับส่งข้อมูลที่เพิ่มขึ้นอย่างรวดเร็วเกิดขึ้นได้ตลอดเวลา Amazon MemoryDB for Redis เป็นบริการฐานข้อมูลในหน่วยความจำที่ทนทานและใช้งานได้ร่วมกับ Redis ซึ่งให้เวลาแฝงในการอ่านระดับไมโครวินาที เวลาแฝงในการเขียนระดับมิลลิวินาทีหลักเดียว และความทนทานแบบ Multi-AZ MemoryDB สร้างขึ้นตามวัตถุประสงค์เพื่อมอบประสิทธิภาพที่รวดเร็วเป็นพิเศษและความทนทาน เพื่อให้คุณสามารถใช้เป็นฐานข้อมูลหลักสำหรับแอปพลิเคชันไมโครเซอร์วิสสมัยใหม่ได้ Amazon ElastiCache เป็นบริการแคชในหน่วยความจำที่มีการจัดการเต็มรูปแบบซึ่งใช้งานได้ร่วมกับทั้ง Redis และ Memcached เพื่อให้บริการปริมาณงานที่มีเวลาแฝงต่ำและปริมาณการประมวลผลสูง ลูกค้ารายต่างๆ เช่น Tinder ซึ่งต้องการการตอบสนองแบบเรียลไทม์จากแอปพลิเคชันของตน พึ่งพาการจัดเก็บข้อมูลในหน่วยความจำมากกว่าการจัดเก็บข้อมูลบนดิสก์ Amazon DynamoDB Accelerator (DAX) เป็นอีกหนึ่งตัวอย่างของการจัดเก็บข้อมูลที่สร้างขึ้นตามวัตถุประสงค์ DAX ทำให้ DynamoDB อ่านอันดับของขนาดได้เร็วขึ้น

การค้นหา คือ แอปพลิเคชันจำนวนมากส่งออกข้อมูลบันทึกเพื่อช่วยนักพัฒนาแก้ปัญหา Amazon OpenSearch Service สร้างตามวัตถุประสงค์เพื่อมอบการแสดงภาพแบบใกล้เคียงเวลาจริงและการวิเคราะห์ข้อมูลที่สร้างโดยเครื่องโดยการทำดัชนี การรวบรวม และการค้นหาข้อมูลบันทึกและตัววัดแบบกึ่งมีโครงสร้าง Amazon OpenSearch Service ยังเป็นเครื่องมือค้นหาที่ทรงพลังและมีประสิทธิภาพสูงสำหรับกรณีการใช้งานในการค้นหาด้วยข้อความอย่างเต็มรูปแบบ Expedia ใช้โดเมน Amazon OpenSearch Service กว่า 150 โดเมน ข้อมูลขนาด 30 TB และเอกสารกว่า 3 หมื่นล้านฉบับสำหรับกรณีใช้งานภารกิจสำคัญๆ ตั้งแต่การตรวจสอบการปฏิบัติงานและการแก้ปัญหาไปจนถึงการติดตามชุดแอปพลิเคชันแบบกระจายและการปรับปรุงประสิทธิภาพด้านราคา
ฐานข้อมูล SQL (เชิงสัมพันธ์) กับ ฐานข้อมูล NoSQL (ไม่ใช่เชิงสัมพันธ์)
หลายสิบปีที่ผ่านมา โมเดลข้อมูลที่ใช้งานกันส่วนใหญ่สำหรับการพัฒนาแอปพลิเคชันคือโมเดลข้อมูลเชิงสัมพันธ์ที่ใช้โดยฐานข้อมูลเชิงสัมพันธ์ เช่น Oracle, DB2, SQL Server, MySQL และ PostgreSQL จนกระทั่งช่วงกลางถึงปลายปี 2000 จึงได้เริ่มมีการปรับใช้และใช้งานโมเดลข้อมูลแบบต่างๆ กันมากขึ้น หากต้องการแยกแยะและจัดหมวดหมู่คลาสใหม่ของฐานข้อมูลและโมเดลข้อมูล ให้ใช้คำว่า “NoSQL” คำว่า “NoSQL” มักใช้สลับกับ “ที่ไม่ใช่เชิงสัมพันธ์” ได้
แม้ว่าฐานข้อมูล NoSQL จะมีหลายประเภทและมีคุณสมบัติที่แตกต่างกันไป ตารางต่อไปนี้จะแสดงความแตกต่างระหว่างฐานข้อมูล SQL กับ NoSQL
ระบบฐานข้อมูลเชิงสัมพันธ์ | ฐานข้อมูล NoSQL | |
---|---|---|
ปริมาณงานที่ดีที่สุด |
ฐานข้อมูลเชิงสัมพันธ์ถูกออกแบบมาเพื่อการทำธุรกรรมและแอปพลิเคชันประมวลผลการทำธุรกรรมออนไลน์ที่มีความสม่ำเสมอมาก (OLTP) และใช้งานได้ดีสำหรับการประมวลผลแบบวิเคราะห์ออนไลน์ (OLAP) | ฐานข้อมูล NoSQL ออกแบบมาสำหรับรูปแบบการเข้าถึงข้อมูลจำนวนหนึ่งซึ่งรวมถึงแอปพลิเคชันที่มีเวลาแฝงต่ำ ฐานข้อมูลการค้นหา NoSQL ถออกแบบมาเพื่อการวิเคราะห์ข้อมูลแบบกึ่งมีโครงสร้าง |
โมเดลข้อมูล | โมเดลเชิงสัมพันธ์ปรับข้อมูลให้ดูง่ายในรูปแบบตารางซึ่งประกอบด้วยแถวและคอลัมน์ แบบแผนจะเป็นตัวกำหนดตาราง แถว คอลัมน์ ดัชนี ความสัมพันธ์ระหว่างตาราง และส่วนประกอบฐานข้อมูลอื่นๆ โดยแท้จริง ฐานข้อมูลบังคับใช้ความสมบูรณ์อ้างอิงในความสัมพันธ์ระหว่างตารางต่างๆ |
ฐานข้อมูล NoSQL มีโมเดลข้อมูลที่หลากหลายให้ เช่น ค่าหลัก เอกสาร และกราฟ ซึ่งปรับให้เหมาะกับประสิทธิภาพและขนาด |
ลักษณะ ACID | ฐานข้อมูลเชิงสัมพันธ์มีลักษณะ Atomicity, Consistency, Isolation และ Durability (ACID):
|
ฐานข้อมูล NoSQL จะทำการแลกเปลี่ยนโดยผ่อนคลายลักษณะ ACID บางรายการของฐานข้อมูลเชิงสัมพันธ์เพื่อโมเดลข้อมูลที่ยืดหยุ่นขึ้นที่สามารถปรับขนาดแนวนอนได้ นี่ทำให้ฐานข้อมูล NoSQL เป็นตัวเลือกที่ดีสำหรับกรณีใช้งานที่มีการประมวลผลสูงและเวลาแฝงต่ำที่ต้องปรับขนาดแนวนอนเกินขีดจำกัดของอินสแตนซ์เดี่ยว |
ประสิทธิภาพ | โดยทั่วไป ประสิทธิภาพขึ้นอยู่กับระบบย่อยของดิสก์ มักต้องมีการเพิ่มประสิทธิภาพในการสืบค้น ดัชนี และโครงสร้างตารางเพื่อให้ได้ประสิทธิภาพสูงสุด | โดยทั่วไป ประสิทธิภาพหมายถึงการทำงานของฮาร์ดแวร์พื้นฐานขนาดเท่าคลัสเตอร์ เวลาแฝงของเครือข่าย และการเรียกใช้แอปพลิเคชัน |
ขนาด | ฐานข้อมูลเชิงสัมพันธ์มักจะถูกปรับขนาดขึ้นโดยเพิ่มความสามารถในการประมวลผลของฮาร์ดแวร์หรือปรับขนาดออกโดยเพิ่มแบบจำลองสำหรับปริมาณงานแบบอ่านอย่างเดียว | โดยปกติแล้วฐานข้อมูล NoSQL จะสามารถแบ่งพาร์ติชันได้เพราะรูปแบบการเข้าถึงสามารถปรับขนาดออกได้โดยใช้สถาปัตยกรรมแบบกระจายเพื่อเพิ่มปริมาณการประมวลผลที่จะมอบประสิทธิภาพอย่างสม่ำเสมอในเกือบทุกขนาด |
API | คำขอจัดเก็บและเรียกดูข้อมูลจะมีการสื่อสารโดยใช้การสืบค้นที่สอดคล้องกับ Structured Query Language (SQL) การสืบค้นเหล่านี้จะถูกแยกวิเคราะห์และดำเนินการโดยฐานข้อมูลเชิงสัมพันธ์ | API เชิงวัตถุช่วยให้ App Developer สามารถจัดเก็บและเรียกโครงสร้างข้อมูลได้อย่างง่ายดาย คีย์พาร์ติชันช่วยแอปค้นหาคู่คีย์-ค่า ชุดคอลัมน์ หรือเอกสารแบบกึ่งมีโครงสร้างที่มีวัตถุและคุณลักษณะที่เป็นอนุกรม |
คำศัพท์ SQL กับ NoSQL
ตารางต่อไปนี้เปรียบเทียบคำศัพท์ที่ใช้โดยฐานข้อมูล NoSQL กับคำศัพท์ที่ใช้โดยฐานข้อมูล SQL ที่เลือก
SQL | MongoDB | DynamoDB | Cassandra | Couchbase |
---|---|---|---|---|
ตาราง | คอลเลกชัน | ตาราง | ตาราง | บัคเก็ตข้อมูล |
แถว | เอกสาร | รายการ | แถว | เอกสาร |
คอลัมน์ | ช่อง | คุณลักษณะ | คอลัมน์ | ช่อง |
คีย์หลัก | ObjectId | คีย์หลัก |
คีย์หลัก | รหัสเอกสาร |
ดัชนี | ดัชนี | ดัชนีรอง | ดัชนี | ดัชนี |
มุมมอง | มุมมอง | ดัชนีรองโดยรวม | มุมมองจริง | มุมมอง |
ตารางหรือวัตถุแบบซ้อนกัน | เอกสารแบบฝัง | แมป | แมป | แมป |
อาร์เรย์ | อาร์เรย์ | รายชื่อ | รายชื่อ | รายชื่อ |
รายชื่อ |
รายชื่อ |
คีย์หลัก |
เริ่มต้นใช้งาน DynamoDB
การเริ่มต้นใช้งาน DynamoDB เป็นเรื่องง่าย ดูหน้าเว็บการเริ่มต้นใช้งาน DynamoDB เพื่อสร้างตารางแรกของคุณโดยคลิกเพียงไม่กี่ครั้ง นอกจากนี้ คุณยังสามารถดาวน์โหลดรายงาน AWS เพื่อเรียนรู้แนวทางการปฏิบัติที่ดีที่สุดสำหรับการโยกย้ายปริมาณงานจากระบบการจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) ไปยัง DynamoDB