Úvod do rozhraní Gremlin API ve službě 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é modely. Azure Cosmos DB poskytuje službu grafové databáze prostřednictvím rozhraní Gremlin API pro plně spravovanou databázovou službu určenou pro jakékoli škálování.

Architektura grafu služby Azure Cosmos DB

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í obrovský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 ve službě Azure Cosmos DB používá dotazovací jazyk Gremlin.

Rozhraní Gremlin API služby Azure Cosmos DB kombinuje výkon grafových databázových algoritmů s vysoce škálovatelnou spravovanou infrastrukturou a 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 ale existují určité rozdíly, které jsou specifické pro službu Azure Cosmos DB. Některé funkce podporované apache TinkerPop nejsou ve službě 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 nyní k dispozici v rozhraní Gremlin API služby Azure Cosmos DB.

Následují 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ý může zajistit kontinuitu vaší 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ším standardem grafových dotazů

    Ukládejte 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 grafových algoritmů.

    Azure Cosmos DB umožňuje bohaté dotazy a procházení v reálném čase bez nutnosti zadávat 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 vázána na omezení jejich infrastruktury a často vyžaduje vysokou úroveň údržby, aby se zajistila její provoz.

    Služba Cosmos DB jako plně spravovaná služba eliminuje 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ů na úrovni dat. 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í

    Ve výchozím nastavení Azure Cosmos DB 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 vytvář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é lze snadno integrovat s rozhraním Gremlin API služby Azure Cosmos DB.

  • Nastavitelné ú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ů služby 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 služby 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 samostatné definování entit a výpočty jejich relací 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 omezení.

Přístup k grafové databázi spoléhá na zachování vztahů 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 dvojic 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. Ve vrcholech nebo hranách může existovat libovolný počet vlastností a lze je použít k popisu a filtrování objektů v dotazu. Mezi ukázkové vlastnosti patří vrchol, který má název a věk, nebo hranu, která může mít časové razítko nebo váhu.

  • Popisek – Popisek je název nebo identifikátor vrcholu nebo okraje. 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".

Grafové 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ě.

Grafová databáze 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.

Ukázková databáze znázorňující osoby, zařízení a zájmy

Tento graf obsahuje 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 běží zařízení
  • 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 zná Robina.
  • Zájem: Chcete-li reprezentovat zájmy lidí v našem grafu, například "Ben má zájem o fotbal"
  • BěžíOS: Přenosný počítač používá operační systém Windows.
  • Používá: Představuje 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: