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.
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.
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.
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.
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:
- Régi .NET v2 SDK: .NET SDK v3 migrálási útmutató
- Régi Java v3 SDK: Java SDK v4 migrálási útmutató
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
- További információ az Azure CLI és az Azure Cosmos DB használatáról.
- További információ az Azure PowerShell és az Azure Cosmos DB használatáról.
- További információ a particionálásról az Azure Cosmos DB-ben.