NoSQL คืออะไร
ฐานข้อมูลที่ไม่ใช่เชิงสัมพันธ์ประสิทธิภาพสูงที่มีโมเดลข้อมูลที่ยืดหยุ่น
ฐานข้อมูล NoSQL คืออะไร
ฐานข้อมูล NoSQL สร้างตามวัตถุประสงค์สำหรับโมเดลข้อมูลแบบเฉพาะเจาะจงและมีแบบแผนที่ยืดหยุ่นสำหรับการสร้างแอปพลิเคชันอันทันสมัย ฐานข้อมูล NoSQL เป็นที่รู้จักกันดีในด้านความง่ายในการพัฒนา การทำงาน และประสิทธิภาพตามขนาดที่ต้องการ ฐานข้อมูลประเภทนี้ใช้โมเดลข้อมูลรูปแบบต่างๆ รวมถึงเอกสาร กราฟ คีย์-ค่า ภายในหน่วยความจำ และการค้นหา หน้านี้ประกอบด้วยทรัพยากรเพื่อช่วยให้คุณเข้าใจฐานข้อมูล NoSQL และเพื่อเริ่มต้นใช้งาน
หลายสิบปีที่ผ่านมา โมเดลข้อมูลที่ใช้งานกันส่วนใหญ่สำหรับการพัฒนาแอปพลิเคชันคือโมเดลข้อมูลเชิงสัมพันธ์ที่ใช้โดยฐานข้อมูลเชิงสัมพันธ์ เช่น Oracle, DB2, SQL Server, MySQL และ PostgreSQL จนกระทั่งช่วงกลางถึงปลายปี 2000 จึงได้เริ่มมีการปรับใช้และใช้งานโมเดลข้อมูลแบบต่างๆ กันมากขึ้น หากต้องการแยกแยะและจัดหมวดหมู่คลาสใหม่ของฐานข้อมูลและโมเดลข้อมูล ให้ใช้คำว่า “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
เอกสาร:Developer บางคนไม่ได้มองโมเดลข้อมูลแบบแถวและคอลัมน์แบบไม่มาตรฐาน โดยทั่วไป ในระดับแอปพลิเคชัน ข้อมูลจะถูกแสดงเป็นเอกสาร JSON เพราะเข้าใจได้ง่ายกว่าสำหรับ Developer เมื่อต้องคิดโมเดลข้อมูลในรูปแบบเอกสาร ความนิยมของฐานข้อมูลแบบเอกสารเพิ่มมากขึ้นเรื่อยๆ เพราะ Developer สามารถค้างข้อมูลไว้ในฐานข้อมูลโดยใช้รูปแบบโมเดลเอกสารเดียวกันที่ใช้ในโค้ดแอปพลิเคชัน DynamoDB และ MongoDB คือฐานข้อมูลแบบเอกสารยอดนิยมที่มี API อันทรงพลังและใช้งานง่ายสำหรับการพัฒนาที่ยืดหยุ่นและคล่องตัว
กราฟ: วัตถุประสงค์ของฐานข้อมูลแบบกราฟคือเพื่อให้การสร้างและรันแอปพลิเคชันที่ทำงานกับชุดข้อมูลที่เชื่อมต่ออย่างดีเยี่ยมเกิดขึ้นได้อย่างง่ายดาย กรณีใช้งานโดยทั่วไปสำหรับฐานข้อมูลแบบกราฟรวมถึงเครือข่ายทางสังคม กลไกข้อเสนอแนะ การตรวจจับการปลอมแปลง และกราฟความรู้ Amazon Neptune คือบริการฐานข้อมูลแบบกราฟที่ได้รับการจัดการอย่างเต็มรูปแบบ Neptune รองรับทั้งโมเดล Property Graph และ Resource Description Framework (RDF) และมอบตัวเลือก API แบบกราฟสองรายการนั่นก็คือ TinkerPop และ RDF/SPARQL ฐานข้อมูลแบบกราฟยอดนิยมรวมถึง Neo4j และ Giraph
ภายในหน่วยความจำ: แอปพลิเคชันสำหรับเกมและเทคโนโลยีโฆษณามีกรณีใช้งาน เช่น บอร์ดผู้นำ การจัดเก็บเซสชัน และการวิเคราะห์แบบใกล้เคียงเวลาจริงที่จำเป็นต้องใช้เวลาในการตอบสนองเป็นมิลลิวินาทีและมีปริมาณการใช้งานขนาดใหญ่ในการรับส่งข้อมูลที่อาจเกิดขึ้นได้ตลอดเวลา Amazon ElastiCache เสนอ Memcached และ Redis เพื่อใช้กับปริมาณงานที่มีเวลาแฝงต่ำและปริมาณการประมวลผลสูง เช่น McDonald’s ซึ่งไม่สามารถใช้การจัดเก็บข้อมูลแบบดิสก์ได้ Amazon DynamoDB Accelerator (DAX) เป็นอีกหนึ่งตัวอย่างของการจัดเก็บข้อมูลที่สร้างตามวัตถุประสงค์ DAX ทำให้ DynamoDB อ่านลำดับของขนาดได้เร็วขึ้น
การค้นหา: แอปพลิเคชันจำนวนมากส่งออกข้อมูลบันทึกเพื่อช่วย Developer แก้ปัญหา Amazon Elasticsearch Service (Amazon ES) สร้างตามวัตถุประสงค์เพื่อมอบการแสดงภาพแบบใกล้เคียงเวลาจริงและการวิเคราะห์ข้อมูลที่สร้างโดยเครื่องโดยการทำดัชนี การรวบรวม และการค้นหาบันทึกและตัววัดแบบกึ่งมีโครงสร้าง นอกจากนี้ Amazon ES ยังเป็นเครื่องมือค้นหาอันทรงพลังและประสิทธิภาพสูงสำหรับกรณีใช้งานการค้นหาข้อความเต็ม Expedia ใช้โดเมน Amazon ES กว่า 150 โดเมน ข้อมูลขนาด 30 TB และเอกสารกว่า 30 พันล้านฉบับสำหรับกรณีใช้งานภารกิจสำคัญๆ ตั้งแต่การตรวจสอบการปฏิบัติงานและการแก้ปัญหาไปจนถึงการติดตามชุดแอปพลิเคชันแบบกระจายและการปรับปรุงประสิทธิภาพด้านราคา
ฐานข้อมูล SQL (เชิงสัมพันธ์) กับ NoSQL (ไม่ใช่เชิงสัมพันธ์)
แม้ว่าฐานข้อมูล NoSQL จะมีหลายประเภทและมีคุณสมบัติที่แตกต่างกันไป ตารางต่อไปนี้จะแสดงความแตกต่างระหว่างฐานข้อมูล SQL กับ NoSQL
| ระบบฐานข้อมูลเชิงสัมพันธ์ | ฐานข้อมูล NoSQL | |
|---|---|---|
ปริมาณงานที่ดีที่สุด |
ฐานข้อมูลเชิงสัมพันธ์ถูกออกแบบมาเพื่อการทำธุรกรรมและแอปพลิเคชันประมวลผลการทำธุรกรรมออนไลน์ที่มีความสม่ำเสมอมาก (OLTP) และใช้งานได้ดีสำหรับการประมวลผลแบบวิเคราะห์ออนไลน์ (OLAP) | ฐานข้อมูล NoSQL แบบคีย์-ค่า เอกสาร กราฟ และภายในหน่วยความจำถูกออกแบบมาเพื่อ OLTP สำหรับรูปแบบการเข้าถึงข้อมูลจำนวนหนึ่งซึ่งรวมถึงแอปพลิเคชันที่มีเวลาแฝงต่ำ ฐานข้อมูลการค้นหา 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