Gyűjtemények
Az Azure Cosmos DB egy globálisan elosztott többmodelles adatbázis, amely támogatja a dokumentum-, gráf- és kulcsértékű adatmodelleket. Ebben a szakaszban a gyűjtemény erőforrásainak létrehozására, lekérdezésére és kezelésére van lehetőség az SQL API REST-en keresztüli használatával.
A REST API támogatja az adatbázisfiókban lévő erőforrások alapszintű CRUD-műveleteit. A gyűjtemény JSON-dokumentumok és a hozzá tartozó JavaScript-alkalmazáslogika tárolója, azaz tárolt eljárások, eseményindítók és felhasználó által definiált függvények. Ez a témakör a dokumentumgyűjtemények kezeléséhez használt REST-műveleteket ismerteti.
Megjegyzés
Ezek az API-referenciacikkek bemutatják, hogyan hozhat létre erőforrásokat az Azure Cosmos DB adatsík API-val. Az adatsík API-val olyan alapvető beállításokat konfigurálhat, mint például az indexelési szabályzat, a partíciókulcsok ugyanúgy, mint a Cosmos DB SDK-k esetében. Ha teljes körű szolgáltatástámogatásra van szüksége az összes Azure Cosmos DB-erőforráshoz, javasoljuk, hogy használja a Cosmos DB erőforrás-szolgáltatót.
A gyűjtemény egy Azure Cosmos DB-tárolóra van leképzve. Ezért ez egy számlázható entitás, ahol a költségeket a másodpercenkénti kérelemegységekben kifejezett kiosztott átviteli sebesség határozza meg. A gyűjtemények egy vagy több partícióra/kiszolgálóra terjedhetnek ki, és vertikálisan fel- és leskálázhatók az átviteli sebesség tekintetében. A gyűjteményeket az Azure Cosmos DB automatikusan particionálja egy vagy több fizikai kiszolgálóra.
Mivel a gyűjtemény rendszererőforrás, rögzített sémával rendelkezik. A gyűjtemény URI-útvonalát az erőforrásmodellben lévő collok jelölik.
Az alábbi példa egy gyűjtemény JSON-definícióját szemlélteti:
{
"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/"
}
Tulajdonság | Leírás |
---|---|
id | Ez az új gyűjteményt azonosító egyedi név. |
indexelésPolicy | Ez a gyűjtemény indexelési házirend-beállításai. |
partitionKey | Ez a gyűjtemény particionálási konfigurációs beállításai. |
_Megszabadulni | Ez egy rendszer által létrehozott tulajdonság. Az erőforrás-azonosító (_rid) egy egyedi azonosító, amely az erőforrás-modell erőforrás-verménként is hierarchikus. Belsőleg használják az engedélyerőforrás elhelyezésére és navigációjára. |
_Ts | Ez egy rendszer által létrehozott tulajdonság. Meghatározza az erőforrás utolsó frissített időbélyegét. Az érték egy időbélyeg. |
_Önálló | Ez egy rendszer által létrehozott tulajdonság. Ez az erőforrás egyedi címezhető URI-ja. |
_Etag | Ez egy rendszer által létrehozott tulajdonság, amely az optimista egyidejűség-vezérléshez szükséges erőforrás-etagot jelöli. |
_Bizonylat | Ez egy rendszer által létrehozott tulajdonság, amely meghatározza a dokumentum-erőforrás címzhető elérési útját. |
_sprocs | Ez egy rendszer által létrehozott tulajdonság, amely meghatározza a tárolt eljárások (sprocs) erőforrásának címezhető elérési útját. |
_Eseményindítók | Ez egy rendszer által létrehozott tulajdonság, amely meghatározza az eseményindítók erőforrásának címezhető elérési útját. |
_udfs | Ez egy rendszer által létrehozott tulajdonság, amely meghatározza a felhasználó által definiált függvények (udfs) erőforrásának címezhető elérési útját. |
_Konfliktusok | Ez egy rendszer által létrehozott tulajdonság, amely meghatározza az ütközések erőforrásának címezhető elérési útját. Egy gyűjteményen belüli erőforráson végzett művelet során, ha ütközés történik, a felhasználók megvizsgálhatják az ütköző erőforrásokat egy GET művelet végrehajtásával az ütközések URI-útvonalán. |
Tulajdonságok az Indexelési szabályzat alatt
Tulajdonság | Leírás |
---|---|
automatikus | Azt jelzi, hogy az automatikus indexelés be van-e kapcsolva vagy ki van-e kapcsolva. Az alapértelmezett érték Igaz, így minden dokumentum indexelve van. Ha hamis értékre állítja az értéket, az lehetővé teszi az indexelési útvonalak manuális konfigurálását. |
indexelésMode | Alapértelmezés szerint az indexelési mód Konzisztens. Ez azt jelenti, hogy az indexelés szinkron módon történik a dokumentumok beszúrása, cseréje vagy törlése során. Ha azt szeretné, hogy az indexelés aszinkron módon történjen, állítsa az indexelési módot lusta értékre. |
includedPaths | Az indexelendő dokumentumútvonalakat tartalmazó tömb. Alapértelmezés szerint két elérési út található: a / elérési út, amely meghatározza, hogy az összes dokumentumútvonalat indexelni kell, és a _ts elérési utat, amely indexel egy időbélyegtartomány összehasonlításához. |
excludedPaths | Az indexelésből kizárandó dokumentumútvonalakat tartalmazó tömb. |
Tulajdonságok a Belefoglalt elérési utak területen
Tulajdonság | Leírás |
---|---|
Elérési út | Elérési út, amelyre az indexelési viselkedés vonatkozik. Az indexelési útvonalak a gyökérrel (/) kezdődnek, és általában a ? helyettesítő karakter operátor, amely azt jelöli, hogy az előtagnak több lehetséges értéke is lehet. Ha például a SELECT * FROM Families F WHERE F.familyName = "Andersen" parancsot szeretné kiszolgálni, a /familyName/? a gyűjtemény indexszabályzatában. Az index elérési útjai a * helyettesítő karakter operátorral is megadhatják az előtag alatti rekurzív elérési utak viselkedését. A /payload/* például az indexelésből származó hasznos adattulajdonság alá tartozó összes adat belefoglalására használható. |
Adattípus | Ez az az adattípus, amelyre az indexelési viselkedést alkalmazza a rendszer. Lehet sztring, szám, pont, sokszög vagy vonalsztring. A logikai értékeket és a null értékeket a rendszer automatikusan indexeli |
Fajta | Az index típusa. A kivonatindexek egyenlőségi összehasonlításokhoz hasznosak, míg a tartományindexek az egyenlőség, a tartomány-összehasonlítás és a rendezés szempontjából hasznosak. A térbeli indexek hasznosak térbeli lekérdezésekhez. |
Precíziós | Az index pontossága. A maximális pontosság érdekében a -1 értékre, a Szám értéknél 1–8, a Sztring esetében pedig 1–100 értékre állítható be. Pont-, sokszög- és LineString-adattípusokhoz nem alkalmazható. |
Tulajdonságok a Kizárt elérési utak területen
Tulajdonság | Leírás |
---|---|
Elérési út | Az indexelésből kizárt elérési út. Az indexútvonalak a gyökérrel (/) kezdődnek, és általában a * helyettesítő karakterrel végződnek. A /payload/* például a hasznos adat tulajdonság alatt lévő összes elem kizárására használható az indexelésből. |
Tulajdonságok a partíciókulcs alatt
Tulajdonság | Leírás |
---|---|
Elérési út | Olyan elérési utak tömbje, amelyek segítségével a gyűjteményen belüli adatok particionálhatók. Az elérési utak nem tartalmazhatnak helyettesítő karaktert vagy záró perjelet. Az "AccountNumber" JSON-tulajdonság például "/AccountNumber" néven van megadva. A tömbnek csak egyetlen értéket kell tartalmaznia. |
Fajta | A particionáláshoz használt algoritmus. Csak a kivonatok támogatottak. |
Indexelési szabályzat
A dokumentumok gyűjteményhez való hozzáadásakor a Cosmos DB alapértelmezés szerint automatikusan indexeli a dokumentumokat, így lehetővé teszi a dokumentumok lekérdezését. A gyűjtemény szintjén konfigurálja az indexelési szabályzatot. Mivel az indexelési szabályzat a gyűjtemény szintjén van beállítva, az adatbázison belüli összes gyűjtemény különböző indexelési szabályzatokkal rendelkezhet.
A gyűjtemény indexelési szabályzata a következő beállításokat adhatja meg:
Automatikus: Megadhatja, hogy a gyűjtemény automatikusan indexelje-e az összes dokumentumot. Alapértelmezés szerint a rendszer minden dokumentumot automatikusan indexel, de kikapcsolhatja azt. Ha az indexelés ki van kapcsolva, a dokumentumok csak az önhivatkozásaikon vagy az azonosítót használó lekérdezéseken keresztül érhetők el.
Indexelési mód: Választhat a szinkron (konzisztens), az aszinkron (lusta) indexfrissítések és a nincs indexelés között. Alapértelmezés szerint az index szinkron módon frissül a gyűjtemény egy dokumentumán végrehajtott minden beszúrási, csere- vagy törlési műveletnél. Ez a frissítés lehetővé teszi, hogy a lekérdezések ugyanolyan konzisztenciaszintet érhessenek el, mint a dokumentum beolvasotté, és az index késlekedés nélkül felzárkózik.
Indextípusok és pontosság: Az indexbejegyzésekhez használt típus vagy séma közvetlen hatással van az indextárolásra és a teljesítményre. A nagyobb pontosságot használó sémák esetében a lekérdezések általában gyorsabbak. Az index tárolási többletterhelése azonban magasabb. Ha kisebb pontosságot ad meg, az azt jelenti, hogy több dokumentumot kell feldolgozni a lekérdezés végrehajtása során, de a tárterület többletterhelése alacsonyabb lesz.
Indexelési útvonalak: A dokumentumokban kiválaszthatja, hogy mely elérési utakat kell belefoglalni vagy kizárni az indexelésből, ami jobb írási teljesítményt és alacsonyabb indextárolást kínálhat olyan esetekben, amikor a lekérdezési minták előre ismertek.
Az alábbi táblázatok néhány indexelési mintaútvonalat mutatnak be, és azt, hogy hogyan használják őket a lekérdezésekben.
Tulajdonság | Leírás |
---|---|
/* | A gyűjtemény alapértelmezett elérési útja. Rekurzív, és a teljes dokumentumfára vonatkozik. |
/Prop/? | Az alábbihoz hasonló lekérdezések kiszolgálásához szükséges indexútvonal (kivonat vagy tartománytípus esetén): SELECT * FROM gyűjtemény c WHERE c.prop = "value" SELECT * FROM collection c WHERE c.prop > 5 SELECT * FROM collection c ORDER BY c.prop |
/Prop/* | A megadott címke alatti összes elérési út indexelési útvonala. A következő lekérdezésekkel működik: SELECT * FROM gyűjtemény c WHERE c.prop = "value" SELECT * FROM collection c WHERE c.prop.subprop > 5 SELECT * FROM collection c WHERE c.prop.subprop.nextprop = "value" SELECT * FROM collection c ORDER BY c.prop |
/props/[]/? | Indexútvonal szükséges az iteráció és a JOIN lekérdezések skaláris tömbök, például ["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/? | Az iteráció és a JOIN lekérdezések olyan objektumtömbökhöz való kiszolgálásához szükséges indexútvonal, mint a [{subprop: "a"}, {subprop: "b"}]: SELECT címke FROM címke IN collection.props WHERE tag.subprop = "value" SELECT tag FROM collection c JOIN tag IN c.props WHERE tag.subprop = "value" |
/prop/subprop/? | A lekérdezések kiszolgálásához szükséges indexútvonal (kivonat vagy tartománytípus esetén): SELECT * FROM collection c WHERE c.prop.subprop = "value" SELECT * FROM collection c WHERE c.prop.subprop > 5 SELECT * FROM collection c ORDER BY c.prop.subprop |
További információ a Cosmos DB indexelési szabályzatairól: Cosmos DB indexelési szabályzatok. A REST API dokumentációjának alkalmazásában minden példa automatikus indexelést használ.
Ajánlatok és teljesítményszintek
A gyűjtemény létrehozásakor létrejön egy Ajánlat erőforrás is, amely a létrehozott gyűjteményre hivatkozik. Az Ajánlat erőforrás konfigurációs információkat tartalmaz a gyűjtemény átviteli sebességéről a kérelemegységek másodpercenkénti és a kérelemegységek percenkénti mennyiségében.
A gyűjtemény teljesítményszintje az Ajánlat cseréje funkcióval módosítható.
Feladatok
Dokumentumgyűjteményekkel a következőket teheti: