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


Partíciók egyesítése az Azure Cosmos DB-ben (előzetes verzió)

A KÖVETKEZŐKRE VONATKOZIK: NoSQL MongoDB

Az Azure Cosmos DB(előzetes verzió) partícióinak egyesítése lehetővé teszi a tárolóhoz használt fizikai partíciók számának csökkentését. Az egyesítéssel az átviteli sebességben töredezett tárolók (partíciónként alacsony RU/s) vagy tárolók (partíciónként alacsony tárterülettel) átdolgozhatják a fizikai partícióikat. Ha egy tároló átviteli sebességét felskálázták, és vissza kell skálázni, az egyesítés segíthet megoldani az átviteli sebesség töredezettségével kapcsolatos problémákat. Ugyanennyi kiosztott RU/s esetén a kevesebb fizikai partíció azt jelenti, hogy minden fizikai partíció többet kap a teljes RU/s-ból. A partíciók minimalizálása csökkenti a sebességkorlátozás esélyét, ha nagy mennyiségű adatot távolít el egy tárolóból, és a partíciónkénti RU/s alacsony. Az egyesítés segíthet a nem használt vagy üres partíciók kiürítésében, és hatékonyan oldhatja meg a tár töredezettségével kapcsolatos problémákat.

Első lépések

A partícióegyesítés használatának megkezdéséhez lépjen az Azure Cosmos DB-fiók Szolgáltatások lapjára. Válassza ki és engedélyezze a Partícióegyesítés (előzetes verzió) funkciót.

A funkció engedélyezése előtt ellenőrizze, hogy az Azure Cosmos DB-fiók(ok) megfelelnek-e az előzetes verziójú jogosultsági feltételeknek. A funkció engedélyezését követően 15–20 perc alatt érvénybe lép.

Figyelemfelhívás

Ha az egyesítés engedélyezve van egy fiókban, csak a .NET SDK 3.27.0-s vagy Java SDK >= 4.42.0-s vagy Azure Cosmos DB Spark-összekötő >= 4.18.0-s verziójából >érkező kérések lesznek engedélyezve a fiókon, függetlenül attól, hogy folyamatban vannak-e az egyesítések. A többi SDK-ból (régebbi .NET SDK, régebbi Java SDK, JavaScript SDK, Python SDK, go SDK) vagy nem támogatott összekötőkből (Azure Data Factory, Azure Search, Azure Functionsextension <= 3.x, Azure Stream Analytics stb.) érkező kérések le lesznek tiltva, és sikertelenek lesznek. Győződjön meg arról, hogy frissített egy támogatott SDK-verzióra, mielőtt engedélyezi a funkciót. A funkció engedélyezése vagy letiltása után 15–20 percet vehet igénybe a fiókba történő teljes propagálás. Ha azt tervezi, hogy a használata befejezése után letiltja a funkciót, 15-20 percig is tarthat. amíg a nem támogatott SDK-k és összekötők egyesítési kérései engedélyezve lesznek.

Képernyőkép a Szolgáltatások panelről és a Partícióegyesítés funkcióról.

Annak ellenőrzéséhez, hogy egy Azure Cosmos DB-fiók jogosult-e az előzetes verzióra, használhatja a beépített jogosultság-ellenőrzőt az Azure Portalon. Az Azure Cosmos DB-fiók áttekintési lapján keresse meg az Azure Portalon található problémák diagnosztizálását és megoldását –>Átviteli sebesség és skálázás –>Partícióegyesítés. Futtassa a Partícióegyesítés előzetes verziójának diagnosztika jogosultságának ellenőrzése parancsot.

Képernyőkép az átviteli sebességről és a tartalom skálázásáról a Problémák diagnosztizálása és megoldása lapon.

Képernyőkép az egyesítési jogosultság ellenőrzéséről az összes előzetes verziójú jogosultsági feltétel táblázatával.

Az egyesítendő tárolók azonosítása

