Az Azure Cosmos DB konfigurálása a NoSQL-hez materializált nézetekhez (előzetes verzió)
A KÖVETKEZŐRE VONATKOZIK: NoSQL
Fontos
Az Azure Cosmos DB for NoSQL materializált nézetei jelenleg előzetes verzióban érhetők el. Ezt a funkciót az Azure Portalon engedélyezheti. Ez az előzetes verzió szolgáltatásszintű szerződés nélkül érhető el. Jelenleg nem javasoljuk, hogy materializált nézeteket használjon éles számítási feladatokhoz. Előfordulhat, hogy az előzetes verzió bizonyos funkciói nem támogatottak, vagy korlátozott képességekkel rendelkeznek. További információkért tekintse meg a Microsoft Azure előzetes verziójának használati feltételeit.
A materializált nézetek hatékony módot nyújtanak a lekérdezési teljesítmény optimalizálására és az alkalmazáslogika egyszerűsítésére azáltal, hogy más partíciókulcsot és/vagy adatmodellt használva hoznak létre nézeteket az adatokról. Ez a cikk bemutatja, hogyan hozhat létre materializált nézeteket, és hogyan kezelheti hatékonyan a partíciók közötti lekérdezéseket.
- Egy meglévő Azure Cosmos DB-fiók.
- Ha Rendelkezik Azure-előfizetéssel, hozzon létre egy új fiókot.
- Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.
- Másik lehetőségként a véglegesítés előtt ingyenesen kipróbálhatja az Azure Cosmos DB-t.
A materialized views funkciót engedélyezni kell az Azure Cosmos DB-fiókhoz egy szerkesztő kiépítése vagy nézetek létrehozása előtt.
Jelentkezzen be az Azure Portalra.
Nyissa meg az Azure Cosmos DB for NoSQL-fiókját.
Az erőforrás menüjében válassza a Beállítások lehetőséget.
A Beállítások területen állítsa a Materialized View for NoSQL API (előzetes verzió) beállítást Be értékre.
Az új párbeszédpanelen válassza az Engedélyezés lehetőséget a funkció fiókhoz való engedélyezéséhez.
Miután engedélyezte a materializált nézetek funkciót a fiókjához, megjelenik egy új lap az Azure Portal For Materialized Views Builder Beállítások szakaszában. A nézetek létrehozása előtt ki kell építenie egy materializált nézetkészítőt a fiókjában. A szerkesztő feladata az adatok automatikus hidratálása a nézetekben, és azok szinkronban tartása a forrástárolókkal. További információ a materializált nézetszerkesztő kiépítésének lehetőségeiről.
Jelentkezzen be az Azure Portalra.
Nyissa meg az Azure Cosmos DB for NoSQL-fiókját.
Az erőforrásmenüben válassza a Materialized Views Builder lehetőséget.
A Materialized Views Builder lapon konfigurálja az SKU-t és a készítő példányainak számát.
Megjegyzés
Ez az erőforrásmenü-beállítás és lap csak akkor jelenik meg, ha a materializált nézetek funkció engedélyezve van a fiókhoz.
Válassza a Mentés lehetőséget.
A funkció engedélyezése és a materializált nézetszerkesztő kiépítése után a REST API használatával materializált nézeteket hozhat létre.
Az Azure Portal, az Azure SDK-k, az Azure CLI vagy a REST API használatával hozzon létre egy forrástárolót, amely partíciókulcs-elérési útként szolgál
/customerId
. Nevezze el ezt a forrástárolótmv-src
.Megjegyzés
A
/customerId
mező csak példaként használatos ebben a cikkben. Saját tárolóihoz válasszon egy partíciókulcsot, amely a megoldáshoz használható.Szúrjon be néhány elemet a forrástárolóba. Az ebben a cikkben bemutatott példák követéséhez győződjön meg arról, hogy az elemek rendelkeznek
customerId
ésemailAddress
mezőkkel. A mintaelem a következőképpen nézhet ki:{ "id": "eaf0338e-2b61-4163-822f-7bef75bf51de", "customerId": "36c7cc3d-1709-45c6-819f-10e5586a6cb7", "emailAddress": "justine@contoso.com", "name": "Justine" }
Megjegyzés
Ebben a példában a forrástárolót mintaadatokkal tölti fel, mielőtt hozzáad egy nézetet. Egy materializált nézetet üres forrástárolóból is létrehozhat.
Most hozzon létre egy materializált nézetet, amely a forrástárolótól eltérő partíciókulcs-elérési úttal van elnevezve
mv-target
. Ebben a példában adja meg/emailAddress
a tároló partíciókulcs-elérésimv-target
útját.Hozzon létre egy definíciójegyzéket egy materializált nézethez, és mentse egy mv-definition.json nevű JSON-fájlba:
{ "location": "North Central US", "tags": {}, "properties": { "resource": { "id": "mv-target", "partitionKey": { "paths": [ "/emailAddress" ] }, "materializedViewDefinition": { "sourceCollectionId": "mv-src", "definition": "SELECT c.customerId, c.emailAddress FROM c" } }, "options": { "throughput": 400 } } }
Fontos
A sablonban figyelje meg, hogy a partíciókulcs elérési útja a következőképpen van beállítva
/emailAddress
. AsourceCollectionId
nézet forrástárolóját határozza meg, és adefinition
nézet adatmodelljének meghatározására szolgáló lekérdezést tartalmaz. További információ a materializált nézetek és a lekérdezési korlátozások meghatározásáról.A materialized view source container and definition query nem módosítható a létrehozás után.
Ezután hozzon létre egy REST API-hívást a materializált nézet létrehozásához a mv-definition.json fájlban meghatározott módon. Az Azure CLI használatával kezdeményezhet REST API-hívást.
Hozzon létre egy változót a materializált nézet és a forrásadatbázis nevéhez:
# This should match the resource ID you defined in your json file $materializedViewName = "mv-target" # Database name for the source and view containers $databaseName = "<Database that contains source container>" # Azure Cosmos DB account name $accountName = "<Azure Cosmos DB account name>" # Resource name for your Azure Cosmos DB account $resourceGroupName = "<Resource group for Azure Cosmos DB account>" # Subscription id for your Azure Cosmos DB account $subscriptionId = "<Subscription id>"
Ezeket a változókat használva hozza létre az erőforrás-azonosítót.
$accountId = "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.DocumentDB/databaseAccounts/$accountName"
Hozzon létre egy REST API-hívást a materializált nézet létrehozásához:
az rest \ --method PUT \ --uri "https://management.azure.com$accountId/sqlDatabases/ \ $databaseName/containers/$materializedViewName/?api-version=2022-11-15-preview" \ --body @mv-definition.json \ --headers content-type=application/json
Ellenőrizze a materializált nézettároló létrehozásának állapotát a REST API használatával:
az rest \ --method GET \ --uri "https://management.azure.com$accountId/sqlDatabases/ $databaseName/containers/$materializedViewName/?api-version=2022-11-15-preview" \ --headers content-type=application/json \ --query "{mvCreateStatus: properties.Status}"
A materializált nézet létrehozása után a materializált nézetszerkesztő automatikusan szinkronizálja a módosításokat a forrástárolóval. Próbálja meg végrehajtani a létrehozási, frissítési és törlési műveleteket a forrástárolóban. Ugyanazokat a módosításokat fogja látni, mint a materializált nézettárolóban.
Ebben a példában van egy forrástároló particionálása customerId
, és egy nézet particionálása a következőn emailAddress
: . A nézet nélkül azok a lekérdezések, amelyek csak a emailAddress
keresztpartíciót tartalmazzák, most már a nézeten keresztül is végrehajthatók a hatékonyság növelése érdekében.
Az adatok materializált nézetekből való lekérdezése hasonló bármely más tároló adatainak lekérdezéséhez. Az Azure Portal, az Azure SDK-k vagy a REST API használatával adatokat kérdezhet le materializált nézetekben.
Container container = client.GetDatabase("mv-db").GetContainer("mv-target");
FeedIterator<MyClass> myQuery = container.GetItemQueryIterator<MyClass>(new QueryDefinition("SELECT * FROM c WHERE c.emailAddress = 'justine@contoso.com'"));