Rychlý start: Vytváření, zadávání dotazů a procházení grafové databáze Azure Cosmos DB v konzole Gremlin
PLATÍ pro:
rozhraní Gremlin API
Azure Cosmos DB je globálně distribuovaná databázová služba Microsoftu pro více modelů. Můžete snadno vytvořit a dotazovat databáze dotazů, klíčů/hodnot a grafů, které tak můžou využívat výhody použitelnosti v celosvětovém měřítku a možností horizontálního škálování v jádru Azure Cosmos DB.
Tento rychlý start ukazuje, jak vytvořit účet rozhraní Gremlin API služby Azure Cosmos DB, databázi a graf (kontejner) pomocí rozhraní Azure Portal a pak pomocí konzoly Gremlin z webu Apache TinkerPop pracovat s daty rozhraní Gremlin API. V tomto kurzu se naučíte vytvářet vrcholy a okraje a zadávat k nim dotazy, a to aktualizací vlastnosti vrcholu, a dále zadávat dotazy pro vrcholy, procházet graf a vyřadit konkrétní vrchol.
Konzola Gremlin je založena na technologii Groovy nebo Java a běží v systémech Linux, Mac a Windows. Můžete si ji stáhnout z webu Apache TinkerPop.
Požadavky
Abyste si mohli vytvořit účet služby Azure Cosmos DB pro tento rychlý start, musíte mít předplatné Azure.
Pokud ještě nemáte předplatné Azure,vytvořte si bezplatný účet před tím, než začnete.
Musíte si také nainstalovat konzolu Gremlin. Doporučená verze je verze 3.4.3 nebo starší. (Pokud chcete používat konzolu Gremlin v Windows, musíte nainstalovat Java Runtime, minimálně vyžaduje Javu 8, ale je vhodnější použít Javu 11).
Vytvoření účtu databáze
V novém okně prohlížeče se přihlaste k webu Azure Portal.
V nabídce vlevo vyberte Vytvořit prostředek.
Na stránce Nový vyberte Databáze > Azure Cosmos DB.
Na stránce Vytvořit účet Azure Cosmos DB zadejte nastavení pro nový účet Azure Cosmos DB.
Nastavení Hodnota Popis Předplatné Název předplatného Vyberte předplatné Azure, které chcete pro tento účet Azure Cosmos azure. Skupina prostředků Název skupiny prostředků Vyberte skupinu prostředků nebo vyberte Vytvořit novou a pak zadejte jedinečný název nové skupiny prostředků. Account Name Zadejte jedinečný název. Zadejte jedinečný název, který identifikuje váš účet služby Azure Cosmos DB. Identifikátor URI vašeho účtu se gremlin.azure.com k vašemu jedinečnému názvu účtu připojí.
Název účtu může obsahovat pouze malá písmena, číslice a spojovníky (-) a musí být dlouhý 3 až 44 znaků.Rozhraní API Gremlin (graf) Rozhraní API určuje typ účtu, který se má vytvořit. Azure Cosmos DB poskytuje pět rozhraní API: Core (SQL) pro dokumentové databáze, Gremlin pro grafové databáze, MongoDB pro dokumentové databáze, Azure Table a Cassandra. Pro každé rozhraní API musíte vytvořit samostatný účet.
Vyberte Gremlin (graf), protože v tomto rychlém startu vytváříte tabulku, která funguje s rozhraním Gremlin API.
Přečtěte si další informace o rozhraní Gremlin API.Umístění Oblast nejbližší vašim uživatelům Vyberte zeměpisné umístění, ve kterém chcete účet služby Azure Cosmos DB hostovat. Použijte umístění, které je vašim uživatelům nejblíže, a podejte jim nejrychlejší přístup k datům. Režim kapacity Zřízená propustnost nebo bez serveru Vyberte Zřízená propustnost a vytvořte účet v režimu zřízené propustnosti. Vyberte Bez serveru a vytvořte účet v režimu bez serveru. Použití slevy na bezplatnou úroveň Azure Cosmos DB Použít nebo Neakusovat S úrovní Free služby Azure Cosmos DB získáte v účtu prvních 1 000 RU/s a 25 GB úložiště zdarma. Přečtěte si další informace o úrovni Free. Poznámka
Pro jedno předplatné Azure můžete mít až jeden účet Azure Cosmos DB úrovně Free a při vytváření účtu se musíte přihlásit. Pokud nevidíte možnost uplatnit slevu na bezplatnou úroveň, znamená to, že u jiného účtu v předplatném už je povolená úroveň Free.
Na kartě Globální distribuce nakonfigurujte následující podrobnosti. Pro účely tohoto rychlého startu můžete ponechat výchozí hodnoty:
Nastavení Hodnota Popis Geografická redundance Zakázat Povolte nebo zakažte globální distribuci vašeho účtu spárováním oblasti s párovou oblastí. Další oblasti můžete do svého účtu přidat později. Zápisy do více oblastí Zakázat Funkce zápisu do více oblastí umožňuje využít zřízenou propustnost pro databáze a kontejnery po celém světě. Poznámka
Pokud jako Režim kapacity vyberete Bez serveru, nejsou k dispozici následující možnosti:
- Použít slevu založenou na bezplatné úrovni
- Geografická redundance
- Zápisy do více oblastí
Volitelně můžete nakonfigurovat další podrobnosti na následujících kartách:
- Sítě – Nakonfigurujte přístup z virtuální sítě.
- Zásady zálohování – Nakonfigurujte zásady pravidelného nebo průběžného zálohování.
- Šifrování – Použijte klíč spravovaný službou nebo klíč spravovaný zákazníkem.
- Značky – Značky jsou páry název/hodnota, které umožňují kategorizovat prostředky a zobrazit konsolidovanou fakturaci tím, že stejnou značku použijete na více prostředků a skupin prostředků.
Vyberte Zkontrolovat a vytvořit.
Vytvoření účtu trvá několik minut. Počkejte, až se na portálu zobrazí blahopřejeme! Váš účet Azure Cosmos DB byl vytvořen.
Přidání grafu
Teď můžete pomocí nástroje Průzkumník dat na webu Azure Portal vytvořit databázi grafu.
vyberte Průzkumník dat > nová Graph.
Úplně vpravo se zobrazí oblast Přidat graf. Pokud ji nevidíte, možná se budete muset posunout doprava.

