Úvod k rozhraní Gremlin API v Azure Cosmos DB

PLATÍ PRO: Gremlin API

Azure Cosmos DB je globálně distribuovaná databázová služba s více modely od Microsoftu pro klíčové aplikace. Jedná se o vícemodelovou databázi a podporuje datové modely dokumentů, klíč-hodnota, graf a sloupcový datový model. Azure Cosmos DB poskytuje službu grafové databáze prostřednictvím rozhraní Gremlin API v plně spravované databázové službě navržené pro libovolné škálování.

Azure Cosmos DB graph architecture

Tento článek obsahuje přehled rozhraní Gremlin API služby Azure Cosmos DB a vysvětluje, jak je používat k ukládání masivních grafů s miliardami vrcholů a hran. Grafy můžete dotazovat s latencí milisekund a snadno vyvíjet strukturu grafu. Rozhraní Gremlin API služby Azure Cosmos DB je založené na architektuře grafových výpočtů Apache TinkerPop. Rozhraní Gremlin API v Azure Cosmos DB používá dotazovací jazyk Gremlin.

Rozhraní Gremlin API služby Azure Cosmos DB kombinuje výkon algoritmů grafových databází s vysoce škálovatelnou spravovanou infrastrukturou, která poskytuje jedinečné flexibilní řešení nejběžnějších problémů s daty spojenými s nedostatkem flexibility a relačních přístupů.

Poznámka

Grafový modul Azure Cosmos DB úzce dodržuje specifikaci Apache TinkerPop. V podrobnostech implementace, které jsou specifické pro Azure Cosmos DB, ale existují některé rozdíly. Některé funkce podporované Apache TinkerPop nejsou v Azure Cosmos DB k dispozici. Další informace o nepodporovaných funkcích najdete v článku o kompatibilitě s Apache TinkerPop.

Funkce rozhraní Gremlin API služby Azure Cosmos DB

Azure Cosmos DB je plně spravovaná databáze grafu, která nabízí globální distribuci, elastické škálování úložiště a propustnosti, automatické indexování a dotazování, nastavitelné úrovně konzistence a podporu standardu TinkerPop.

Poznámka

Režim bezserverové kapacity je teď dostupný v rozhraní Gremlin API služby Azure Cosmos DB.

