Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Important
Olyan adatbázismegoldást keres nagy léptékű forgatókönyvekhez, amelyekben 99,9999-es% rendelkezésre állási szolgáltatásiszint-szerződés (SLA), azonnali automatikus skálázás és automatikus feladatátvétel több régióban? Fontolja meg az Azure Cosmos DB-t a NoSQL-hoz.
Szeretne egy online elemzési feldolgozási (OLAP) gráfot implementálni, vagy migrálni egy meglévő Apache Gremlin-alkalmazást? Fontolja meg a Graph funkciót a Microsoft Fabric-ben.
Induljon el az Apache Gremlinhez készült Azure Cosmos DB ügyfélkönyvtárral Pythonban, hogy strukturálatlan adatokat tároljon, kezeljen és lekérdezzen. Az útmutató lépéseit követve hozzon létre egy új fiókot, telepítsen egy Python-ügyfélkódtárat, csatlakozzon a fiókhoz, hajtson végre gyakori műveleteket, és kérdezhesse le a végső mintaadatokat.
Kódtár forráskódcsomagja | (PyPi)
Prerequisites
Azure-előfizetés
- Ha nincs Azure-előfizetésed, hozz létre egy ingyenes fiókot mielőtt elkezdenéd.
Az Azure CLI legújabb verziója az Azure Cloud Shellben.
- Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, jelentkezzen be az Azure CLI-be a
az loginparancs használatával.
- Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, jelentkezzen be az Azure CLI-be a
- Python 3.12 vagy újabb
Előkészítés
Először állítsa be az útmutató fiók- és fejlesztési környezetét. Ez a szakasz végigvezeti a fiók létrehozásának, a hitelesítő adatok beszerzésének, majd a fejlesztési környezet előkészítésének folyamatán.
Fiók létrehozása
Először hozzon létre egy API-t Apache Gremlin-fiókhoz. A fiók létrehozása után hozza létre az adatbázis- és gráferőforrásokat.
Ha még nincs célerőforráscsoportja, a
az group createparanccsal hozzon létre egy új erőforráscsoportot az előfizetésben.az group create \ --name "<resource-group-name>" \ --location "<location>"az cosmosdb createA paranccsal hozzon létre egy új Azure Cosmos DB-fiókot az Apache Gremlinhez alapértelmezett beállításokkal.az cosmosdb create \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --locations "regionName=<location>" \ --capabilities "EnableGremlin"Hozzon létre egy új adatbázist a
az cosmosdb gremlin database createnevűcosmicworkshasználatával.az cosmosdb gremlin database create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"az cosmosdb gremlin graph createA parancs használatával hozzon létre egy új gráfot.productsaz cosmosdb gremlin graph create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --database-name "cosmicworks" \ --name "products" \ --partition-key-path "/category"
Hitelesítő adatok lekérése
Most szerezze be az ügyfélkódtár jelszavát, amellyel kapcsolatot hozhat létre a nemrég létrehozott fiókkal.
Használja a
az cosmosdb show-t a fiók gazdagépének lekéréséhez.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{host:name}"Jegyezze fel a
hosttulajdonság értékét az előző parancsok kimenetéből. Ennek a tulajdonságnak az értéke az a gazdagép, amelyet az útmutató későbbi részében a könyvtárhoz való csatlakozáshoz használ az account összekapcsolásához.A fiók
az cosmosdb keys listlekéréséhez használható.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"Jegyezze fel a
primaryMasterKeytulajdonság értékét az előző parancsok kimenetéből. Ez a tulajdonság értéke az kulcs, amelyet ebben az útmutatóban később fog használni, hogy csatlakozzon a könyvtári fiókhoz.
Fejlesztési környezet előkészítése
Ezután konfigurálja a fejlesztési környezetet egy új projekttel és az ügyfélkódtárral. Ez a lépés az utolsó szükséges előfeltétel, mielőtt továbblépne az útmutató többi részére.
Kezdje egy üres mappában.
Importálja a csomagot a
gremlinpythonPython-csomagindexből (PyPI).pip install gremlinpythonHozza létre a app.py fájlt.
Objektummodell
| Description | |
|---|---|
GremlinClient |
A Gremlin-kiszolgálóhoz való csatlakozáshoz és a gremlin-kiszolgálóval való interakcióhoz használt ügyfelet jelöli |
GraphTraversalSource |
Gremlin-bejárások létrehozására és végrehajtására szolgál |
Példakódok
Ügyfél hitelesítése
Első lépésként hitelesíti az ügyfelet az útmutatóban korábban összegyűjtött hitelesítő adatokkal.
Nyissa meg a app.py fájlt az integrált fejlesztési környezetben (IDE).
Importálja a következő típusokat a
gremlin_python.drivertárból:gremlin_python.driver.clientgremlin_python.driver.serializer
from gremlin_python.driver import client, serializerSztringváltozók létrehozása az útmutatóban korábban gyűjtött hitelesítő adatokhoz. Nevezze el a változókat
hostnameésprimary_keya .hostname = "<host>" primary_key = "<key>"Hozzon létre egy
Clientobjektumot az előző lépésekben létrehozott hitelesítő adatok és konfigurációs változók használatával. Nevezze el a változótclient.client = client.Client( url=f"wss://{hostname}.gremlin.cosmos.azure.com:443/", traversal_source="g", username="/dbs/cosmicworks/colls/products", password=f"{primary_key}", message_serializer=serializer.GraphSONSerializersV2d0() )
Adatok beszúrása
Ezután szúrjon be új csúcs- és éladatokat a gráfba. Az új adatok létrehozása előtt törölje a meglévő adatok gráfját.
A
g.V().drop()lekérdezést futtatva törölje a gráf összes csúcsát és élét.client.submit("g.V().drop()").all().result()Hozzon létre egy Gremlin-lekérdezést, amely egy csúcspontot ad hozzá.
insert_vertex_query = ( "g.addV('product')" ".property('id', prop_id)" ".property('name', prop_name)" ".property('category', prop_category)" ".property('quantity', prop_quantity)" ".property('price', prop_price)" ".property('clearance', prop_clearance)" )Adjon hozzá egy csúcspontot egyetlen termékhez.
client.submit( message=insert_vertex_query, bindings={ "prop_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "prop_name": "Yamba Surfboard", "prop_category": "gear-surf-surfboards", "prop_quantity": 12, "prop_price": 850.00, "prop_clearance": False, }, ).all().result()Adjon hozzá két további csúcspontot két további termékhez.
client.submit( message=insert_vertex_query, bindings={ "prop_id": "bbbbbbbb-1111-2222-3333-cccccccccccc", "prop_name": "Montau Turtle Surfboard", "prop_category": "gear-surf-surfboards", "prop_quantity": 5, "prop_price": 600.00, "prop_clearance": True, }, ).all().result() client.submit( message=insert_vertex_query, bindings={ "prop_id": "cccccccc-2222-3333-4444-dddddddddddd", "prop_name": "Noosa Surfboard", "prop_category": "gear-surf-surfboards", "prop_quantity": 31, "prop_price": 1100.00, "prop_clearance": False, }, ).all().result()Hozzon létre egy újabb Gremlin-lekérdezést, amely élt ad hozzá.
insert_edge_query = ( "g.V([prop_partition_key, prop_source_id])" ".addE('replaces')" ".to(g.V([prop_partition_key, prop_target_id]))" )Adjon hozzá két élt.
client.submit( message=insert_edge_query, bindings={ "prop_partition_key": "gear-surf-surfboards", "prop_source_id": "bbbbbbbb-1111-2222-3333-cccccccccccc", "prop_target_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", }, ).all().result() client.submit( message=insert_edge_query, bindings={ "prop_partition_key": "gear-surf-surfboards", "prop_source_id": "bbbbbbbb-1111-2222-3333-cccccccccccc", "prop_target_id": "cccccccc-2222-3333-4444-dddddddddddd", }, ).all().result()
Adatok beolvasása
Ezután olvassa be a gráfba korábban beszúrt adatokat.
Hozzon létre egy lekérdezést, amely beolvassa a csúcsot az egyedi azonosító és a partíciókulcs értéke alapján.
read_vertex_query = "g.V([prop_partition_key, prop_id])"Ezután olvassa el a csúcspontot a szükséges paraméterek megadásával.
matched_item = client.submit( message=read_vertex_query, bindings={ "prop_partition_key": "gear-surf-surfboards", "prop_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" } ).one()
Adatok lekérdezése
Végül egy lekérdezéssel megkeresheti az összes olyan adatot, amely megfelel egy adott bejárásnak vagy szűrésnek a gráfban.
Hozzon létre egy lekérdezést, amely megkeresi az összes csúcsot, amely egy adott csúcsból halad ki.
find_vertices_query = ( "g.V().hasLabel('product')" ".has('category', prop_partition_key)" ".has('name', prop_name)" ".outE('replaces').inV()" )Hajtsa végre a terméket meghatározó lekérdezést
Montau Turtle Surfboard.find_results = client.submit( message=find_vertices_query, bindings={ "prop_partition_key": "gear-surf-surfboards", "prop_name": "Montau Turtle Surfboard", }, ).all().result()Iterálja át a lekérdezés eredményeit.
for result in find_results: # Do something here with each result
A kód futtatása
Futtassa az újonnan létrehozott alkalmazást egy terminál használatával az alkalmazáskönyvtárban.
python app.py
Erőforrások tisztítása
Ha már nincs szüksége a fiókra, távolítsa el a fiókot az Azure-előfizetésből az erőforrás törlésével .
az cosmosdb delete \
--resource-group "<resource-group-name>" \
--name "<account-name>"