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.
Fontos
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 for NoSQL-t.
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 használatát a Microsoft Fabricben.
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)
Előfeltételek
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
Beállí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
| Leírás | |
|---|---|
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 |
Kódpéldák
Ü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 másik Gremlin-lekérdezést, amely hozzáad egy élt.
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ékével.
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
Az erőforrások eltávolí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>"