MongoDB ชิ้น
ชิ้น
มีอีกกลุ่มคือ MongoDB ภายในเทคโนโลยีหั่นเป็นจำนวนมากของข้อมูลที่จะตอบสนองความต้องการที่เพิ่มขึ้นสำหรับ MongoDB
เมื่อ MongoDB ในการจัดเก็บข้อมูลจำนวนมหาศาลที่เครื่องอาจจะไม่เพียงพอที่จะเก็บข้อมูลอาจจะไม่เพียงพอที่จะให้เป็นที่ยอมรับในการอ่านและเขียนผ่าน ณ จุดนี้เราสามารถแยกข้อมูลบนเครื่องหลายเพื่อให้ระบบฐานข้อมูลสามารถจัดเก็บและประมวลผลข้อมูลได้มากขึ้น
ทำไมชิ้น
- คัดลอกทั้งหมดเขียนงานไปยังโหนดหลัก
- ชะลอการข้อมูลที่สำคัญในการค้นหาต้นแบบ
- ชุดสำเนาเดียวถูก จำกัด ไว้ที่ 12 โหนด
- เมื่อปริมาณมากของการร้องขอจะปรากฏขึ้นเมื่อหน่วยความจำ
- ปัญหาการขาดแคลนดิสก์ท้องถิ่น
- การขยายตัวในแนวตั้งที่มีราคาแพง
MongoDB ชิ้น
รูปต่อไปนี้แสดงให้เห็นถึงการใช้งานของโครงสร้างคลัสเตอร์ชิ้นในการกระจาย MongoDB นี้:
ภาพด้านบนมีดังต่อไปนี้สามองค์ประกอบหลัก:
- Shard:
ใช้ในการเก็บข้อมูลบล็อกจริงสภาพแวดล้อมการผลิตที่เกิดขึ้นจริงมีบทบาทเซิร์ฟเวอร์สะเก็ดสามารถตั้งค่าเครื่องไม่กี่ relica ตั้งมุ่งมั่นที่จะป้องกันไม่ให้เป็นเจ้าภาพจุดเดียวของความล้มเหลว
- การกำหนดค่าเซิร์ฟเวอร์:
เช่น mongod ร้านค้าทั้งหมด ClusterMetadata รวมถึงข้อมูลที่ก้อน
- เราเตอร์ค้นหา:
ปลายด้านหน้าของเส้นทางโดยการเข้าถึงลูกค้าและกลุ่มทั้งลักษณะเช่นฐานข้อมูลเดียวการใช้งาน Front-end โปร่งใสสามารถใช้
ตัวอย่างของการกระจายตัว
Slice พอร์ตผ้ามีการกระจายเป็นดังนี้
Shard Server 1:27020 Shard Server 2:27021 Shard Server 3:27022 Shard Server 4:27023 Config Server :27100 Route Process:40000
ขั้นตอนที่หนึ่ง: เริ่ม Shard เซิร์ฟเวอร์
[root@100 /]# mkdir -p /www/mongoDB/shard/s0 [root@100 /]# mkdir -p /www/mongoDB/shard/s1 [root@100 /]# mkdir -p /www/mongoDB/shard/s2 [root@100 /]# mkdir -p /www/mongoDB/shard/s3 [root@100 /]# mkdir -p /www/mongoDB/shard/log [root@100 /]# /usr/local/mongoDB/bin/mongod --port 27020 --dbpath=/www/mongoDB/shard/s0 --logpath=/www/mongoDB/shard/log/s0.log --logappend --fork .... [root@100 /]# /usr/local/mongoDB/bin/mongod --port 27023 --dbpath=/www/mongoDB/shard/s3 --logpath=/www/mongoDB/shard/log/s3.log --logappend --fork
ขั้นตอนที่สอง: เริ่มต้นการกำหนดค่าเซิร์ฟเวอร์
[root@100 /]# mkdir -p /www/mongoDB/shard/config [root@100 /]# /usr/local/mongoDB/bin/mongod --port 27100 --dbpath=/www/mongoDB/shard/config --logpath=/www/mongoDB/shard/log/config.log --logappend --fork
หมายเหตุ: ที่นี่เราสามารถเริ่มต้นเช่นบริการ MongoDB สามัญเป็นจุดเริ่มต้นไม่จำเป็นต้องเพิ่มพารามิเตอร์ -shardsvr และ configsvr เพราะบทบาทของสองตัวแปรเหล่านี้คือการเปลี่ยนพอร์ตเริ่มต้นเพื่อให้เราสามารถเป็นพอร์ตตัวเองกำหนด
ขั้นตอนที่สาม: เริ่มต้นกระบวนการเส้นทาง
/usr/local/mongoDB/bin/mongos --port 40000 --configdb localhost:27100 --fork --logpath=/www/mongoDB/shard/log/route.log --chunkSize 500
พารามิเตอร์เริ่มต้น mongos, chunksize นี้ถูกใช้เพื่อระบุขนาดของก้อนที่หน่วยเป็นล้านบาทขนาดเริ่มต้นคือ 200MB
ขั้นตอนที่สี่: กำหนดค่า sharding
ต่อไปเราจะใช้ MongoDB เชลล์เข้าสู่ระบบ mongos เพิ่มโหนด Shard
[root@100 shard]# /usr/local/mongoDB/bin/mongo admin --port 40000 MongoDB shell version: 2.0.7 connecting to: 127.0.0.1:40000/admin mongos> db.runCommand({ addshard:"localhost:27020" }) { "shardAdded" : "shard0000", "ok" : 1 } ...... mongos> db.runCommand({ addshard:"localhost:27029" }) { "shardAdded" : "shard0009", "ok" : 1 } mongos> db.runCommand({ enablesharding:"test" }) #设置分片存储的数据库 { "ok" : 1 } mongos> db.runCommand({ shardcollection: "test.log", key: { id:1,time:1}}) { "collectionsharded" : "test.log", "ok" : 1 }
ขั้นตอนที่ห้า: ในรหัสโปรแกรมโดยไม่มีการเปลี่ยนแปลงมากการเชื่อมต่อโดยตรงสอดคล้องกับฐานข้อมูล Mongo ธรรมดาเป็นอินเตอร์เฟซการเข้าถึงฐานข้อมูลการเชื่อมต่อ 40,000