NoSQL คืออะไร

ฐานข้อมูลที่ไม่ใช่เชิงสัมพันธ์ประสิทธิภาพสูงที่มีโมเดลข้อมูลที่ยืดหยุ่น

ฐานข้อมูล NoSQL คืออะไร

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

หลายสิบปีที่ผ่านมา โมเดลข้อมูลที่ใช้งานกันส่วนใหญ่สำหรับการพัฒนาแอปพลิเคชันคือโมเดลข้อมูลเชิงสัมพันธ์ที่ใช้โดยฐานข้อมูลเชิงสัมพันธ์ เช่น Oracle, DB2, SQL Server, MySQL และ PostgreSQL จนกระทั่งช่วงกลางถึงปลายปี 2000 จึงได้เริ่มมีการปรับใช้และใช้งานโมเดลข้อมูลแบบต่างๆ กันมากขึ้น หากต้องการแยกแยะและจัดหมวดหมู่คลาสใหม่ของฐานข้อมูลและโมเดลข้อมูล ให้ใช้คำว่า “NoSQL” ส่วนใหญ่คำว่า “NoSQL” สามารถใช้สลับกันได้กับ “ที่ไม่ใช่เชิงสัมพันธ์”


มีอะไรใหม่ในฐานข้อมูล AWS ที่ไม่ใช่เชิงสัมพันธ์และสร้างตามวัตถุประสงค์

ฐานข้อมูล NoSQL (ไม่ใช่เชิงสัมพันธ์) ทำงานอย่างไร

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

ลองดูพิจารณาตัวอย่างการสร้างโมเดลแบบแผนสำหรับฐานข้อมูลหนังสือแบบไม่ซับซ้อน:

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

ทำไมคุณจึงควรใช้ฐานข้อมูล NoSQL

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

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

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

nosql_keyvalue_g

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

nosql_document_g

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

nosql_graph_g

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

nosql_inmemory_g

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

nosql_search_g

การค้นหา: แอปพลิเคชันจำนวนมากส่งออกข้อมูลบันทึกเพื่อช่วย 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):

  • Atomicity จำเป็นต้องใช้ธุรกรรมเพื่อดำเนินการโดยสมบูรณ์หรือไม่ดำเนินการเลย
  • Consistency จำเป็นต้องใช้เมื่อมีการทำธุรกรรมเกิดขึ้น โดยข้อมูลจะต้องเป็นไปตามแบบแผนฐานข้อมูล
  • Isolation จำเป็นต้องดำเนินการธุรกรรมที่เกิดขึ้นพร้อมกันแยกจากกันและกัน
  • Durability จำเป็นต้องมีความสามารถในการกู้คืนจากความล้มเหลวของระบบที่ไม่คาดคิดหรือไฟดับให้กลับเป็นสถานะล่าสุดที่ทราบ
ฐานข้อมูล 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

Amazon DynamoDB คืออะไร