Na stránce Přidat graf zadejte nastavení pro nový graf.
Nastavení Navrhovaná hodnota Popis ID databáze sample-database Jako název nové databáze zadejte sample-database. Názvy databází musí mít délku 1 až 255 znaků a nesmí obsahovat znaky / \ # ?ani koncové mezery.Propustnost 400 RU/s Změňte propustnost na 400 jednotek žádostí za sekundu (RU/s). Pokud budete chtít snížit latenci, můžete propustnost později navýšit. ID grafu sample-graph Jako název nové kolekce zadejte sample-graph. U názvů grafů platí stejné požadavky na znaky jako u ID databází. Partition Key (Klíč oddílu) /pk všechny účty Cosmos DB potřebují ke horizontálnímu škálování klíč oddílu. naučte se, jak vybrat vhodný klíč oddílu v článku Graphho dělení dat. Po vyplnění formuláře vyberte OK.
Připojení ke službě App Service nebo Graph
Než začnete používat konzolu Gremlin, vytvořte nebo upravte v adresáři
apache-tinkerpop-gremlin-console-3.2.5/confkonfigurační soubor remote-secure.yaml.Podle následující tabulky vyplňte konfigurace Hostitel, Port, Uživatelské jméno, Heslo, Fond připojení a Serializátor:
Nastavení Navrhovaná hodnota Popis hostitelé [account-name. Gremlin.cosmos.azure.com] Viz následující snímek obrazovky. Toto je hodnota Gremlin URI na stránce Přehled v Azure Portal hranatých závorkách s odebraným koncovým řetězcem :443/. Poznámka: Při pokusu o pozdější spuštění dotazů Gremlin nezapomeňte použít hodnotu Gremlin, a ne identifikátor URI končící na [název_účtu.documents.azure.com], což by pravděpodobně vedlo k výjimce Hostitel nereagoval včas. port 443 Nastavte na hodnotu 443. username Vaše uživatelské jméno Prostředek ve formátu /dbs/<db>/colls/<coll>, kde<db>je název vaší databáze a<coll>je název vaší kolekce.heslo Váš primární klíč Viz druhý snímek obrazovky níže. Toto je váš primární klíč, který můžete získat ze stránky Klíče na webu Azure Portal v poli Primární klíč. Pomocí tlačítka pro kopírování na levé straně pole hodnotu zkopírujte. fond připojení {enableSsl: true} Nastavení fondu připojení pro protokol TLS. serializátor { className: org.apache.tinkerpop.gremlin.
driver.ser.GraphSONMessageSerializerV2d0,
config: { serializeResultToString: true }}Nastavte na tuto hodnotu a odstraňte případné konce řádků \nvzniklé vložením hodnoty.Jako hodnotu hosts (hostitelé) zkopírujte hodnotu Gremlin URI ze stránky Overview (Přehled):
Jako hodnotu hesla zkopírujte primární klíč ze stránky Klíče:
Váš soubor remote-secure.yaml by měl vypadat nějak takto:
hosts: [your_database_server.gremlin.cosmos.azure.com] port: 443 username: /dbs/your_database/colls/your_collection password: your_primary_key connectionPool: { enableSsl: true } serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, config: { serializeResultToString: true }}Nezapomeňte zabalit hodnotu parametru hosts do závorek [].
V terminálu spuštěním příkazu
bin/gremlin.batnebobin/gremlin.shspusťte konzolu Gremlin.V terminálu se spuštěním příkazu
:remote connect tinkerpop.server conf/remote-secure.yamlpřipojte k aplikační službě.Tip
Pokud se zobrazí chyba
No appenders could be found for logger, zkontrolujte, že jste v souboru remote-secure.yaml aktualizovali hodnotu serializátoru, jak je popsáno v kroku 2. Pokud je vaše konfigurace správná, můžete toto upozornění bezpečně ignorovat, protože by nemělo mít vliv na použití konzoly.Potom spusťte příkaz
:remote console, abyste přesměrovali všechny příkazy konzoly na vzdálený server.Poznámka
Pokud jste nespustili příkaz
:remote console, ale chcete přesměrovat všechny příkazy konzoly na vzdálený server, zadejte před příkaz předponu:>. Příklad spuštěného příkazu::> g.V().count(). Předpona je součástí příkazu. Při používání konzoly Gremlin s Azure Cosmos DB je to důležité. Pokud tuto předponu vynecháte, dáte konzole pokyn, aby příkaz spustila lokálně – často s grafem v paměti. Použitím předpony:>dáváte konzole pokyn ke spuštění vzdáleného příkazu. V tomto případě ve službě Azure Cosmos DB (v emulátoru místního hostitele nebo v instanci Azure).
Výborně! Nastavení se nám podařilo dokončit a teď můžete spouštět některé příkazy konzoly.
Vyzkoušejme jednoduchý příkaz count(). Zadejte do příkazového řádku konzoly následující:
g.V().count()
Vytváření vrcholů a okrajů
Začněme přidáním pěti osob pro nastavení vrcholů: Tomáš, Marie, Robin, Petr a Jan.
Vstup (Tomáš):
g.addV('person').property('firstName', 'Thomas').property('lastName', 'Andersen').property('age', 44).property('userid', 1).property('pk', 'pk')
Výstup:
==>[id:796cdccc-2acd-4e58-a324-91d6f6f5ed6d,label:person,type:vertex,properties:[firstName:[[id:f02a749f-b67c-4016-850e-910242d68953,value:Thomas]],lastName:[[id:f5fa3126-8818-4fda-88b0-9bb55145ce5c,value:Andersen]],age:[[id:f6390f9c-e563-433e-acbf-25627628016e,value:44]],userid:[[id:796cdccc-2acd-4e58-a324-91d6f6f5ed6d|userid,value:1]]]]
Vstup (Marie):
g.addV('person').property('firstName', 'Mary Kay').property('lastName', 'Andersen').property('age', 39).property('userid', 2).property('pk', 'pk')
Výstup:
==>[id:0ac9be25-a476-4a30-8da8-e79f0119ea5e,label:person,type:vertex,properties:[firstName:[[id:ea0604f8-14ee-4513-a48a-1734a1f28dc0,value:Mary Kay]],lastName:[[id:86d3bba5-fd60-4856-9396-c195ef7d7f4b,value:Andersen]],age:[[id:bc81b78d-30c4-4e03-8f40-50f72eb5f6da,value:39]],userid:[[id:0ac9be25-a476-4a30-8da8-e79f0119ea5e|userid,value:2]]]]
Vstup (Robin):
g.addV('person').property('firstName', 'Robin').property('lastName', 'Wakefield').property('userid', 3).property('pk', 'pk')
Výstup:
==>[id:8dc14d6a-8683-4a54-8d74-7eef1fb43a3e,label:person,type:vertex,properties:[firstName:[[id:ec65f078-7a43-4cbe-bc06-e50f2640dc4e,value:Robin]],lastName:[[id:a3937d07-0e88-45d3-a442-26fcdfb042ce,value:Wakefield]],userid:[[id:8dc14d6a-8683-4a54-8d74-7eef1fb43a3e|userid,value:3]]]]
Vstup (Petr):
g.addV('person').property('firstName', 'Ben').property('lastName', 'Miller').property('userid', 4).property('pk', 'pk')
Výstup:
==>[id:ee86b670-4d24-4966-9a39-30529284b66f,label:person,type:vertex,properties:[firstName:[[id:a632469b-30fc-4157-840c-b80260871e9a,value:Ben]],lastName:[[id:4a08d307-0719-47c6-84ae-1b0b06630928,value:Miller]],userid:[[id:ee86b670-4d24-4966-9a39-30529284b66f|userid,value:4]]]]
Vstup (Jan):
g.addV('person').property('firstName', 'Jack').property('lastName', 'Connor').property('userid', 5).property('pk', 'pk')
Výstup:
==>[id:4c835f2a-ea5b-43bb-9b6b-215488ad8469,label:person,type:vertex,properties:[firstName:[[id:4250824e-4b72-417f-af98-8034aa15559f,value:Jack]],lastName:[[id:44c1d5e1-a831-480a-bf94-5167d133549e,value:Connor]],userid:[[id:4c835f2a-ea5b-43bb-9b6b-215488ad8469|userid,value:5]]]]
V dalším kroku přidejme pro vztahy mezi osobami okraje.
Vstup (Tomáš -> Marie):
g.V().hasLabel('person').has('firstName', 'Thomas').addE('knows').to(g.V().hasLabel('person').has('firstName', 'Mary Kay'))
Výstup:
==>[id:c12bf9fb-96a1-4cb7-a3f8-431e196e702f,label:knows,type:edge,inVLabel:person,outVLabel:person,inV:0d1fa428-780c-49a5-bd3a-a68d96391d5c,outV:1ce821c6-aa3d-4170-a0b7-d14d2a4d18c3]
Vstup (Tomáš -> Robin):
g.V().hasLabel('person').has('firstName', 'Thomas').addE('knows').to(g.V().hasLabel('person').has('firstName', 'Robin'))
Výstup:
==>[id:58319bdd-1d3e-4f17-a106-0ddf18719d15,label:knows,type:edge,inVLabel:person,outVLabel:person,inV:3e324073-ccfc-4ae1-8675-d450858ca116,outV:1ce821c6-aa3d-4170-a0b7-d14d2a4d18c3]
Vstup (Robin -> Petr):
g.V().hasLabel('person').has('firstName', 'Robin').addE('knows').to(g.V().hasLabel('person').has('firstName', 'Ben'))
Výstup:
==>[id:889c4d3c-549e-4d35-bc21-a3d1bfa11e00,label:knows,type:edge,inVLabel:person,outVLabel:person,inV:40fd641d-546e-412a-abcc-58fe53891aab,outV:3e324073-ccfc-4ae1-8675-d450858ca116]
Aktualizace vrcholu
Aktualizujme vrchol Tomáš s novým věkovým údajem 45 let.
Vstup:
g.V().hasLabel('person').has('firstName', 'Thomas').property('age', 45)
Výstup:
==>[id:ae36f938-210e-445a-92df-519f2b64c8ec,label:person,type:vertex,properties:[firstName:[[id:872090b6-6a77-456a-9a55-a59141d4ebc2,value:Thomas]],lastName:[[id:7ee7a39a-a414-4127-89b4-870bc4ef99f3,value:Andersen]],age:[[id:a2a75d5a-ae70-4095-806d-a35abcbfe71d,value:45]]]]
Dotazování grafu
Teď spustíme pro graf celou řadu dotazů.
Vyzkoušejme nejdříve dotaz s filtrem pro vrácení pouze osob nad 40 let.
Vstup (dotaz s filtrem):
g.V().hasLabel('person').has('age', gt(40))
Výstup:
==>[id:ae36f938-210e-445a-92df-519f2b64c8ec,label:person,type:vertex,properties:[firstName:[[id:872090b6-6a77-456a-9a55-a59141d4ebc2,value:Thomas]],lastName:[[id:7ee7a39a-a414-4127-89b4-870bc4ef99f3,value:Andersen]],age:[[id:a2a75d5a-ae70-4095-806d-a35abcbfe71d,value:45]]]]
Teď navrhněme název pro skupinu osob nad 40 let.
Vstup (filtru + dotaz projekce):
g.V().hasLabel('person').has('age', gt(40)).values('firstName')
Výstup:
==>Thomas
Procházení grafu
Umožňuje procházet graf tak, aby vrátil všechny přátele uživatele Tomáš.
Vstup (přátelé uživatele Tomáš):
g.V().hasLabel('person').has('firstName', 'Thomas').outE('knows').inV().hasLabel('person')
Výstup:
==>[id:f04bc00b-cb56-46c4-a3bb-a5870c42f7ff,label:person,type:vertex,properties:[firstName:[[id:14feedec-b070-444e-b544-62be15c7167c,value:Mary Kay]],lastName:[[id:107ab421-7208-45d4-b969-bbc54481992a,value:Andersen]],age:[[id:4b08d6e4-58f5-45df-8e69-6b790b692e0a,value:39]]]]
==>[id:91605c63-4988-4b60-9a30-5144719ae326,label:person,type:vertex,properties:[firstName:[[id:f760e0e6-652a-481a-92b0-1767d9bf372e,value:Robin]],lastName:[[id:352a4caa-bad6-47e3-a7dc-90ff342cf870,value:Wakefield]]]]
V následujícím kroku načteme další vrstvu vrcholů. Umožňuje procházet graf tak, aby vrátil všechny přátele uživatele Tomáš.
Vstup (přátelé přátel uživatele Tomáš):
g.V().hasLabel('person').has('firstName', 'Thomas').outE('knows').inV().hasLabel('person').outE('knows').inV().hasLabel('person')
Výstup:
==>[id:a801a0cb-ee85-44ee-a502-271685ef212e,label:person,type:vertex,properties:[firstName:[[id:b9489902-d29a-4673-8c09-c2b3fe7f8b94,value:Ben]],lastName:[[id:e084f933-9a4b-4dbc-8273-f0171265cf1d,value:Miller]]]]
Vyřazení vrcholu
Teď odstraníme vrchol z databáze grafu.
Vstup (vyřazení vrcholu Jan):
g.V().hasLabel('person').has('firstName', 'Jack').drop()
Resetování grafu
Nakonec odstraníme z databáze všechny vrcholy a okraje.
Vstup:
g.E().drop()
g.V().drop()
Gratulujeme! Dokončili jste kurz rozhraní Gremlin API služby Azure Cosmos DB.
Ověření smluv SLA na webu Azure Portal
Tento Azure Portal monitoruje propustnost Cosmos DB účtu, úložiště, dostupnost, latenci a konzistenci vašeho účtu. Grafy metrik přidružených k Azure Cosmos DB smlouva SLA (SLA) zobrazují hodnotu SLA v porovnání se skutečným výkonem. Díky této metrice je monitorování smluv SLA transparentní.
Kontrola metrik a smluv SLA:
V navigační nabídce vašeho Cosmos DB účtu vyberte Metriky.
Vyberte kartu, například Latence, a vpravo vyberte časový rámec. Porovnejte čáry Actual (Skutečný) a SLA (Sla) v grafech.

Zkontrolujte metriky na ostatních kartách.
Vyčištění prostředků
Až budete s aplikací a Azure Cosmos DB účtem hotovi, můžete odstranit prostředky Azure, které jste vytvořili, abyste se neúčtují další poplatky. Odstranění prostředků:
Na panelu hledání Azure Portal vyhledejte a vyberte skupiny prostředků.
V seznamu vyberte skupinu prostředků, kterou jste vytvořili pro tento rychlý Start.

Na stránce Přehled skupiny prostředků vyberte Odstranit skupinu prostředků.

V dalším okně zadejte název skupiny prostředků, kterou chcete odstranit, a pak vyberte Odstranit.
Další kroky
V tomto rychlém startu jste se seznámili se způsobem vytvoření účtu služby Azure Cosmos DB, vytvoření grafu pomocí Průzkumníku dat, vytváření vrcholů a okrajů a procházení grafu pomocí konzoly Gremlin. Teď můžete pomocí konzoly Gremlin vytvářet složitější dotazy a implementovat účinnou logiku procházení grafů.