MongoDB Sharding: การสอนทีละขั้นตอนพร้อมตัวอย่าง

Sharding คืออะไร MongoDB?

Sharding เป็นแนวคิดใน MongoDBซึ่งแบ่งชุดข้อมูลขนาดใหญ่ออกเป็นชุดข้อมูลขนาดเล็กออกเป็นหลายชุด MongoDB ตัวอย่าง.

บางครั้งข้อมูลภายใน MongoDB จะมีขนาดใหญ่มากจนการสืบค้นชุดข้อมูลขนาดใหญ่ดังกล่าวอาจทำให้เกิดการใช้งาน CPU จำนวนมากบนเซิร์ฟเวอร์ เพื่อจัดการกับสถานการณ์นี้ MongoDB มีแนวคิดเรื่อง Sharding ซึ่งโดยพื้นฐานแล้วคือการแบ่งชุดข้อมูลออกเป็นหลาย ๆ ชุด MongoDB ตัวอย่าง.

คอลเลกชันที่อาจมีขนาดใหญ่จะถูกแบ่งออกเป็นหลายคอลเลกชันหรือ Shards ตามที่เรียกกัน ตามหลักเหตุผลแล้ว ชิ้นส่วนทั้งหมดทำงานเป็นคอลเลกชันเดียว

วิธีการใช้ Sharding

ชาร์ดถูกนำมาใช้โดยใช้คลัสเตอร์ซึ่งไม่มีอะไรนอกจากกลุ่มของ MongoDB ตัวอย่าง.

ส่วนประกอบของ Shard ได้แก่

  1. เศษ – นี่คือสิ่งพื้นฐาน และนี่ไม่ใช่อะไรนอกจากก MongoDB อินสแตนซ์ที่เก็บชุดย่อยของข้อมูล ในสภาพแวดล้อมการใช้งานจริง ชิ้นส่วนทั้งหมดจะต้องเป็นส่วนหนึ่งของชุดการจำลอง
  2. กำหนดค่าเซิร์ฟเวอร์ – นี่คืออินสแตนซ์ MongoDB ที่เก็บข้อมูลเมตาเกี่ยวกับคลัสเตอร์ โดยพื้นฐานแล้วคือข้อมูลเกี่ยวกับอินสแตนซ์ MongoDB ต่างๆ ที่จะเก็บข้อมูลชาร์ด
  3. เราเตอร์ – นี่คืออินสแตนซ์ MongoDB ซึ่งโดยพื้นฐานแล้วรับผิดชอบในการเปลี่ยนเส้นทางคำสั่งที่ส่งโดยไคลเอนต์ไปยังเซิร์ฟเวอร์ที่ถูกต้อง

การแบ่งส่วนทีละขั้นตอน Cluster ตัวอย่าง

ขั้นตอน 1) สร้างฐานข้อมูลแยกต่างหากสำหรับเซิร์ฟเวอร์การกำหนดค่า

mkdir /data/configdb

ขั้นตอน 2) เริ่มอินสแตนซ์ MongoDB ในโหมดการกำหนดค่า สมมติว่าเรามีเซิร์ฟเวอร์ชื่อ Server D ซึ่งจะเป็นเซิร์ฟเวอร์การกำหนดค่าของเรา เราจะต้องเรียกใช้คำสั่งด้านล่างเพื่อกำหนดค่าเซิร์ฟเวอร์เป็นเซิร์ฟเวอร์การกำหนดค่า

mongod –configdb ServerD: 27019

ขั้นตอน 3) เริ่มต้นอินสแตนซ์ mongos โดยการระบุเซิร์ฟเวอร์การกำหนดค่า

mongos –configdb ServerD: 27019

ขั้นตอน 4) จาก mongo shell ให้เชื่อมต่อกับอินสแตนซ์ของ mongo

mongo –host ServerD –port 27017

ขั้นตอน 5) หากคุณมีเซิร์ฟเวอร์ A และเซิร์ฟเวอร์ B ที่จำเป็นต้องเพิ่มเข้าในคลัสเตอร์ ให้ใช้คำสั่งด้านล่าง

sh.addShard("ServerA:27017")
sh.addShard("ServerB:27017")

ขั้นตอน 6) เปิดใช้งานการแบ่งส่วนสำหรับฐานข้อมูล ดังนั้นหากเราจำเป็นต้องแบ่งฐานข้อมูล Employeedb ให้ออกคำสั่งด้านล่าง

sh.enableSharding(Employeedb)

ขั้นตอน 7) เปิดใช้งานการแบ่งส่วนสำหรับคอลเลกชัน ดังนั้นหากเราจำเป็นต้องแบ่งกลุ่มคอลเลกชัน Employee ให้ออกคำสั่งด้านล่าง

Sh.shardCollection("db.Employee" , { "Employeeid" : 1 , "EmployeeName" : 1})

สรุป:

  • ตามที่อธิบายไว้ใน เกี่ยวกับการสอน, Sharding เป็นแนวคิดค่ะ MongoDBซึ่งแบ่งชุดข้อมูลขนาดใหญ่ออกเป็นชุดข้อมูลขนาดเล็กออกเป็นหลายชุด MongoDB ตัวอย่าง.