A mindkét feltételnek megfelelő tárolók valószínűleg kihasználják a partíciók egyesítését:

  • 1. feltétel: Az aktuális ru/s fizikai partíciónként <3000 RU/s
  • 2. feltétel: Az aktuális átlagos tárterület GB-ban fizikai partíciónként <20 GB

Az 1. feltétel gyakran akkor fordul elő, ha korábban felskálázta az RU/s-t (gyakran adatbetöltéshez), és most stabil állapotban szeretné leskálázni a skálázást. A 2. feltétel gyakran akkor fordul elő, ha nagy mennyiségű adatot töröl/TTL-t töröl, és nem használt partíciókat hagy.

1. feltétel

Az aktuális ru/s fizikai partíciónkénti meghatározásához a Cosmos-fiókból lépjen a Metrikák elemre. Válassza ki a fizikai partíció átviteli sebességét , és szűrjön az adatbázisra és a tárolóra. A PhysicalPartitionId szerinti felosztás alkalmazása.

Az automatikus skálázást használó tárolók esetében ez a metrika az egyes fizikai partíciókon jelenleg kiosztott maximális RU/s-t mutatja. A manuális átviteli sebességet használó tárolók esetében ez a metrika az egyes fizikai partíciók manuális RU/s-ját jeleníti meg.

Az alábbi példában egy 5000 RU/s méretű automatikus skálázási tároló van kiépítve (500–5000 RU/s közötti skálázás). Öt fizikai partícióval rendelkezik, és mindegyik fizikai partíció 1000 RU/s értékkel rendelkezik.

Képernyőkép az Azure Monitor metrika fizikai partíciójának átviteli sebességéről az Azure Portalon.

2. feltétel

A fizikai partíciónkénti aktuális átlagos tárterület meghatározásához először keresse meg a tároló teljes tárterületét (adat- és indexét).

Navigáljon az Insights>Storage-adatok>és indexhasználat lapra. A teljes tárterület az adatok és az indexhasználat összege. Az alábbi példában a tároló összesen 74 GB tárterületet biztosít.

Képernyőkép az Azure Monitor Storage (data + index) metrikájáról az Azure Portal tárolóihoz.

Ezután keresse meg a fizikai partíciók teljes számát. Ez a metrika az 1. feltételben látott PhysicalPartitionThroughput diagramOn látható PhysicalPartitionIds különböző száma. Példánkban öt fizikai partícióval rendelkezünk.

Végül számítsa ki: Teljes tárterület GB-ban / fizikai partíciók száma. A példánkban átlagosan (74 GB/ öt fizikai partíció) = 14,8 GB fizikai partíciónként van.

Az 1. és a 2. feltételek alapján a tároló potenciálisan kihasználhatja a partíciók egyesítését.

Fizikai partíciók egyesítése

A PowerShellben a jelölő -WhatIf átadása után az Azure Cosmos DB szimulációt futtat, és visszaadja az egyesítés várt eredményét. Ez az eredmény annak ellenére jelenik meg, hogy maga az egyesítés nem fut. Ha a jelölő nincs átadva, az egyesítés az erőforráson fut. Ha elkészült, a parancs az egyesítés utáni fizikai partíciónkénti KB-ban adja ki az aktuális tárterületet.

Tipp.

Az egyesítés futtatása előtt ajánlott a kiosztott RU/s-t (manuális RU/s vagy automatikus skálázási maximális RU/s) a lehető legközelebb beállítani a kívánt állandó állapotú RU/s-hoz az egyesítés után, hogy a rendszer hatékony partícióelrendezést számítson ki.

Az Install-Module Az.CosmosDB modul telepítése előzetes funkciókkal engedélyezve.

$parameters = @{
    Name = "Az.CosmosDB"
    AllowPrerelease = $true
    Force = $true
}
Install-Module @parameters

A kiosztott átviteli sebességtárolók Invoke-AzCosmosDBSqlContainerMerge esetében a -WhatIf paraméterrel a művelet tényleges végrehajtása nélkül tekintheti meg az egyesítés előnézetét.

