Kolekce
Azure Cosmos DB je globálně distribuovaná databáze s více modely, která podporuje modely dokumentů, grafů a dat klíč-hodnota. Obsah v této části je určený k vytváření, dotazování a správě prostředků kolekce pomocí rozhraní SQL API přes REST.
Rozhraní REST API podporuje základní operace CRUD s prostředky v rámci účtu databáze. Kolekce je kontejner dokumentů JSON a přidružené logiky javascriptové aplikace, tj. uložené procedury, triggery a uživatelem definované funkce. Toto téma popisuje operace REST používané ke správě kolekcí dokumentů.
Poznámka
Tyto články s referenčními informacemi o rozhraní API ukazují, jak vytvářet prostředky pomocí rozhraní API roviny dat služby Azure Cosmos DB. S rozhraním API roviny dat můžete nakonfigurovat základní možnosti, jako jsou zásady indexování, klíče oddílů podobně jako u sad SDK služby Cosmos DB. Pokud potřebujete úplnou podporu funkcí pro všechny prostředky Azure Cosmos DB, doporučujeme použít poskytovatele prostředků Cosmos DB.
Kolekce se mapuje na kontejner ve službě Azure Cosmos DB. Jedná se tedy o fakturovatelnou entitu, u které jsou náklady určeny zřízenou propustností vyjádřenou v jednotkách žádostí za sekundu. Kolekce můžou zahrnovat jeden nebo více oddílů nebo serverů a vertikálně navyšovat nebo snížit kapacitu z hlediska propustnosti. Kolekce se službou Azure Cosmos DB automaticky rozdělí do jednoho nebo několika fyzických serverů.
Vzhledem k tomu, že kolekce je systémový prostředek, má pevné schéma. Cesta URI kolekce je v modelu prostředků reprezentována koly.
Následující příklad znázorňuje definici JSON kolekce:
{
"id": "testcoll",
"indexingPolicy": {
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*",
"indexes": [
{
"kind": "Range",
"dataType": "String",
"precision": -1
},
{
"kind": "Range",
"dataType": "Number",
"precision": -1
}
]
}
],
"excludedPaths": []
},
"partitionKey": {
"paths": [
"/AccountNumber"
],
"kind": "Hash"
},
"_rid": "PD5DALigDgw=",
"_ts": 1459200611,
"_self": "dbs/PD5DAA==/colls/PD5DALigDgw=/",
"_etag": "\"00005900-0000-0000-0000-56f9a2630000\"",
"_docs": "docs/",
"_sprocs": "sprocs/",
"_triggers": "triggers/",
"_udfs": "udfs/",
"_conflicts": "conflicts/"
}
Vlastnost | Popis |
---|---|
id | Jedná se o jedinečný název, který identifikuje novou kolekci. |
zásady indexování | Jedná se o nastavení zásad indexování pro kolekci. |
partitionKey | Jedná se o nastavení konfigurace dělení na oddíly pro kolekci. |
_Zbavit | Jedná se o systémem vygenerovanou vlastnost. ID prostředku (_rid) je jedinečný identifikátor, který je také hierarchický podle zásobníku prostředků v modelu prostředků. Používá se interně k umístění a navigaci prostředku oprávnění. |
_Ts | Jedná se o systémem vygenerovanou vlastnost. Určuje časové razítko poslední aktualizace prostředku. Hodnota je časové razítko. |
_Vlastní | Jedná se o systémem vygenerovanou vlastnost. Jedná se o jedinečný adresovatelný identifikátor URI prostředku. |
_Etag | Jedná se o systémem vygenerovanou vlastnost představující etag prostředku vyžadovanou pro optimistické řízení souběžnosti. |
_Doc | Jedná se o systémem vygenerovanou vlastnost, která určuje adresovatelnou cestu prostředku dokumentů. |
_sprocs | Jedná se o systémem vygenerovanou vlastnost, která určuje adresovatelnou cestu prostředku uložených procedur (sprocs). |
_Aktivační události | Jedná se o systémem vygenerovanou vlastnost, která určuje adresovatelnou cestu prostředku triggerů. |
_Udf | Jedná se o systémem vygenerovanou vlastnost, která určuje adresovatelnou cestu k prostředku uživatelem definovaných funkcí (UDFs). |
_Konflikty | Jedná se o systémem vygenerovanou vlastnost, která určuje adresovatelnou cestu konfliktního prostředku. Pokud během operace s prostředkem v rámci kolekce dojde ke konfliktu, můžou uživatelé zkontrolovat konfliktní prostředky provedením příkazu GET na cestě URI konfliktů. |
Vlastnosti v rámci zásad indexování
Vlastnost | Popis |
---|---|
automatická | Určuje, jestli je automatické indexování zapnuté nebo vypnuté. Výchozí hodnota je True, takže se všechny dokumenty indexují. Nastavení hodnoty na False by umožnilo ruční konfiguraci cest indexování. |
indexingMode | Ve výchozím nastavení je režim indexování konzistentní. To znamená, že indexování probíhá synchronně během vkládání, nahrazování nebo odstraňování dokumentů. Pokud chcete, aby indexování probíhalo asynchronně, nastavte režim indexování na líný. |
includedPaths | Pole obsahující cesty k dokumentu, které mají být indexovány. Ve výchozím nastavení jsou zahrnuty dvě cesty: cesta /, která určuje, že se mají indexovat všechny cesty k dokumentu, a _ts cesta, která indexuje pro porovnání rozsahů časových razítek. |
excludedPaths | Pole obsahující cesty k dokumentu, které mají být vyloučeny z indexování. |
Vlastnosti v rámci zahrnutých cest
Vlastnost | Popis |
---|---|
Cestu | Cesta, pro kterou se chování indexování vztahuje. Cesty indexu začínají kořenem (/) a obvykle končí ? Zástupný operátor, který označuje, že existuje více možných hodnot pro předponu. Pokud například chcete zobrazit příkaz SELECT * FROM Families F WHERE F.familyName = "Andersen", musíte zahrnout cestu indexu pro /familyName/? v zásadách indexu kolekce. Cesty indexu mohou také použít zástupný operátor * k určení chování pro cesty rekurzivně pod předponou. Například /payload/* se dá použít k zahrnutí všeho v datové části z indexování. |
Datatype | Jedná se o datový typ, pro který se chování indexování používá. Může to být Řetězec, Číslo, Bod, Mnohoúhelník nebo LineString. Logické hodnoty a hodnoty null se automaticky indexují. |
Druhu | Typ indexu. Indexy hash jsou užitečné pro porovnávání rovnosti, zatímco indexy rozsahů jsou užitečné pro rovnost, porovnávání rozsahů a řazení. Prostorové indexy jsou užitečné pro prostorové dotazy. |
Přesnost | Přesnost indexu. Může být nastaven na -1 pro maximální přesnost nebo mezi 1-8 pro číslo a 1-100 pro řetězec. Neplatí pro datové typy Point, Polygon a LineString . |
Vlastnosti ve vyloučených cestách
Vlastnost | Popis |
---|---|
Cestu | Cesta, která je vyloučena z indexování. Cesty indexu začínají kořenovým znakem (/) a obvykle končí zástupným operátorem * . Například /payload/* lze použít k vyloučení všeho v rámci vlastnosti datové části z indexování. |
Vlastnosti pod klíčem oddílu
Vlastnost | Popis |
---|---|
Cestu | Pole cest, pomocí kterých lze data v kolekci rozdělit. Cesty nesmí obsahovat zástupný znak ani koncové lomítko. Například vlastnost JSON AccountNumber je určená jako /AccountNumber. Pole musí obsahovat pouze jednu hodnotu. |
Druhu | Algoritmus použitý k dělení. Podporuje se pouze hodnota Hash . |
Zásady indexování
Když se dokumenty přidávají do kolekce, Cosmos DB ve výchozím nastavení automaticky indexuje dokumenty, což umožňuje dotazování na dokumenty. Zásady indexování nakonfigurujete na úrovni kolekce. Vzhledem k tomu, že zásady indexování jsou nastavené na úrovni kolekce, může mít každá kolekce v databázi jiné zásady indexování.
Zásady indexování pro kolekci můžou určovat následující možnosti:
Automaticky: Můžete zvolit, jestli má kolekce automaticky indexovat všechny dokumenty, nebo ne. Ve výchozím nastavení se všechny dokumenty indexují automaticky, ale můžete ho vypnout. Když je indexování vypnuté, můžete k dokumentům přistupovat jenom prostřednictvím jejich odkazů na sebe nebo pomocí dotazů pomocí ID.
Režim indexování: Můžete si vybrat mezi synchronními (konzistentními), asynchronními (opožděné) aktualizacemi indexu a bez indexování (žádné). Ve výchozím nastavení se index aktualizuje synchronně při každé akci vložení, nahrazení nebo odstranění dokumentu v kolekci. Tato aktualizace umožňuje, aby dotazy bez jakéhokoli zpoždění dodržovaly stejnou úroveň konzistence, jakou čte dokument, aby index dohoněl.
Typy a přesnost indexů: Typ nebo schéma použité pro položky indexu má přímý vliv na úložiště a výkon indexu. U schématu s vyšší přesností jsou dotazy obvykle rychlejší. Existuje však také vyšší režie úložiště pro index. Volba nižší přesnosti znamená, že během provádění dotazu může být potřeba zpracovat více dokumentů, ale režijní náklady na úložiště budou nižší.
Cesty k indexům: V dokumentech můžete zvolit, které cesty musí být zahrnuté nebo vyloučené z indexování, což může nabídnout vyšší výkon zápisu a nižší úložiště indexů ve scénářích, kdy jsou vzory dotazů známé předem.
Následující tabulky ukazují některé ukázkové cesty indexování a způsob jejich použití v dotazech.
Vlastnost | Popis |
---|---|
/* | Výchozí cesta pro kolekci. Rekurzivní a platí pro celý strom dokumentů. |
/Prop/? | Cesta indexu požadovaná pro zpracování dotazů podobných následujícímu (s typy hash nebo rozsahu): SELECT * FROM kolekce c WHERE c.prop = "value" SELECT * FROM kolekce c WHERE c.prop > 5 SELECT * FROM kolekce c ORDER BY c.prop |
/Prop/* | Cesta indexu pro všechny cesty pod zadaným popiskem. Funguje s následujícími dotazy: SELECT * FROM kolekce c WHERE c.prop = "value" SELECT * FROM kolekce c WHERE c.prop.subprop > 5 SELECT * FROM kolekce c WHERE c.prop.subprop.nextprop = "value" SELECT * FROM kolekce c ORDER BY c.prop |
/rekvizitu/[]/? | Cesta indexu požadovaná pro obsluhu iterace a dotazů JOIN pro pole skalárů, jako jsou ["a", "b", "c"]: SELECT tag FROM tag IN collection.props WHERE tag = "value" SELECT tag FROM collection c JOIN tag IN c.props WHERE tag > 5 |
/props/[]/subprop/? | Cesta k indexu požadovaná pro obsluhu iterace a dotazů JOIN pro pole objektů, jako jsou [{subprop: "a"}, {subprop: "b"}]: SELECT tag FROM tag IN collection.props WHERE tag.subprop = "value" SELECT tag FROM kolekce c JOIN tag IN c.props WHERE tag.subprop = "value" |
/prop/subprop/? | Cesta indexu požadovaná pro obsluhu dotazů (s typy hash nebo rozsahu): SELECT * FROM kolekce c WHERE c.prop.subprop = "value" SELECT * FROM kolekce c WHERE c.prop.subprop > 5 SELECT * FROM kolekce c ORDER BY c.prop.subprop |
Další informace o zásadách indexování služby Cosmos DB najdete v tématu Zásady indexování služby Cosmos DB. Pro účely dokumentace k rozhraní REST API se ve všech příkladech používá automatické indexování.
Nabídky a úrovně výkonu
Při vytvoření kolekce se vytvoří také prostředek Nabídky, který odkazuje na vytvořenou kolekci. Prostředek Nabídky obsahuje konfigurační informace o propustnosti kolekce v jednotkách žádostí za sekundu a jednotkách žádostí za minutu.
Úroveň výkonu kolekce je možné změnit pomocí možnosti Nahradit nabídku.
Úlohy
S kolekcemi dokumentů můžete provádět následující akce: