2016-05-11 8 views
0

In DocumentDB sind wir auf 512 KB JSON-Dokument beschränkt.DocumentDB, verwenden Sie kleine Feldnamen für JSON-Dokumente, um die Länge zu minimieren

Mit Blick auf die Antwort here, um die Größe des gesendeten Dokuments zu schätzen, wird empfohlen, die folgende Methode JsonConvert.SerializeObject und Encoding.UTF8.GetBytes(s) zu verwenden. Es gibt keine Vorstellung von Komprimierung, selbst mit dem .NET SDK.

Wenn Sie ein Array von benutzerdefinierten Objekten verwenden, können die Feldnamen häufig wiederholt werden.

Meine Frage ist: sollte ich versuchen, kurze Namen für JSON-Felder verwenden, um die Größe über die Lesbarkeit zu reduzieren? Empfehlen Sie, den Namen der serialisierten Eigenschaft mit dem von JSON.NET bereitgestellten Attribut [JsonProperty] zu überschreiben? Hier

+0

Es liegt wirklich an Ihnen - viele Möglichkeiten zum Komprimieren/Minimieren von JSON (mehrere Bibliotheken existieren, die dies tun), einschließlich Ihres Vorschlags, kürzere Eigenschaftsnamen zu verwenden. Keine einzige richtige Antwort auf dieses Problem (und Fragen zu Tool/Framework-Empfehlungen sind nicht Thema). Nur neugierig (und nicht direkt mit der Frage verbunden) - haben Sie bestätigt, dass Ihre Dokumente> 512K erfordern? –

+0

Stimmen Sie mit David überein. Und ich habe festgestellt, dass jede Datenmodellierung, die Sie nahe an 512 K bringt, wahrscheinlich zu stark denormalisiert ist. Es ist wichtig, dass Sie sich nie für ein Datenmodell entscheiden, bei dem ein Array-Element oder Unterobjekt unbegrenzt wachsen kann. Wenn Sie daran denken, die Anzahl der Elemente in einem Array-Feld oder Unterobjekt zu begrenzen, und es gibt keine natürliche Grenze (ein Auto hat nur 4 Reifen), ist das ein Warnsignal. –

+0

@DavidMakogon ja Ich hatte eine Situation, vor allem mit Arrays, wo die Anzahl der Elemente die Dokumentgröße größer als 512 KB macht –

Antwort

2

ist eine Antwort von allen Kommentaren:

@DavidMakogon „Es ist wirklich an Ihnen - viele Möglichkeiten zum Komprimieren/minify JSON (mehrere Bibliotheken gibt, die dies tun), einschließlich Ihren Vorschlag kürzerer Eigenschaft verwenden Namen. "

Ich stimme David zu. Ich würde hinzufügen, dass das Schrumpfen der Feldnamen sich negativ auf die Lesbarkeit/Debugfähigkeit Ihres Systems auswirken wird.

Auf der anderen Seite habe ich festgestellt, dass jede Datenmodellierung, die Sie nahe 512K bringt, wahrscheinlich übermäßig denormalisiert ist. Es ist wichtig, dass Sie sich nie für ein Datenmodell entscheiden, bei dem ein Array-Element oder Unterobjekt unbegrenzt wachsen kann. Wenn Sie daran denken, die Anzahl der Elemente in einem Array-Feld oder Unterobjekt zu begrenzen, und es gibt keine natürliche Grenze (ein Auto hat nur 4 Reifen), ist das ein Warnsignal.

In den Kommentaren geben Sie an, dass das Array unbegrenzt wachsen würde. Meine Empfehlung wäre also, Ihr Datenmodell so zu ändern, dass jedes Element Ihres Arrays ein separates Dokument ist. Sie müssen zwei Rundreisen machen, um die Eltern und Kinder zu bekommen, aber das ist, was eine Verbindung in einer SQL-Datenbank automatisch tut, also ist dies keine Effizienz der Ausführungsproblem und es ist nur eine geringfügige Steigerung für Ihr Programm, ich vermute weniger als die Chunking-Algorithmus sagen Sie, dass Sie in den Kommentaren implementiert haben.