In einem MongoDB Sharded Cluster ist das wichtigste Werkzeug der Shard Key.
Mit dem Shard Key bestimmt man die Verteilung der Daten im Cluster und damit auch die Schreib-/Leseperformence.
Die Dokumente in einer geshardeten Collection werden anhand des Shard Keys in "Ranges" aufgeteilt und auf den einzelnen Shard Nodes abgelegt.
Für welchen Shard Key man sich entscheidet hängt immer von den Daten, sowie den Anforderungen an die Performance ab.
- ausgeglichene Verteilung
Der ideale Shard Key, für eine ausgeglichene Verteilung, muß einfach teilbar sein. Das erleichtert MongoDB das Verteilen der Daten auf die Shards.
Hat ein Shard Key zu wenige mögliche Werte, resultieren daraus zu große Chunks, die nicht mehr aufgeteilt werden können.
Beispiel Adressdaten:
{state:"Bayern",zipcode:"90411",phone:"0911/123456"}
- hohe Schreibperformance
Der ideale Shard Key, für eine hohe Schreibperformance, ermöglicht das Verteilen von Schreiboperationen über den gesamten Cluster. Das verhindert dass ein einzelner Node zum Bottleneck wird.
Shard Keys die einen hohen Bezug zur Zeit haben sind eine schlechte Wahl, der Shard Key soll einen hohen Zufallsfaktor besitzen.
Beispiel ObjectID:
{_id:"34234F435345DFG34543DSF"}
- hohe Leseperformance
Der ideale Shard Key, für eine hohe Leseperformance, ermöglicht die Rückgabe des Ergebnisses einer Abfrage von einer einzelnen MongoDB Instanz.
Der Shard Key sollte das Primäre Feld sein, auf das die Abfragen gefahren werden. Ein Feld mit einer hohen Zufälligkeit ist dafür schlecht geeignet.