2017-01-05 2 views
3

Wir verwenden DocumentDB auf azurblau. Wir haben eine einzige Datenbank mit 7 Sammlungen mit jeweils maximal 15 Datensätzen. Es benötigt nicht viel Speicher.So reduzieren Sie reservierte RUs, um die Kosten für DocumentDB zu reduzieren

Nur wenige Entwickler verwenden diese DB-Instanz. Der Traffic ist also auch unterdurchschnittlich.

Noch verwendet dieser Server 67.600 RUs pro Tag. Es muss ein Problem mit den Einstellungen von DocumentDB geben. Ich bin auf der Suche nach einer genauen Analyse, wie diese EVUs berechnet werden und wie sie reduziert werden können.

+2

Von dem, was Sie beschrieben haben, müssen Sie DocumentDB nicht verwenden. Sie könnten die geringe Datenmenge, die Sie haben, auf Azure Table Storage migrieren und stattdessen diese oder eine kleine Azure SQL-Datenbank verwenden. Azure Table Storage würde Ihnen bei weitem die günstigste Option bieten. –

+1

@ChrisPietschmann Ich sehe nicht, wie dieser Kommentar in diesem Fall relevant ist. Wir haben keine Kenntnis von den OP-Plänen oder spezifischen Anforderungen für einen Dokumentenspeicher im Vergleich zu relationalem oder Schlüssel/Wert. Es gibt * immer * Alternativen. Aber die Frage war spezifisch für DocumentDB (und die Notwendigkeit, das docdb Collection-Modell zu verstehen, vorausgesetzt, dass die ursprünglichen Parameter vorlagen). –

+0

@DavidMakogon Da es sich um eine Kostenreduzierung handelte, erschien es angemessen, eine gültige Option zu nennen, die eine erhebliche Kostenersparnis bietet und nicht nur die Nutzung desselben Dienstes neu konfiguriert. Auch deshalb wurde es als Kommentar gepostet; keine Antwort. –

Antwort

4

Es gibt kein Problem mit den DocumentDB-Einstellungen. Sie haben 7 Sammlungen bereitgestellt. Standardmäßig erhält jede Sammlung über das Portal 1000 RU (die Ihnen zur Verfügung stehen, unabhängig davon, ob Sie 0 RU oder alle 1000 RU verwenden). Die Mindest RU Rahmen für einen nicht partitionierten Sammlung ist 400.

EDIT - ich falsch verstanden - wenn Sie bei 67.000 RU sind, dann haben Sie wahrscheinlich mehrere partitioniert Sammlungen (die bei 10.100 RU starten) bereitgestellt. Für die anfängliche Entwicklung/Test, mit nur 15 Dokumenten, haben Sie grob überzuordnete Kapazität.

Da Sie sieben Sammlungen bereitgestellt haben (die wahrscheinlich partitioniert sind, basierend auf Ihrer RU-Größe), haben Sie eine Bereitstellung von ~ 70.000 RU. Unabhängig davon, was Sie tatsächlich verbrauchen (Sie reservieren im Wesentlichen Kapazität).

Ich habe keine Ahnung, was Ihre App braucht, und ob Sie 7 Sammlungen für einen bestimmten Grund benötigen. Aber ... objektiv gibt es keine Regel, die besagt, dass Sie verschiedene Dokumenttypen in verschiedene Sammlungen trennen müssen. Sie können heterogene Daten problemlos in einer einzigen Sammlung speichern. Wie Sie nach bestimmten Typen fragen, liegt wirklich an Ihnen, aber es ist trivial, jedem Dokument eine Eigenschaft wie type hinzuzufügen.

Hinweis, da ich jetzt glaube, dass Sie partitionierte Sammlungen verwenden: Sie können diese nicht in nicht partitionierte Sammlungen konvertieren; Sie müssen neue nicht partitionierte Sammlungen erstellen und Ihre Daten aus Ihren partitionierten Sammlungen verschieben. (da Sie insgesamt 15 Dokumente haben, sollte dies trivial sein).

Beachten Sie, dass eine einzelne nicht partitionierte Auflistung auf 400 RU verkleinert werden kann. Wenn Sie dann Ihre 7 Sammlungen in 1 Sammlung zusammenfassen, sollten Sie in der Lage sein, Ihren Verbrauch von ~ 70.000 => 400 zu reduzieren. (Zumindest während des Entwickelns/Tests).