$parameters = @{
    ResourceGroupName = "<resource-group-name>"
    AccountName = "<cosmos-account-name>"
    DatabaseName = "<cosmos-database-name>"
    Name = "<cosmos-container-name>"
    WhatIf = $true
}
Invoke-AzCosmosDBSqlContainerMerge @parameters

Indítsa el az egyesítést úgy, hogy ugyanazt a parancsot futtatja a -WhatIf paraméter nélkül.

$parameters = @{
    ResourceGroupName = "<resource-group-name>"
    AccountName = "<cosmos-account-name>"
    DatabaseName = "<cosmos-database-name>"
    Name = "<cosmos-container-name>"
}
Invoke-AzCosmosDBSqlContainerMerge @parameters

Megosztott átviteli sebességű adatbázisok esetén indítsa el az egyesítést a következővelaz cosmosdb mongodb database merge: .

az cosmosdb mongodb database merge \
	--account-name '<cosmos-account-name>'                               
	--name '<cosmos-database-name>'                                
	--resource-group '<resource-group-name>'

Egyesítési műveletek figyelése

A partícióegyesítés egy hosszú ideig futó művelet, és nincs SLA arra, hogy mennyi ideig tart. Az idő a tárolóban lévő adatok mennyiségétől és a fizikai partíciók számától függ. Ajánlott legalább 5-6 órát engedélyezni az egyesítés befejezéséhez.

Amíg a partícióegyesítés fut a tárolón, ha módosítja a tároló beállításait (TTL, indexelési szabályzat, egyedi kulcsok stb.), a folyamatban lévő egyesítési művelet megszakad. Ha növeli a ru/s értékét az egyesítés futtatása közben, a folyamatban lévő egyesítési művelet megszakad, és a tároló ru/s értéke frissül az új értékkel. A kért kérelemegységtől függően előfordulhat, hogy a vertikális felskálázás azonnali vagy hosszabb időt vesz igénybe. Ha csökkenti a ru/s értéket, miközben az egyesítés fut, a ru/s azonnal frissül az új RU/s-ra. A folyamatban lévő egyesítés folytatódik, ugyanazzal a célpartíciószámmal, amely az egyesítés aktiválásakor beállított RU/s alapján történik. Ajánlott eljárásként érdemes megvárni, amíg az egyesítési művelet befejeződik, mielőtt módosítaná a tároló vagy az átviteli sebesség beállításait.

Azt, hogy az egyesítés még folyamatban van-e, a Tevékenységnaplóban ellenőrizheti a MongoDB-gyűjtemény fizikai partícióinak egyesítése vagy az SQL-tároló fizikai partícióinak egyesítése eseményekre szűrve.

Korlátozások

Az alábbi korlátozások jelenleg az egyesítési funkcióra vonatkoznak.

Előzetes verzióra vonatkozó jogosultsági feltételek

Az előzetes verzióban való regisztrációhoz az Azure Cosmos DB-fióknak meg kell felelnie az alábbi feltételeknek:

  • Az Azure Cosmos DB-fiók a NoSQL-hez vagy a MongoDB-hez készült API-t használja a =3.6-os verzióval >.
  • Az Azure Cosmos DB-fiók kiépített (manuális vagy automatikus skálázású) átvitelt használ. Az egyesítés nem vonatkozik a kiszolgáló nélküli fiókokra.
  • Az Azure Cosmos DB-fiók egy írási régiós fiók (a többrégiós írási fiókok esetében az egyesítés jelenleg nem támogatott).
  • Az Azure Cosmos DB-fiókja nem használja az alábbi funkciókat:
  • Ha a NoSQL-hez készült API-t használja, az alkalmazásnak az Azure Cosmos DB .NET v3 SDK-t (3.27.0-s vagy újabb verzió) vagy a Java v4 SDK-t (4.42.0-s vagy újabb verzió) kell használnia. Ha az egyesítési előnézet engedélyezve van a fiókjában, a fiók nem fogadja el a nem .NET/Java SDK-któl vagy a régebbi .NET/Java SDK-verzióktól küldött kéréseket.
    • A szolgáltatás MongoDB-hez készült API-val történő használatára nem vonatkoznak SDK- és illesztőkövetelmények.
  • Az Azure Cosmos DB-fiókja jelenleg nem támogatott összekötőket használ:
    • Azure Data Factory
    • Azure Stream Analytics
    • Logic Apps
    • Azure Functions-bővítmény <= 3.x (Az Azure Functions 4.0-s és újabb bővítménye támogatott)
    • Azure Search
    • Azure Cosmos DB Spark-összekötő < 4.18.0
    • Bármely harmadik féltől származó kódtár vagy eszköz, amely függ egy olyan Azure Cosmos DB SDK-tól, amely nem .NET v3 SDK >= v3.27.0 vagy Java v4 SDK >= 4.42.0

