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