Egyedi kulcskorlátozások az Azure Cosmos DB-ben
A KÖVETKEZŐRE VONATKOZIK: NoSQL
Az egyedi kulcsok adatintegritási réteget adnak hozzá egy Azure Cosmos DB-tárolóhoz. Azure Cosmos DB-tároló létrehozásakor egyedi kulcsszabályzatot hozhat létre. Egyedi kulcsokkal győződjön meg arról, hogy egy logikai partíció egy vagy több értéke egyedi. A partíciókulcsonkénti egyediséget is garantálhatja.
Miután létrehozott egy egyedi kulcsszabályzattal rendelkező tárolót, a rendszer megakadályozza egy új vagy egy meglévő elem frissítését, amely duplikátumot eredményez egy logikai partíción belül, az egyedi kulcskorlátozás által meghatározott módon. Az egyedi kulccsal kombinált partíciókulcs garantálja egy elem egyediségét a tároló hatókörén belül.
Vegyük például egy Azure Cosmos DB-tárolót Email address
egyedi kulcskényszerként és CompanyID
partíciókulcsként. Ha a felhasználó e-mail-címét egyedi kulccsal konfigurálja, minden elem egyedi e-mail-címmel rendelkezik egy adott CompanyID
. Két elem nem hozható létre duplikált e-mail-címmel és ugyanazzal a partíciókulcs-értékkel. Az Azure Cosmos DB NoSQL-hez készült API-jában az elemek JSON-értékekként vannak tárolva. Ezek a JSON-értékek megkülönböztetik a kis- és nagybetűket. Ha egyedi kulcsként kiválaszt egy tulajdonságot, beszúrhat kis- és nagybetűkre érzékeny értékeket. Ha például egy egyedi kulcs van definiálva a névtulajdonságon, a "Gaby" eltér a "gaby" értéktől, és mindkettőt beszúrhatja a tárolóba.
Ha ugyanazzal az e-mail-címmel, de nem ugyanazzal az utónévvel, vezetéknévvel és e-mail-címmel szeretne elemeket létrehozni, adjon hozzá további elérési utakat az egyedi kulcsszabályzathoz. Ahelyett, hogy csak az e-mail-cím alapján hoz létre egyedi kulcsot, létrehozhat egy egyedi kulcsot az utónév, a vezetéknév és az e-mail-cím kombinációjával. Ez a kulcs összetett egyedi kulcsként ismert. Ebben az esetben a három érték mindegyik egyedi kombinációja engedélyezett egy adott CompanyID
értéken belül.
A tároló például az alábbi értékeket tartalmazó elemeket tartalmazhat, ahol minden elem betartja az egyedi kulcskényszert.
Cégazonosító | Keresztnév | Vezetéknév | E-mail-cím |
---|---|---|---|
Contoso | Gaby | Duperre | gaby@contoso.com |
Contoso | Gaby | Duperre | gaby@fabrikam.com |
Fabrikam | Gaby | Duperre | gaby@fabrikam.com |
Fabrikam | Ivan | Duperre | gaby@fabrikam.com |
Fabrkam | Duperre | gaby@fabraikam.com | |
Fabrkam | gaby@fabraikam.com |
Ha egy másik elemet próbál beszúrni az előző táblázatban felsorolt kombinációkkal, hibaüzenet jelenik meg. A hiba azt jelzi, hogy az egyedi kulcskényszer nem teljesült. Vagy visszaküldött üzenetként kap Resource with specified ID or name already exists
Resource with specified ID, name, or unique index already exists
.
Egyedi kulcs definiálása
Egyedi kulcsokat csak Azure Cosmos DB-tároló létrehozásakor definiálhat. Az egyedi kulcsok egy logikai partícióra terjednek ki. Az előző példában, ha a tárolót az irányítószám alapján particionálja, mindegyik logikai partícióban ugyanazokat az elemeket használhatja. Egyedi kulcsok létrehozásakor vegye figyelembe a következő tulajdonságokat:
Nem frissíthet meglévő tárolót egy másik egyedi kulcs használatára. Más szóval, ha egy tároló egyedi kulcsszabályzattal jön létre, a szabályzat nem módosítható.
Egy meglévő tároló egyedi kulcsának beállításához hozzon létre egy új tárolót az egyedi kulcskényszerrel. A megfelelő adatmigrálási eszközzel helyezze át az adatokat a meglévő tárolóból az új tárolóba. SQL-tárolók esetén a tárolómásolási feladatokat használva helyezze át az adatokat. MongoDB-tárolók esetén mongoimport.exe vagy mongorestore.exe használatával helyezze át az adatokat.
Az egyedi kulcsszabályzatok legfeljebb 16 elérésiút-értékkel rendelkezhetnek. Az értékek
/firstName
lehetnek például az ,/lastName
és/address/zipCode
a . Minden egyedi kulcsszabályzat legfeljebb 10 egyedi kulcskorlátozással vagy kombinációval rendelkezhet. Az előző példában az utónév, a vezetéknév és az e-mail-cím együttes használata egyetlen korlátozás. Ez a korlátozás a 16 lehetséges elérési út közül 3-at használ.Ha egy tároló egyedi kulcsszabályzattal rendelkezik, az elem létrehozásához, frissítéséhez és törléséhez szükséges kérelemegység-díjak valamivel magasabbak lesznek.
A ritka egyedi kulcsok nem támogatottak. Ha hiányzik néhány egyedi elérésiút-érték, azokat null értékként kezeli a rendszer, amely részt vesz az egyediség korlátozásában. Ezért csak egyetlen elem lehet null értékű, hogy megfeleljen ennek a kényszernek.
Az egyedi kulcsnevek megkülönböztetik a kis- és nagybetűket. Vegyük például egy tárolót, amelynek az egyedi kulcskorlátja a következő
/address/zipcode
. Ha az adatoknak van egy nevesítettZipCode
mező, az Azure Cosmos DB a "null" értéket szúrja be egyedi kulcsként, mertzipcode
nem ugyanaz, mintZipCode
. A kis- és nagybetűk érzékenysége miatt az irányítószámmal rendelkező összes többi rekord nem szúrható be, mert az ismétlődő "null" megsérti az egyedi kulcskényszert.
Következő lépések
- További információ a logikai partíciókról
- Ismerje meg , hogyan definiálhat egyedi kulcsokat tároló létrehozásakor
- Kapacitástervezést szeretne végezni az Azure Cosmos DB-be való migráláshoz? A kapacitástervezéshez használhatja a meglévő adatbázisfürt adatait.
- Ha csak annyit tud, hogy hány virtuális mag és kiszolgáló található a meglévő adatbázisfürtben, olvassa el a kérelemegységek becslését virtuális magok vagy vCPU-k használatával
- Ha ismeri az aktuális adatbázis számítási feladataira vonatkozó tipikus kérési arányokat, olvassa el a kérelemegységek becslését az Azure Cosmos DB kapacitástervezővel