Der Container appointments hat nach dem Anlegen eine Indexrichtlinie, die jede Eigenschaft indexiert. Das ist bequem und kostet bei jedem Schreiben. Kladde.Verlauf fragt aber nur wenige Dinge: den Kalender eines Monats, den Verlauf eines Kunden, später die Termine eines Büros nach Monat und Beginn. Diese Lektion zeigt, wie man die Richtlinie dazu schneidet und wie man mit den Metriken des SDK prüft, ob eine Abfrage den Index wirklich nutzt.

Nicht gegen Azure ausgeführt. Der Code wurde mit Microsoft.Azure.Cosmos 3.64.0 und Newtonsoft.Json 13.0.4 übersetzt. Gelaufen ist nur die Prüfung der Richtlinie und das Lesen der Indexmetriken aus Text (Übung 1). Kein Indexumbau, keine Abfrage mit Metriken und keine RU-Messung fand gegen ein Konto statt; was über den Dienst gesagt wird, stammt aus Microsoft Learn, gelesen am Tag des Schreibens.

Die Indexrichtlinie

Die Richtlinie ist ein JSON-Dokument am Container. Sie legt fest, welche Pfade wie indexiert werden. Learn kennt vier Indexarten: Bereichsindex (Gleichheit, Bereiche, ORDER BY, JOIN, viele Zeichenfunktionen), räumlicher, zusammengesetzter und Vektorindex (Lektion 4.1). Die Standardrichtlinie indexiert jede Eigenschaft jedes Elements mit Bereichsindizes für Zahlen und Zeichenketten.

  • Modus. consistent: Der Index wird beim Schreiben synchron nachgeführt. none: keine Indexierung, etwa für einen reinen Schlüssel-Wert-Speicher. lazy ist für neue Container nicht wählbar und kann unvollständige Ergebnisse liefern.
  • Pfade. Ein Pfad zu einem Wert endet auf /? (/title/?), ein Array-Element schreibt man /[], alles darunter /*. Jede Richtlinie braucht den Wurzelpfad /* entweder bei den eingeschlossenen oder bei den ausgeschlossenen Pfaden. Learn empfiehlt, die Wurzel einzuschließen und Pfade auszuschließen, die man nicht braucht; so wird auch eine später hinzukommende Eigenschaft indexiert. Bei Konflikten gewinnt der genauere Pfad.
  • Immer dabei. id und _ts sind im Modus consistent immer indexiert; _etag ist standardmäßig ausgeschlossen.
  • Schlüsselpfade. Die Ebenen des Partitionsschlüssels gehören in den Index (/officeId, /month). Mit eingeschlossener Wurzel /* sind sie es; schließen Sie die Wurzel aus, müssen Sie sie ausdrücklich einschließen, sonst lesen Abfragen auf der Schlüsselhierarchie den ganzen Bestand und kosten mehr RU.
  • Kosten. Jeder indexierte Pfad kostet beim Schreiben RU und Speicher. Der Index kann größer sein als die Daten. Ausgeschlossene Pfade senken beides.

Freie Texte, nach denen niemand filtert, gehören ausgeschlossen. In der Kladde sind das die notes. Die Termine brauchen außerdem zwei zusammengesetzte Indizes, siehe unten.