MongoDB Scheibe
Scheiben
Es ist ein weiteres Cluster innerhalb mongodb, Slicing-Technologie, eine große Menge von Daten, die die wachsende Nachfrage nach MongoDB zu erfüllen.
Wenn MongoDB große Datenmengen zu speichern, kann eine Maschine nicht ausreichend sein, um die Daten zu speichern, kann unzureichend sein um eine akzeptable Lese bereitzustellen und Durchsatz schreiben. An diesem Punkt können wir die Daten auf mehreren Maschinen aufgeteilt, so dass das Datenbanksystem gespeichert werden können und mehr Daten verarbeiten.
Warum Scheibe
- Kopieren Sie alle Operationen auf dem primären Knoten schreiben
- Verzögerungsempfindliche Daten in der Master-Abfrage
- Eine einzelne Kopiensatz wird auf 12 Knoten beschränkt
- Wenn die große Anzahl von Anfragen wird angezeigt, wenn Sie den Speicher.
- Lokale Festplatte Mangel
- Vertikale Erweiterung ist teuer
MongoDB Scheibe
Die folgende Abbildung zeigt die Verwendung von Cluster-Struktur Scheibe in MongoDB Verteilung:
Das Bild oben hat die folgenden drei Hauptkomponenten:
- Splitter:
Verwendet, um die eigentliche Datenblock zu speichern, die tatsächliche Produktionsumgebung, eine Scherbe Serverrolle ein paar Maschinen festlegen Relica eine Verpflichtung stellen Sie den Host-Single Point of Failure zu vermeiden
- Config Server:
mongod Instanz speichert die gesamte ClusterMetadata, einschließlich der Blockinformationen.
- Query - Router:
Das vordere Ende der Route, wobei der Client-Zugriff, und die ganze Cluster aussehen wie eine einzige Datenbank-Front-End-Anwendungen transparent verwenden können.
Beispiele für die Fragmentierung
Slice-Fabric-Ports sind wie folgt verteilt:
Shard Server 1:27020 Shard Server 2:27021 Shard Server 3:27022 Shard Server 4:27023 Config Server :27100 Route Process:40000
Erster Schritt: Starten Sie Shard Server
[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
Zweiter Schritt: Starten Sie den Config Server
[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
Hinweis: Hier können wir wie gewöhnliche mongodb Dienst als Start beginnen, keine Notwendigkeit , -shardsvr und configsvr Parameter hinzuzufügen. Da die Rolle dieser beiden Parameter ist die Start Port zu ändern, so können wir selbst bezeichneten Hafen sein.
Schritt drei: Start Route-Prozess
/usr/local/mongoDB/bin/mongos --port 40000 --configdb localhost:27100 --fork --logpath=/www/mongoDB/shard/log/route.log --chunkSize 500
mongos Startparameter, chunkSize dieses verwendet wird, um die Größe des Blocks angeben, ist die Einheit MB, ist die Standardgröße 200 MB.
Vierter Schritt: Konfigurieren von Sharding
Als nächstes benutzen wir MongoDB Shell Melden Sie sich an mongos, fügen Sie Knoten 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 }
Fünfter Schritt: Im Programmcode ohne große Veränderungen, eine direkte Verbindung in Übereinstimmung mit der gewöhnlichen Mongo Datenbank als Datenbankzugriffsschnittstelle 40.000 verbinden