EDIT FEB 8 2017 Für partitionierte Sammlungen gilt jetzt eine Mindestschwelle von 2.500 RU, verglichen mit der ursprünglichen Schwelle von 10.100 RU.

+0

Sie schlagen also vor, dass wir alle 7 Sammlungen in 1 Sammlung kombinieren und "Typ" -Eigenschaft mit jedem Datensatz festlegen sollten. Ich verstehe, dass dies die Anzahl der Sammlungen reduzieren und somit die Kosten der Reservierten Einheiten reduzieren kann. Wenn es noch einen Weg gibt, reservierte Einheiten zu reduzieren, lassen Sie es mich bitte wissen. Gibt es auch eine Möglichkeit, die genaue Anzahl der EVU, die für jede Sammlung verwendet wurde, für die letzte Stunde/24 Stunden/Woche zu analysieren, um unsere Annahme der obigen Berechnungen zu bestätigen? –

+0

Ich habe Ihnen alle Informationen gegeben, die Sie benötigen, um eine fundierte Entscheidung zu treffen, wie Sie Ihre EVU und die damit verbundenen Kosten reduzieren können. Ich kann wirklich keine spezifischen Entscheidungen für Sie treffen - ich weiß nichts über Ihre App oder Ihre Bedürfnisse, aber Sie kennen jetzt die Mindest-RU-Einstellungen für nicht partitionierte und partitionierte Sammlungen und können entsprechend entscheiden, was geändert oder kombiniert werden soll. Was die Analyse betrifft, ist das eine völlig separate Frage (und neue Fragen sollten nicht in Kommentaren platziert werden). –

+0

für alle, die in Zukunft ähnlichen Problemen gegenüberstehen, die Reduzierung auf eine einzige Sammlung half, die Kosten drastisch zu kontrollieren. Ich musste eine zusätzliche Eigenschaft hinzufügen, um Datensätze zu differenzieren, weil alle Datensätze in einer einzigen Sammlung sind. –

3

Es ist üblich, dass Leute, die neu in DocumentDB sind, an eine Sammlung denken, die einer Tabelle in SQL ähnelt oder auch, was MongoDB eine "Sammlung" nennt. DocumentDB ist jedoch anders gestaltet. Es empfiehlt sich, eine einzelne partitionierte Sammlung zu verwenden, um alle Dokumenttypen und Partitionen zu speichern, z. B. nach Geografie, Mandanten oder Benutzer. Sie unterscheiden Dokumententypen mit einem type = <MyType> Feld oder ich bevorzuge eigentlich myType = true Ansatz, so dass ich Vererbung und Mixins modellieren kann.

Dies bedeutet, dass Sie nur für eine einzelne partitionierte Sammlung bezahlen müssen. Eine einzelne partitionierte Sammlung kann immer noch mehr Kosten verursachen als Tabellenspeicher. Wenn Sie DocumentDB jedoch später nahezu unbegrenzt skalieren möchten, empfehle ich Ihnen dringend, mit der Beschreibung zu beginnen.

Noch eine Anmerkung zu Davids Vorschlag, nicht partitionierte Sammlungen zu verwenden.Das war die einzige Option, als DocumentDB zum ersten Mal gestartet wurde, aber jetzt wird empfohlen, partitionierte Sammlungen zu verwenden. Ich vermute, dass die nicht partitionierte Sammeloption irgendwann ausläuft. Sie interagieren etwas anders mit ihnen, und wie David herausfand, gibt es derzeit keine Konvertierungshilfe (besonders wenn Sie mehrere nicht partitionierte Sammlungen verwenden), daher ist der Übergang von nicht partitionierten Sammlungen zu einer partitionierten Sammlung nicht schwer, aber nicht so einfach wie Ändern Ihres Partitionstyps und kostet Sie Entwicklungsaufwand. Es kostet Sie ein wenig mehr, eine einzelne partitionierte Sammlung als eine einzelne nicht partitionierte Sammlung zu haben, aber es lohnt sich, die Übergangskosten später zu sparen, IMHO und es kostet Sie weniger, eine einzelne partitionierte Sammlung zu haben, als es kostet habe sieben nicht partitionierte.

Verwandte Themen