Megosztás a következőn keresztül:


Szintetikus partíciókulcs létrehozása

A KÖVETKEZŐRE VONATKOZIK: NoSQL

Ajánlott olyan partíciókulcsot létrehozni, amely számos különböző értékkel rendelkezik, például több száz vagy ezres értékekkel. A cél az adatok és a számítási feladatok egyenletes elosztása az ezekhez a partíciókulcs-értékekhez társított elemek között. Ha egy ilyen tulajdonság nem létezik az adatokban, létrehozhat egy szintetikus partíciókulcsot. Ez a dokumentum számos alapvető technikát ismertet az Azure Cosmos DB-tároló szintetikus partíciókulcsának létrehozásához.

Egy elem több tulajdonságának összefűzése

Partíciókulcsot úgy hozhat létre, hogy több tulajdonságértéket egyetlen mesterséges partitionKey tulajdonságba egyesít. Ezeket a kulcsokat szintetikus kulcsoknak nevezzük. Vegyük például a következő példadokumentumot:

{
"deviceId": "abc-123",
"date": 2018
}

Az előző dokumentum esetében az egyik lehetőség a /deviceId vagy a /date partíciókulcsként való beállítása. Ezt a lehetőséget akkor használja, ha a tárolót eszközazonosító vagy dátum alapján szeretné particionolni. Egy másik lehetőség, ha ezt a két értéket egy partíciókulcsként használt szintetikus partitionKey tulajdonságba fűzi össze.

{
"deviceId": "abc-123",
"date": 2018,
"partitionKey": "abc-123-2018"
}

Valós idejű forgatókönyvekben több ezer elem lehet egy adatbázisban. A szintetikus kulcs manuális hozzáadása helyett definiáljon ügyféloldali logikát az értékek összefűzéséhez, és szúrja be a szintetikus kulcsot az Azure Cosmos DB-tárolók elemeibe.

Partíciókulcs használata véletlenszerű utótaggal

A számítási feladat egyenletesebb elosztásának másik lehetséges stratégiája egy véletlenszerű szám hozzáfűzése a partíciókulcs értékének végén. Ha így osztja el az elemeket, párhuzamos írási műveleteket hajthat végre a partíciók között.

Ilyen például, ha egy partíciókulcs dátumot jelöl. Választhat egy véletlenszerű számot 1 és 400 között, és összefűzheti a dátum utótagjaként. Ez a metódus olyan partíciókulcs-értékeket eredményez, mint a 2018-08-09.1,2018-08-09.2, és így tovább.2018-08-09.400 Mivel véletlenszerűen válogatja össze a partíciókulcsot, a tároló írási műveletei minden nap egyenletesen oszlanak el több partíció között. Ez a módszer jobb párhuzamosságot és általánosan magasabb átviteli sebességet eredményez.

Partíciókulcs használata előre számított utótagokkal

A véletlenszerű utótagstratégia nagy mértékben javíthatja az írási teljesítményt, de nehéz beolvasni egy adott elemet. Nem ismeri az elem írásakor használt utótagértéket. Az egyes elemek könnyebb olvashatóságához használja az előre kiszámított utótagok stratégiáját. Ahelyett, hogy véletlenszerű számot használna az elemek partíciók közötti elosztásához, használjon egy számot, amely a lekérdezés alapjául szolgáló érték alapján van kiszámítva.

Vegyük az előző példát, ahol egy tároló dátumot használ partíciókulcsként. Tegyük fel, hogy minden elem rendelkezik egy Vehicle-Identification-Number (VIN) attribútummal, amelyhez hozzá szeretnénk férni. Tegyük fel továbbá, hogy gyakran futtat lekérdezéseket az elemek dátum szerinti VINkereséséhez. Mielőtt az alkalmazás a tárolóba írja az elemet, kiszámíthat egy kivonat utótagot a VIN alapján, és hozzáfűzheti a partíciókulcs dátumához. A számítás egyenletesen elosztott 1 és 400 közötti számot eredményezhet. Ez az eredmény hasonló a véletlenszerű utótagstratégiával előállított eredményekhez. A partíciókulcs értéke ezután a számított eredménnyel összefűzött dátum.

Ezzel a stratégiával az írások egyenletesen oszlanak el a partíciókulcs értékei között és a partíciók között. Egyszerűen elolvashat egy adott elemet és dátumot, mert kiszámíthatja egy adott Vehicle-Identification-Numberelem partíciókulcs-értékét. Ennek a módszernek az az előnye, hogy elkerülheti egyetlen gyakori elérésű partíciókulcs, azaz egy olyan partíciókulcs létrehozását, amely az összes számítási feladatot igénybe veszi.

Következő lépések

A particionálás fogalmáról az alábbi cikkekben olvashat bővebben: