pymongo Methode zum Abrufen von Statistiken für die Sammlung Byte-Nutzung?

8

Die MongoDB Application FAQ erwähnt < Diese kurzen Feldnamen sind eine Technik, die für kleine Dokumente verwendet werden kann. Das brachte mich dazu zu denken: "Was ist ein kleines Dokument überhaupt?"

Ich benutze Pymongo, gibt es eine Möglichkeit, wie ich einige Python schreiben kann, um eine Sammlung zu scannen, und ein Gefühl für das Verhältnis von Bytes für Felddeskriptoren vs Bytes für tatsächliche Felddaten zu bekommen?

Ich bin tangential neugierig darauf, was der grundlegende Byte-Overhead pro Dokument ist.

    
Travis Griggs 16.09.2013, 19:45
quelle

1 Antwort

18

Es gibt keine eingebaute Methode, um das Verhältnis zwischen dem Platz, der für die Schlüssel in BSON-Dokumenten verwendet wird, und dem Abstand, der für die tatsächlichen Feldwerte verwendet wird, zu erhalten. Die collstats und dbstats Befehle können Ihnen nützliche Informationen über die Sammlung und Datenbankgröße geben. Hier ist, wie Sie sie in Pymongo verwenden:

%Vor%

Du könntest immer etwas hacken, um eine ziemlich gute Schätzung zu bekommen. Wenn alle Ihre Dokumente in einer Sammlung das gleiche Schema haben, ist so etwas nicht schlecht:

  1. Zähle die Gesamtzahl der Zeichen in den Feldnamen eines Dokuments und rufe diese Nummer a .
  2. auf
  3. Fügen Sie für jedes Feld ein a hinzu, um das abschließende Zeichen zu berücksichtigen. Lassen Sie das Ergebnis b sein.
  4. Multiplizieren Sie b mit der Anzahl der Dokumente in der Sammlung und lassen Sie das Ergebnis mit c gekennzeichnet werden.
  5. Teilen Sie c durch das Feld "size", das von collStats zurückgegeben wird (unter der Annahme, dass collStats skaliert wird, um die Größe in Byte zurückzugeben). Lassen Sie diesen Wert d sein.

Jetzt d ist der Anteil der gesamten Datengröße der Sammlung, die zum Speichern von Feldnamen verwendet wird.

    
david.storch 17.09.2013, 17:02
quelle

Tags und Links