MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Kosten für Schlüssel in der JSON-Dokumentendatenbank (Mongodb, Elasticsearch)

Sie haben richtig bemerkt, dass die Dokumente unterschiedliche Größen haben. Sie sparen also mindestens 15 bytes pro Dokument (60% für ähnliche Dokumente), wenn Sie sich für das zweite Schema entscheiden. Dies wird in etwas wie 140MB enden für Ihre 10 million Aufzeichnungen. Dadurch haben Sie folgenden Vorteil:

  • Festplatteneinsparungen. Das einzige Problem ist, dass dies angesichts der Preise für aktuelle Festplatten meist unbrauchbar ist.
  • RAM-Einsparung. Im Vergleich zu Festplatten kann dies für die Indizierung nützlich sein. In Mongodb sollte der Arbeitssatz von Indizes in den RAM passen, um ein gutes Ergebnis zu erzielen Leistung . Wenn Sie also Indizes für diese beiden Felder haben, sparen Sie nicht nur 140MB Festplattenspeicher, sondern auch 140MB des potenziellen RAM-Speicherplatzes (der sich tatsächlich bemerkbar macht).
  • I/O . Viele Engpässe entstehen aufgrund der Beschränkung des Ein-/Ausgabesystems (die Lese-/Schreibgeschwindigkeit von der Festplatte ist begrenzt). Für Ihre Dokumente bedeutet dies, dass Sie mit Schema 2 potenziell twice as many documents lesen/schreiben können pro 1 Sekunde.
  • Netzwerk . In vielen Situationen ist das Netzwerk sogar viel langsamer als IO, und wenn sich Ihr DB-Server auf einem anderen Computer befindet als Ihr Anwendungsserver, müssen die Daten über das Kabel gesendet werden. Und Sie können auch doppelt so viele Daten senden.

Nachdem ich über Vorteile gesprochen habe, muss ich Ihnen einen Nachteil für einen kleinen Schlüssel nennen:

  • Lesbarkeit der Datenbank. Wenn Sie db.coll.findOne() ausführen und sieht {_id: 1, t: 13423, a: 3, b:0.2} Es ist ziemlich schwer zu verstehen, was hier genau gespeichert ist.
  • Lesbarkeit der Anwendung ähnlich mit der Datenbank, aber zumindest hier können Sie eine Lösung haben. Mit einer Mapping-Logik, die currentDate transformiert zu c und price zu p Sie können einen sauberen Code schreiben und ein kurzes Schema haben.