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.

Figyelem

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.

Screenshot of Features pane and Partition merge feature.

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.

Screenshot of Throughput and Scaling content in Diagnose and solve issues page.

Screenshot of merge eligibility check with table of all preview eligibility criteria.

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.

Screenshot of Azure Monitor metric Physical Partition Throughput in Azure portal.

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).

Nyissa meg a Elemzések> Storage>Data &indexhasználatot. 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.

Screenshot of Azure Monitor storage (data + index) metric for container in Azure portal.

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