Fiókerőforrások és konfiguráció

  • Az egyesítés csak a NoSQL- és MongoDB-fiókokhoz készült API-fiókokhoz érhető el. A MongoDB-fiókok api-jának a MongoDB-fiók verziójának 3.6-os vagy újabbnak kell lennie.
  • Az egyesítés csak egyrégiós írási fiókokhoz érhető el. A többrégiós írási fiók támogatása nem érhető el.
  • Az egyesítési funkciót használó fiókok nem használhatják ezeket a funkciókat is (ha ezeket a szolgáltatásokat egyesítéssel engedélyezett fiókhoz adják hozzá, a fiók nem tudja egyesíteni az erőforrásokat):
  • A tárolók egyesítése után nem olvasható be a változáscsatorna a kezdési időponttal. Ennek a funkciónak a támogatása a jövőben várható.

SDK-követelmények (csak NoSQL-hez készült API)

Az egyesítési funkcióval rendelkező fiókok csak akkor támogatottak, ha a .NET v3 SDK vagy a Java v4 SDK legújabb verzióját használja. Ha a funkció engedélyezve van a fiókjában (függetlenül attól, hogy az egyesítést futtatja-e), csak a támogatott SDK-t kell használnia a fiókkal. A többi SDK-ból vagy korábbi verzióból küldött kérések nem fogadhatók el. Amíg a támogatott SDK-t használja, az alkalmazás továbbra is futtatható, amíg az egyesítés folyamatban van.

Keresse meg a támogatott SDK legújabb verzióját:

SDK Támogatott verziók Csomagkezelő hivatkozás
.NET SDK v3 >= 3.27.0 https://www.nuget.org/packages/Microsoft.Azure.Cosmos
Java SDK v4 >= 4.42.0 https://mvnrepository.com/artifact/com.azure/azure-cosmos

A jövőben további SDK-k támogatását tervezik.

Tipp.

Az előzetes verzióra való regisztráció előtt győződjön meg arról, hogy az alkalmazás frissítve lett egy kompatibilis SDK-verzió használatára. Ha örökölt SDK-t használ, kövesse a megfelelő migrálási útmutatót:

Nem támogatott összekötők

Ha regisztrál az előzetes verzióban, az alábbi összekötők sikertelenek lesznek.

  • Azure Data Factory ¹
  • Azure Stream Analytics ¹
  • Logic Apps ¹
  • Azure Functions-bővítmény <= 3.x (Az Azure Functions 4.0-s és újabb bővítménye támogatott) ¹
  • Azure Search ¹
  • Azure Cosmos DB Spark-összekötő < 4.18.0
  • Bármely harmadik féltől származó kódtár vagy eszköz, amely függ egy olyan Azure Cosmos DB SDK-tól, amely nem .NET v3 SDK >= v3.27.0 vagy Java v4 SDK >= 4.42.0

¹ Ezeknek az összekötőknek a támogatása a jövőben várható.

Következő lépések