Szintetikus partíciókulcs létrehozása

A KÖVETKEZŐRE VONATKOZIK: NoSQL

Az ajánlott eljárás, ha egy partíciókulcs 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 az eszközazonosító vagy a dátum alapján szeretné particionolni a tárolót. 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

Egy másik lehetséges stratégia a számítási feladatok egyenletesebb elosztására, ha a partíciókulcs értékének végén hozzáfűz egy véletlenszerű számot. 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 1 és 400 közötti véletlenszerű számot, és utótagként összefűzheti a dátumhoz. 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, keresztül 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ótag-stratégia nagy mértékben javíthatja az írási átviteli sebességet, 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ótag-stratégiát. Ahelyett, hogy véletlenszerű számot használna az elemek partíciók közötti elosztásához, használjon egy olyan számot, amelyet a rendszer a lekérdezni kívánt elem alapján számít ki.

Vegyük az előző példát, ahol egy tároló dátumot használ partíciókulcsként. Most tegyük fel, hogy mindegyik elem rendelkezik egy Vehicle-Identification-Number (VIN) attribútummal, amelyet el szeretnénk érni. Tegyük fel továbbá, hogy gyakran futtat lekérdezéseket, hogy a dátum mellett elemeket is találjon.VIN Mielőtt az alkalmazás beírja az elemet a tárolóba, kiszámolhatja a kivonat utótagját a VIN alapján, és hozzáfűzheti a partíciókulcs dátumához. A számítás egy 1 és 400 közötti számot generálhat, amely egyenletesen oszlik el. 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 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ási koncepcióról az alábbi cikkekben tudhat meg többet: