So nutzen Sie die kostenlose Stufe von Azure Cosmos DB optimal

Die Cosmos DB von Azure ist eine der besten Funktionen. Als verteilte Multimodell-Datenbank bietet sie eine Grundlage für die Erstellung wirklich Cloud-nativer Anwendungen mit einer Reihe von Konsistenzmodellen, die der Funktionsweise Ihrer Anwendung zugeordnet werden können. Der Einstieg ist jedoch nicht einfach, und eine schlecht konfigurierte oder entworfene Anwendung kann schnell teuer werden.

Es ist gut zu sehen, dass Cosmos DB jetzt über eine kostenlose Stufe verfügt, mit der Sie Anwendungen außerhalb einer begrenzten Entwicklungsumgebung bereitstellen können. Die neue Schicht ist nicht groß: Sie basiert auf der Mindestkonfiguration für Cosmos DB und bietet 400 RU / s (Anforderungseinheiten pro Sekunde) und 5 GB Speicherplatz mit bis zu 25 Containern in einer gemeinsam genutzten Durchsatzdatenbank. Das ist mehr als genug für eine kleine Anwendung, die beispielsweise mehr Lese- als Schreibvorgänge bietet und nicht auf starke Konsistenzmodelle angewiesen ist.

Sie müssen sich bewusst sein, dass Cosmos DB zwar eine Multiregion ist, Sie jedoch nur eine einzige 400-RU / s-Datenbank in der kostenlosen Schicht ausführen können. In der Praxis beschränkt sich dies auf eine einzelne Region, da zusätzliche Regionen jeweils eine eigene Instanz von 400 RU / s benötigen und diese zu Standardtarifen für diese Regionen pro Stunde berechnet werden.

Erste Schritte mit der kostenlosen Cosmos DB

Sie müssen ein neues Konto erstellen, um die kostenlose Stufe nutzen zu können. Es ist nicht als Abrechnungsoption für vorhandene Anwendungen verfügbar. Die 400 RU / s der kostenlosen Stufe sind die kleinste Menge, die in einer Cosmos DB-Datenbank bereitgestellt werden kann. Damit erhalten Sie monatlich rund 1 Milliarde Lesevorgänge. Dies sollte ausreichen, um Ihre Anwendung auf den Markt zu bringen oder um eine interne verteilte Datenbank im Rahmen eines Pilotprojekts bereitzustellen und auszuführen. Sobald Sie den Rand Ihrer kostenlosen RU / s-Zulage erreicht haben, können Sie mehr Kapazität in Blöcken von 100 RU / s hinzufügen, die stündlich abgerechnet werden.

Es lohnt sich zu verstehen, was eine Cosmos-Datenbank RU ist. Die RU ist eine Anforderungseinheit, und die in Rechnung gestellten RU / s sind ein Maß für den bereitgestellten Durchsatz Ihrer Datenbank, der alle ihre Vorgänge abdeckt. Dazu gehören Lesen, Schreiben, Aktualisieren, Löschen und mehr. Microsoft schlägt vor, dass 1 RU / s einer letztendlich konsistenten (der langsamsten und am wenigsten verarbeitungsintensiven Konsistenzstufe, die in Cosmos DB verfügbar ist) pro Sekunde eines 1-KB-Elements entspricht. Das Schreiben des gleichen 1-KB-Elements pro Sekunde beträgt 5 RU / s. Je komplexer die Operation ist, desto mehr RU / s werden verbraucht.

Den Verbrauch von Anforderungseinheiten verstehen

Es ist schwer genau zu sagen, wie viele RU / s eine Anwendung verbraucht. Sie können jedoch über die Cosmos DB-Einschränkungen nachdenken, die sich auf die von Ihrer Datenbank verwendeten RU / s auswirken können. Zunächst müssen Sie die Größe Ihrer Artikel berücksichtigen. Je größer das Element ist, desto mehr RU / s werden zum Lesen oder Schreiben verwendet. In ähnlicher Weise verbraucht die Indizierung RU / s. Wenn Sie das Standardindizierungsmodell verwenden, werden die zum Schreiben von Elementen erforderlichen Ressourcen erhöht, wenn Sie Ihrer Datenbank weitere hinzufügen. Dann haben Sie die Wahl zwischen Konsistenzmodellen, bei denen sowohl eine starke als auch eine begrenzte Stalenität ungefähr doppelt so viele RU / s für einen Lesevorgang benötigen wie die anderen, weniger strengen Modelle von Cosmos DB.