Níže jsou uvedené různé funkce, které nabízí rozhraní Gremlin API služby Azure Cosmos DB:

  • Elasticky škálovatelná propustnost a úložiště

    Grafy v reálném světě je potřeba škálovat nad kapacitu jednoho serveru. Azure Cosmos DB podporuje horizontálně škálovatelné grafové databáze, které můžou mít prakticky neomezenou velikost z hlediska úložiště a zřízené propustnosti. S rostoucím škálováním grafové databáze se data automaticky distribuují pomocí dělení grafu.

  • Replikace mezi více oblastmi

    Azure Cosmos DB může automaticky replikovat data grafu do libovolné oblasti Azure po celém světě. Globální replikace zjednodušuje vývoj aplikací, které vyžadují globální přístup k datům. Kromě minimalizace latence čtení a zápisu kdekoli na světě poskytuje Azure Cosmos DB automatický místní mechanismus převzetí služeb při selhání, který zajistí kontinuitu aplikace ve výjimečných případech přerušení služby v určité oblasti.

  • Rychlé dotazy a procházení s nejrozšířenějšími standardními grafovými dotazy

    Uložte heterogenní vrcholy a hrany a dotazujte se na ně pomocí známé syntaxe Gremlin. Gremlin je imperativní funkční dotazovací jazyk, který poskytuje bohaté rozhraní pro implementaci běžných algoritmů grafu.

    Azure Cosmos DB umožňuje bohaté dotazy a procházení v reálném čase bez nutnosti zadat rady schématu, sekundární indexy nebo zobrazení. Další informace najdete v článku o dotazování grafů pomocí jazyka Gremlin.

  • Plně spravovaná grafová databáze

    Azure Cosmos DB eliminuje nutnost správy databáze a počítačových prostředků. Většina stávajících platforem grafových databází je svázána s omezeními jejich infrastruktury a často vyžaduje vysokou úroveň údržby, aby se zajistilo její provoz.

    Jako plně spravovaná služba Cosmos DB odebere potřebu správy virtuálních počítačů, aktualizace softwaru runtime, správy horizontálního dělení nebo replikace nebo řešení složitých upgradů datové vrstvy. Každý graf je automaticky zálohovaný a chráněný proti selháním v dané oblasti. To vývojářům umožňuje soustředit se na poskytování hodnoty aplikace místo provozu a správy grafových databází.

  • Automatické indexování

    Azure Cosmos DB ve výchozím nastavení automaticky indexuje všechny vlastnosti v uzlech (označované také jako vrcholy) a hrany v grafu a neočekává ani nevyžaduje žádné schéma nebo vytvoření sekundárních indexů. Přečtěte si další informace o indexování ve službě Azure Cosmos DB.

  • Kompatibilita s Apache TinkerPop

    Azure Cosmos DB podporuje opensourcový standard Apache TinkerPop. Standard Tinkerpop má dostatek ekosystému aplikací a knihoven, které je možné snadno integrovat s rozhraním Gremlin API služby Azure Cosmos DB.

  • Vyladěné úrovně konzistence

    Azure Cosmos DB poskytuje pět dobře definovaných úrovní konzistence pro dosažení správného kompromisu mezi konzistencí a výkonem vaší aplikace. Pro dotazy a operace čtení nabízí služba Azure Cosmos DB pět různých úrovní konzistence: silná, omezená neaktuálnost, relace, konzistentní předpona a konečný výsledek. Tyto podrobné a jasně definované úrovně konzistence umožňují zvolit vhodný kompromis mezi konzistencí, dostupností a latencí. Další informace najdete v článku o nastavitelných úrovních konzistence dat v Azure Cosmos DB.

Scénáře, které používají rozhraní Gremlin API

Tady je několik scénářů, ve kterých může být užitečná podpora grafů azure Cosmos DB:

  • Sociální sítě / Zákazník 365

    Zkombinováním dat o zákaznících a jejich interakcích s jinými lidmi můžete vytvořit individualizované prostředí, předvídat chování zákazníků nebo spojit osoby s lidmi, kteří mají podobné zájmy. Azure Cosmos DB lze použít ke správě sociálních sítí a sledování zákaznických preferencí a dat.

  • Generátory doporučení

    Tento scénář se často používá v maloobchodě. Zkombinováním informací o produktech, uživatelích a interakcích uživatelů (jako je nákup, procházení nebo hodnocení položky) můžete vytvořit přizpůsobená doporučení. Podpora azure Cosmos DB s nízkou latencí, elastickým škálováním a nativním grafem je ideální pro tyto scénáře.

  • Geoprostorové

    V mnoha aplikacích v oboru telekomunikací, logistiky a plánování cest je potřeba najít místo zájmu v určité oblasti nebo vyhledat nejkratší/optimální trasu mezi dvěma místy. Azure Cosmos DB se k řešení těchto problémů skvěle hodí.

  • Internet věcí

    Pomocí sítě a propojení mezi zařízeními IoT modelovanými ve formě grafu můžete zajistit lepší porozumění stavu vašich zařízení a majetku. Zároveň zjistíte, jak změny v jedné části sítě mohou potenciálně ovlivnit jinou část.

Úvod do grafových databází

Data, která existují v reálném světě, jsou přirozeně propojená. Tradiční modelování dat se zaměřuje na definování entit samostatně a výpočty jejich vztahů za běhu. I když má tento model své výhody, vysoce propojená data můžou být náročná na správu v rámci svých omezení.

Přístup k grafové databázi spoléhá na zachování relací ve vrstvě úložiště, což vede k vysoce efektivním operacím načítání grafu. Rozhraní Gremlin API služby Azure Cosmos DB podporuje model grafu vlastností.

Objekty grafu vlastností

