Wie speichert Trello ihre Daten (Karten) in MongoDB?Wie speichert Trello Daten in MongoDB? (Sammlung pro Karte?)
Ich lese (How does Trello show history so quickly?), dass ihre Aktionen Sammlung die größte ist. Daher gehe ich davon aus, dass sie nicht alle Karten in einer gigantischen Sammlung speichern.
Die einzige andere logische Lösung scheint eine Sammlung pro Karte oder pro Benutzer. Aber sie haben viele Benutzer und ich habe gelesen (http://www.mongodb.org/display/DOCS/Using+a+Large+Number+of+Collections), dass die Anzahl der Sammlungen begrenzt ist und einige Leute raten davon ab, viele Sammlungen zu verwenden.
Ich hoffe, jemand von Trello Team wird dies ANSWARE und ich hoffe, einige Ideen zur Lösung dieser Art von Problem auch von der Allgemeinheit zu bekommen.
Warum nicht sie alle in einer Sammlung und Shard auf, was sie auf diese Weise abfragen speichern Sie effektiv nur Abfrage von einem Computer zu einer Zeit machen die Abfrage so schnell wie eine kleine Sammlung, fügen Sie oben, dass sie wahrscheinlich ping die Daten auch in andere Regionen, so dass die Reaktionszeiten konsistent sind und Sie in kurzer Zeit eine vollständig skalierbare Sammlung in Milliarden von Zeilen erhalten. Sie müssen sich auch daran erinnern, dass die Sperre auf Db-Ebene liegt. Wenn sie also ein Vielfaches von etwas verwenden würden, würde es Snese dazu bringen, mehrere DBs zu verwenden, wenn überhaupt. – Sammaye
@Sammaye Ich verstehe nicht den "Shard auf was sie abfragen" Teil. Sie können alle Karten in einem Brett sehen, durchsuchen Sie alle Bretter nach Kartenname, ... Ich verstehe das grundlegende Prinzip des Sharding, aber ich verstehe nicht, wie man das erreichen kann, was Sie sagen. Könntest du es bitte ein bisschen mehr erklären. – Ben
Ok Ich benutze Trello jetzt erst seit 10 Minuten und schon sehe ich, dass wenn ich diese Seite entwerfe, ich drei Sammlungen hätte: 'user',' board', 'card'. Ich würde shard auf 'board_id' für' board' verwenden, da ein board für viele Benutzer zugänglich sein muss. Auf diese Weise, wenn Sie nach dem Benutzer suchen (der auf '{_id, username, email}' aktiviert ist) und dann alle ihre Boards bekommen, die skaliert werden. Die Listen eines Brettes würden in die Bretterreihe eingebettet werden, aber nicht die Karten. Die Karten würden wahrscheinlich an board_id und timestamp und vielleicht auch user_id ausgegeben werden. Das ist mein erster 10 min Blick – Sammaye