ความหมายของ MongoDB? Archiเทคเจอร์ คุณสมบัติ และตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
MongoDB เป็นฐานข้อมูล NoSQL ที่เน้นเอกสาร ใช้สำหรับการจัดเก็บข้อมูลปริมาณมาก โดยใช้คอลเลกชันและเอกสารแทนตารางและแถว แหล่งข้อมูลนี้จะอธิบายเกี่ยวกับ... MongoDB คุณสมบัติ ตัวอย่างเอกสาร ส่วนประกอบสถาปัตยกรรมหลัก เหตุผลในการใช้งาน การสร้างแบบจำลองข้อมูล และความแตกต่างจากฐานข้อมูลเชิงสัมพันธ์

ความหมายของ MongoDB?
MongoDB เป็นฐานข้อมูล NoSQL เชิงเอกสารที่ใช้สำหรับการจัดเก็บข้อมูลปริมาณมาก แทนที่จะใช้ตารางและแถวเหมือนในฐานข้อมูลเชิงสัมพันธ์แบบดั้งเดิม MongoDB ใช้คอลเลกชันและเอกสาร เอกสารประกอบด้วยคู่คีย์-ค่าซึ่งเป็นหน่วยพื้นฐานของข้อมูล MongoDBคอลเลกชันประกอบด้วยชุดของเอกสารและฟังก์ชัน ซึ่งเทียบเท่ากับตารางในฐานข้อมูลเชิงสัมพันธ์ MongoDB เป็นฐานข้อมูลที่เริ่มเป็นที่รู้จักในช่วงกลางทศวรรษ 2000
MongoDB คุณสมบัติ
- ฐานข้อมูลแต่ละฐานประกอบด้วยชุดข้อมูล ซึ่งแต่ละชุดข้อมูลประกอบด้วยเอกสาร เอกสารแต่ละฉบับอาจแตกต่างกันไป โดยมีจำนวนฟิลด์ไม่เท่ากัน ขนาดและเนื้อหาของแต่ละเอกสารก็อาจแตกต่างกันได้เช่นกัน
- โครงสร้างเอกสารสอดคล้องกับวิธีที่นักพัฒนาสร้างคลาสและอ็อบเจ็กต์ในภาษาการเขียนโปรแกรมของตนมากขึ้น นักพัฒนามักจะบอกว่าคลาสของพวกเขาไม่ใช่แถวและคอลัมน์ แต่มีโครงสร้างที่ชัดเจนพร้อมคู่คีย์-ค่า
- แถว (หรือเอกสารตามที่เรียกเข้ามา) MongoDBไม่จำเป็นต้องกำหนดโครงสร้างข้อมูล (schema) ไว้ล่วงหน้า สามารถสร้างฟิลด์ขึ้นมาได้ทันที
- โมเดลข้อมูลที่มีอยู่ภายใน MongoDB ช่วยให้คุณสามารถแสดงความสัมพันธ์แบบลำดับชั้น จัดเก็บอาร์เรย์ และจัดเก็บโครงสร้างที่ซับซ้อนอื่นๆ ได้ง่ายขึ้น
- scalability - MongoDB สภาพแวดล้อมเหล่านี้สามารถปรับขนาดได้อย่างมาก บริษัทต่างๆ ทั่วโลกได้กำหนดคลัสเตอร์ โดยบางแห่งมีโหนดมากกว่า 100 โหนด และมีเอกสารนับล้านฉบับอยู่ในฐานข้อมูล
MongoDB ตัวอย่าง
ตัวอย่างด้านล่างแสดงวิธีการสร้างโมเดลเอกสาร MongoDB.
- ฟิลด์ _id ถูกเพิ่มโดย MongoDB เพื่อระบุเอกสารในคอลเลกชันโดยไม่ซ้ำกัน
- สิ่งที่สังเกตได้คือ ข้อมูลคำสั่งซื้อ (OrderID, Product และ Quantity) ซึ่งโดยปกติในระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) จะถูกจัดเก็บไว้ในตารางแยกต่างหากนั้น แท้จริงแล้วถูกจัดเก็บเป็นเอกสารฝังตัวอยู่ในคอลเลกชันเอง MongoDBนี่คือหนึ่งในความแตกต่างที่สำคัญในวิธีการสร้างแบบจำลองข้อมูล MongoDB.
ส่วนประกอบสำคัญของ MongoDB Archiเทคเจอร์
ด้านล่างนี้เป็นคำศัพท์ทั่วไปบางส่วนที่ใช้ใน MongoDB:
- _NS – นี่เป็นฟิลด์ที่จำเป็นในทุก ๆ MongoDB เอกสาร. ช่อง _id แสดงถึงค่าที่ไม่ซ้ำใน MongoDB เอกสาร. ช่อง _id เหมือนกับคีย์หลักของเอกสาร หากคุณสร้างเอกสารใหม่โดยไม่มีฟิลด์ _id MongoDB ระบบจะสร้างฟิลด์นั้นโดยอัตโนมัติ ตัวอย่างเช่น หากเราดูตัวอย่างตารางลูกค้าด้านบน MongoDB จะเพิ่มรหัสเฉพาะ 24 หลักให้กับเอกสารแต่ละฉบับในชุดเอกสารนั้น
| _รหัส | รหัสลูกค้า | ชื่อลูกค้า | รหัสคำสั่งซื้อ |
|---|---|---|---|
| 563479cc8a8a4246bd27d784 | 11 | Guru99 | 111 |
| 563479cc7a8a4246bd47d784 | 22 | เทรเวอร์สมิ ธ | 222 |
| 563479cc9a8a4246bd57d784 | 33 | นิโคล | 333 |
- ชุด – นี่คือกลุ่มping of MongoDB เอกสาร คอลเลกชันเทียบเท่ากับตารางที่สร้างขึ้นในระบบจัดการฐานข้อมูลเชิงสัมพันธ์อื่นๆ เช่น Oracle หรือ MS SQL คอลเลกชันจะอยู่ภายในฐานข้อมูลเดียว ดังที่ได้กล่าวไว้ในบทนำ คอลเลกชันไม่ได้บังคับใช้โครงสร้างใดๆ
- เคอร์เซอร์ – นี่คือตัวชี้ไปยังชุดผลลัพธ์ของแบบสอบถาม ลูกค้าสามารถวนซ้ำผ่านเคอร์เซอร์เพื่อดึงผลลัพธ์
- ฐานข้อมูล – นี่คือคอนเทนเนอร์สำหรับรวบรวมข้อมูล เหมือนกับในระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) ที่เป็นคอนเทนเนอร์สำหรับตาราง แต่ละฐานข้อมูลจะมีชุดไฟล์ของตัวเองบนระบบไฟล์ MongoDB เซิร์ฟเวอร์สามารถจัดเก็บฐานข้อมูลได้หลายฐานข้อมูล
- เอกสาร – บันทึกใน MongoDB โดยพื้นฐานแล้วคอลเลกชันเรียกว่าเอกสาร เอกสารนั้นจะประกอบด้วยชื่อฟิลด์และค่าต่างๆ
- สนาม – คู่ชื่อ-ค่าในเอกสาร เอกสารมีฟิลด์ตั้งแต่ศูนย์ฟิลด์ขึ้นไป ฟิลด์เปรียบเสมือนคอลัมน์ในฐานข้อมูลเชิงสัมพันธ์ แผนภาพต่อไปนี้แสดงตัวอย่างฟิลด์ที่มีคู่คีย์-ค่า ดังนั้นในตัวอย่างด้านล่าง CustomerID และ 11 คือหนึ่งในคู่คีย์-ค่าที่กำหนดไว้ในเอกสาร
- JSON - สิ่งนี้เรียกว่า Javaต้นฉบับ รูปแบบออบเจ็กต์ เป็นรูปแบบข้อความธรรมดาที่มนุษย์สามารถอ่านได้เพื่อใช้แสดงข้อมูลที่มีโครงสร้าง ปัจจุบัน JSON ได้รับการสนับสนุนในภาษาการเขียนโปรแกรมหลายภาษา
ข้อมูลสั้นๆ เกี่ยวกับความแตกต่างที่สำคัญระหว่างฟิลด์ _id และฟิลด์การรวบรวมปกติ ช่อง _id ใช้เพื่อระบุเอกสารในคอลเลกชันโดยไม่ซ้ำกัน และจะถูกเพิ่มโดยอัตโนมัติโดย MongoDB เมื่อมีการสร้างคอลเลกชัน
ทำไมต้องใช้ MongoDB?
ต่อไปนี้คือเหตุผลบางประการว่าทำไมจึงควรเริ่มใช้ MongoDB:
- เน้นเอกสาร - ตั้งแต่ MongoDB คือ NoSQL ฐานข้อมูลประเภทแทนที่จะมีข้อมูลในรูปแบบประเภทเชิงสัมพันธ์จะเก็บข้อมูลไว้ในเอกสาร สิ่งนี้ทำให้ MongoDB มีความยืดหยุ่นและปรับตัวได้ดีมาก เพื่อให้เข้ากับสถานการณ์และความต้องการในโลกธุรกิจจริง
- แบบสอบถามเฉพาะกิจ - MongoDB รองรับการค้นหาตามฟิลด์ การค้นหาช่วง และการค้นหานิพจน์ทั่วไป สามารถทำการสอบถามเพื่อส่งคืนฟิลด์เฉพาะภายในเอกสารได้
- การจัดทำดัชนี – สามารถสร้างดัชนีเพื่อปรับปรุงประสิทธิภาพการค้นหาภายในได้ MongoDB- สนามใดก็ได้ใน MongoDB สามารถจัดทำดัชนีเอกสารได้
- การทำซ้ำ - MongoDB สามารถให้ความพร้อมใช้งานสูงด้วยชุดจำลอง (replica sets) ชุดจำลองประกอบด้วยอุปกรณ์สองตัวขึ้นไป MongoDB ในแต่ละอินสแตนซ์ของชุดจำลอง (replica set) สมาชิกแต่ละตัวสามารถทำหน้าที่เป็นตัวจำลองหลักหรือตัวจำลองรองได้ตลอดเวลา ตัวจำลองหลักคือเซิร์ฟเวอร์หลักที่โต้ตอบกับไคลเอ็นต์และดำเนินการอ่าน/เขียนข้อมูลทั้งหมด ตัวจำลองรองจะเก็บสำเนาข้อมูลของตัวจำลองหลักโดยใช้การจำลองแบบในตัว เมื่อตัวจำลองหลักล้มเหลว ชุดจำลองจะสลับไปยังตัวจำลองรองโดยอัตโนมัติ และจากนั้นตัวจำลองรองจะกลายเป็นเซิร์ฟเวอร์หลัก
- โหลดบาลานซ์ - MongoDB ใช้แนวคิดการแบ่งส่วนเพื่อปรับขนาดในแนวนอนโดยการแบ่งข้อมูลออกเป็นหลาย ๆ ส่วน MongoDB ตัวอย่าง. MongoDB สามารถทำงานบนเซิร์ฟเวอร์หลายเครื่อง ปรับสมดุลโหลดและ/หรือทำซ้ำข้อมูล เพื่อให้ระบบยังคงทำงานอยู่ในกรณีที่ฮาร์ดแวร์ขัดข้อง
การสร้างแบบจำลองข้อมูลใน MongoDB
ดังที่เราได้เห็นจากส่วนบทนำ ข้อมูลใน MongoDB มีสคีมาที่ยืดหยุ่น ไม่เหมือนใน SQL ฐานข้อมูลที่คุณต้องมีการประกาศสคีมาของตารางก่อนที่จะแทรกข้อมูล MongoDBคอลเลกชันของไม่ได้บังคับใช้โครงสร้างเอกสาร ความยืดหยุ่นแบบนี้คือสิ่งที่ทำให้ MongoDB มีพลังมาก
เมื่อสร้างแบบจำลองข้อมูลใน MongoDBโปรดคำนึงถึงสิ่งต่อไปนี้:
- แอปพลิเคชันนี้ต้องการอะไรบ้าง – พิจารณาความต้องการทางธุรกิจของแอปพลิเคชัน และดูว่าข้อมูลประเภทใดและอะไรบ้างที่แอปพลิเคชันต้องการ จากนั้นจึงกำหนดโครงสร้างของเอกสารให้เหมาะสม
- รูปแบบการดึงข้อมูลคืออะไร – หากคุณคาดการณ์ว่าจะมีการใช้งานคิวรีจำนวนมาก ควรพิจารณาใช้ดัชนีในแบบจำลองข้อมูลของคุณเพื่อเพิ่มประสิทธิภาพในการค้นหาข้อมูล
- มีการเพิ่ม แก้ไข และลบข้อมูลในฐานข้อมูลบ่อยครั้งหรือไม่? พิจารณาการใช้ดัชนีอีกครั้ง หรือหากจำเป็น ให้รวมการแบ่งส่วนข้อมูล (sharding) เข้าไว้ในการออกแบบโมเดลข้อมูลของคุณ เพื่อปรับปรุงประสิทธิภาพโดยรวม MongoDB สิ่งแวดล้อม
ความแตกต่างระหว่าง MongoDB & RDBMS
ด้านล่างนี้คือความแตกต่างที่สำคัญบางประการระหว่าง MongoDB และระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS):
| อาร์ดีบีเอ็มเอส | MongoDB | ความแตกต่าง |
|---|---|---|
| ตาราง | ชุด | In อาร์ดีบีเอ็มเอสตารางประกอบด้วยคอลัมน์และแถวซึ่งใช้ในการจัดเก็บข้อมูล ในขณะที่ใน MongoDB โครงสร้างแบบเดียวกันนี้เรียกว่าคอลเลกชัน คอลเลกชันประกอบด้วยเอกสาร ซึ่งเอกสารเหล่านั้นประกอบด้วยฟิลด์ และฟิลด์เหล่านั้นก็เป็นคู่คีย์-ค่า |
| แถว | เอกสาร | ใน RDBMS แถวแสดงรายการข้อมูลที่มีโครงสร้างโดยนัยรายการเดียวในตาราง ใน MongoDBข้อมูลจะถูกจัดเก็บไว้ในเอกสาร |
| คอลัมน์ | สนาม | ใน RDBMS คอลัมน์แสดงถึงชุดของค่าข้อมูล เหล่านี้เข้า MongoDB เรียกกันว่าทุ่งนา |
| ร่วม | เอกสารที่ฝัง | ในระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) ข้อมูลบางครั้งอาจกระจายอยู่ตามตารางต่างๆ และเพื่อให้แสดงข้อมูลทั้งหมดได้อย่างครบถ้วน บางครั้งจึงจำเป็นต้องมีการเชื่อมต่อตาราง (join) เพื่อดึงข้อมูลทั้งหมดมาแสดง MongoDBโดยปกติแล้ว ข้อมูลจะถูกจัดเก็บไว้ในชุดข้อมูลเดียว แต่แยกออกจากกันโดยใช้เอกสารฝังตัว ดังนั้นจึงไม่มีแนวคิดเรื่องการเชื่อมต่อ (joins) ในกรณีนี้ MongoDB. |
นอกเหนือจากความแตกต่างในด้านคำศัพท์แล้ว ยังมีความแตกต่างอื่นๆ อีกเล็กน้อยดังแสดงด้านล่าง:
- ฐานข้อมูลเชิงสัมพันธ์เป็นที่รู้จักในการบังคับใช้ความสมบูรณ์ของข้อมูล นี่ไม่ใช่ข้อกำหนดที่ชัดเจนใน MongoDB.
- RDBMS ต้องการให้ข้อมูลนั้นเป็น ปกติ ประการแรก เพื่อป้องกันข้อมูลที่ไม่มีเจ้าของและข้อมูลซ้ำซ้อน การทำให้ข้อมูลเป็นมาตรฐานนั้นจำเป็นต้องใช้ตารางเพิ่มเติม ซึ่งจะส่งผลให้มีการเชื่อมตารางมากขึ้น จึงต้องใช้คีย์และดัชนีมากขึ้น เมื่อฐานข้อมูลเริ่มมีขนาดใหญ่ขึ้น ประสิทธิภาพอาจเริ่มเป็นปัญหา อีกครั้ง นี่ไม่ใช่ข้อกำหนดที่ระบุไว้อย่างชัดเจนใน MongoDB. MongoDB มีความยืดหยุ่นและไม่จำเป็นต้องทำให้ข้อมูลเป็นมาตรฐานก่อน


