Rövid útmutató: Azure Cosmos DB for Apache Gremlin ügyfélkönyvtár Pythonhoz

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 login parancs használatával.
  • 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.

  1. Ha még nincs célerőforráscsoportja, a az group create paranccsal hozzon létre egy új erőforráscsoportot az előfizetésben.

    az group create \
        --name "<resource-group-name>" \
        --location "<location>"
    
  2. az cosmosdb create A 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"
    
  3. Hozzon létre egy új adatbázist a az cosmosdb gremlin database create nevű cosmicworks használatával.

    az cosmosdb gremlin database create \
        --resource-group "<resource-group-name>" \
        --account-name "<account-name>" \
        --name "cosmicworks"
    
  4. az cosmosdb gremlin graph create A parancs használatával hozzon létre egy új gráfot.products

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

  1. 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}"
    
  2. Jegyezze fel a host tulajdonsá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.

  3. A fiók az cosmosdb keys list lekéréséhez használható.

    az cosmosdb keys list \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --type "keys"
    
  4. Jegyezze fel a primaryMasterKey tulajdonsá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.

  1. Kezdje egy üres mappában.

  2. Importálja a csomagot a gremlinpython Python-csomagindexből (PyPI).

    pip install gremlinpython
    
  3. Hozza 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.

  1. Nyissa meg a app.py fájlt az integrált fejlesztési környezetben (IDE).

  2. Importálja a következő típusokat a gremlin_python.driver tárból:

    • gremlin_python.driver.client
    • gremlin_python.driver.serializer
    from gremlin_python.driver import client, serializer
    
  3. Sztringváltozók létrehozása az útmutatóban korábban gyűjtött hitelesítő adatokhoz. Nevezze el a változókat hostname és primary_keya .

    hostname = "<host>"
    primary_key = "<key>"
    
  4. Hozzon létre egy Client objektumot 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ót client.

    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.

  1. 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()
    
  2. 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)"
    )
    
  3. 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()
    
  4. 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()
    
  5. 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]))"
    )
    
  6. 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.

  1. 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])"
    
  2. 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.

  1. 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()"
    )
    
  2. 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()
    
  3. 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>"