Mit einer begrenzten Anzahl von RU / s, die in der kostenlosen Stufe verfügbar sind, möchten Sie möglicherweise diese Einschränkungen umgehen, um den Verbrauch auf ein Minimum zu beschränken. Eine Möglichkeit besteht darin, die gesamte Indizierung für Ihre Datenbank zu deaktivieren. In der Praxis ziehen Sie es jedoch möglicherweise vor, die Indizierung auf bestimmte Eigenschaften für jedes gespeicherte JSON-Dokument zu beschränken. Gleichzeitig müssen Sie überlegen, wie Ihre Anwendung funktioniert und ob es besser ist, so etwas wie Sitzungskonsistenz zu verwenden, um die Wahrnehmung der Benutzer hinsichtlich der Leistung zu verbessern und gleichzeitig die verwendeten RU / s zu reduzieren.

Da RU / s aktivitätsbasiert sind, können Sie das Abfragedesign verwenden, um den Verbrauch auf ein Minimum zu beschränken. Dies kann bedeuten, dass Sie die Anzahl der Ergebnisse pro Abfrage begrenzen, die von Ihnen gespeicherte Datenmenge steuern oder so wenig benutzerdefinierte Funktionen, gespeicherte Prozeduren und Trigger wie möglich verwenden.

Das Einrichten Ihrer Datenbank ist einfach genug. Erstellen Sie im Azure-Portal ein neues Cosmos DB-Konto und erstellen Sie im Azure-Daten-Explorer eine neue Datenbank. Geben Sie ihm zunächst eine ID und geben Sie dann den Durchsatz an. Stellen Sie dies auf 400 RU / s ein. Bei höheren Beträgen werden Kostenschätzungen angezeigt. Wenn Sie jedoch eine kostenlose Instanz einrichten, müssen Sie dies nicht ausprobieren. Sie sind nicht auf das Portal beschränkt. Sie können die Azure-CLI, PowerShell oder sogar programmgesteuert im Cosmos DB SDK verwenden.

Erstellen von Apps auf der kostenlosen Ebene von Cosmos DB

In Cosmos DB besteht eine Datenbank aus einer Reihe von Containern, mit denen die Partitionierung in einer Azure-Region und die Verteilung auf die Regionen, in denen Sie Ihre Datenbank verwenden, verwaltet werden. Jede Datenbank kann als ein bestimmtes Modell konfiguriert werden: NoSQL (sowohl MongoDB als auch MongoDB und Cassandra), SQL, Gremlin und Tabellen. Die meisten Apps arbeiten damit als NoSQL-Dokumentendatenbank, in der JSON-Daten gespeichert sind.

Sobald Sie eine Datenbank eingerichtet und ein Modell ausgewählt haben, können Sie sich einen Cosmos DB-Container als Skalierbarkeit der Datenbank vorstellen. Außerhalb der kostenlosen Stufe können Sie den Durchsatz in RU / s auf Containerbasis festlegen. In der kostenlosen Ebene teilen Sie diesen Durchsatz für alle Container in Ihrer Datenbank, sodass Sie den Durchsatz für einen bestimmten Container nicht vorhersagen können. Bezahlte Instanzen haben eine zugeordnete SLA, weshalb Sie den Durchsatz pro Container festlegen können.

Das Arbeiten über Container hinweg auf diese Weise entspricht der Verwendung eines Clusters in einer NoSQL-Datenbank und eignet sich gut für diese Art von Workload. Durch die Verwendung des gleichen Partitionsschlüssels für alle Ihre Container teilt Cosmos DB automatisch den Durchsatz für alle Container. Sie können diesen Ansatz mit den 25 Containern der kostenlosen Ebene verwenden, um Engpässe für die Benutzer Ihrer Anwendung zu reduzieren. Wenn Sie es als Sharded-Clustered-NoSQL-Datenbank behandeln, sollten Sie es relativ einfach finden, es in Ihre Anwendungen aufzunehmen und damit Zeiger auf andere Inhalte und nicht auf den Inhalt selbst zu hosten.

Die Arbeit mit einem kostenlosen Serviceangebot kann schwierig sein. Wenn Sie jedoch vernünftige Vorsichtsmaßnahmen treffen, sollte es möglich sein, die neue Stufe von Cosmos DB als Teil eines Anwendungs-Backends zu verwenden. Möglicherweise müssen Sie einige der Skalierbarkeitsfunktionen des Dienstes opfern, dies sollte jedoch keine wesentlichen Auswirkungen auf Anwendungen haben, wenn Sie sorgfältige Entscheidungen zur Entwurfszeit treffen.

Es ist wichtig zu überlegen, wie Sie eine verteilte Datenbank wie Cosmos DB nutzen können, anstatt einfach Ihre vorhandenen Workloads darauf zu portieren. Es ist unwahrscheinlich, dass sie gut zusammenpassen. Stellen Sie sich dies stattdessen als Ihre Gelegenheit vor, eine wirklich Cloud-native, verteilte Anwendung zu erstellen. In diesem Fall sind 400 RU / s mehr als genug, um eine neue Anwendung zu booten und mit einer angemessenen Anzahl von Benutzern zum Laufen zu bringen.