Graf vlastností je struktura, která se skládá z vrcholů a hran. Oba objekty můžou mít libovolný počet párů klíč-hodnota jako vlastnosti.

  • Vrcholy/uzly – vrcholy označují diskrétní entity, jako je osoba, místo nebo událost.

  • Hrany/relace – Hrany označují relace mezi vrcholy. Nějaká osoba například může znát jinou osobu, účastnit se nějaké události a nacházet se na určitém místě.

  • Vlastnosti – Vlastnosti vyjadřují informace o vrcholech a hranách. V vrcholech nebo hranách může být libovolný počet vlastností a lze je použít k popisu a filtrování objektů v dotazu. Mezi příklady vlastností patří vrchol s názvem a věkem nebo hranou, která může mít časové razítko nebo hmotnost.

  • Popisek – Popisek je název nebo identifikátor vrcholu nebo hrany. Popisky můžou seskupit několik vrcholů nebo hran tak, aby všechny vrcholy nebo hrany ve skupině měly určitý popisek. Graf může mít například více vrcholů typu "person".

Graph databáze jsou často zahrnuty do kategorie NoSQL nebo nerelační databáze, protože neexistuje závislost na schématu nebo omezeném datovém modelu. Tento nedostatek schématu umožňuje modelování a ukládání propojených struktur přirozeně a efektivně.

Graph databázi podle příkladu

Ukázkový graf vám pomůže pochopit, jak lze v jazyce Gremlin vyjádřit dotazy. Na následujícím obrázku je znázorněna obchodní aplikace, která spravuje data o uživatelích, zájmech a zařízeních v podobě grafu.

Sample database showing persons, devices, and interests

Tento graf má následující typy vrcholů (označují se také jako popisek v Gremlin):

  • Lidé: Graf obsahuje tři lidi, Robina, Thomase a Bena.
  • Zájmy: Jejich zájmy, v tomto příkladu hra fotbalu
  • Zařízení: Zařízení, která lidé používají
  • Operační systémy: Operační systémy, na kterých zařízení běží
  • Místo: Místa, ze kterých jsou zařízení přístupná

Vztahy mezi těmito entitami představujeme prostřednictvím následujících hraničních typů:

  • : Například "Thomas ví Robin"
  • Zájem: Chcete-li reprezentovat zájmy lidí v našem grafu, například "Ben je zájem o fotbal"
  • BěžíOS: Přenosný počítač spouští operační systém Windows
  • Použití: Reprezentace zařízení, které osoba používá. Robin například používá telefon Motorola se sériovým číslem 77.
  • Umístění: Představuje umístění, ze kterého se zařízení přistupuje.

Konzola Gremlin je interaktivní terminál, který nabízí Apache TinkerPop a tento terminál slouží k interakci s daty grafu. Další informace najdete v dokumentaci k rychlému startu o používání konzoly Gremlin. K jejich provedení můžete také použít ovladače Gremlin na platformě dle vlastního výběru (Java, Node.js, Python nebo .NET). Následující příklady ukazují, jak spouštět dotazy na tato data grafu pomocí konzoly Gremlin.

Nejprve se podívejme na CRUD. Následující příkaz Gremlinu vloží do grafu vrchol Thomas:

:> g.addV('person').property('id', 'thomas.1').property('firstName', 'Thomas').property('lastName', 'Andersen').property('age', 44)

Tento příkaz Gremlinu dále vloží do grafu mezi Thomase a Robina okraj knows (zná).

:> g.V('thomas.1').addE('knows').to(g.V('robin.1'))

Následující dotaz vrátí vrcholy person (osoba) seřazené podle jmen osob v sestupném pořadí:

:> g.V().hasLabel('person').order().by('firstName', decr)

Graf je užitečný zejména v případě, kdy potřebujete získat odpověď na otázky, jako je Které operační systémy přátelé Thomase používají? Tuto procházení Gremlin můžete spustit, abyste získali tyto informace z grafu:

:> g.V('thomas.1').out('knows').out('uses').out('runsos').group().by('name').by(count())

Další kroky

Další informace o podpoře grafů ve službě Azure Cosmos DB najdete zde: