Latest web development tutorials

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