Co je Azure Cosmos DB pro Apache Gremlin?

PLATÍ PRO: Gremlin

Azure Cosmos DB je plně spravovaná databáze NoSQL a relační databáze pro vývoj moderních aplikací.

Azure Cosmos DB for Apache Gremlin je služba grafových databází, kterou je možné použít k ukládání obrovských grafů s miliardami vrcholů a hran. Grafy můžete dotazovat s latencí v milisekundách a snadno rozvíjet strukturu grafu. Rozhraní API pro Gremlin je založené na apache TinkerPop, architektuře grafů, která používá dotazovací jazyk Gremlin.

Důležité

Grafový modul Azure Cosmos DB se úzce řídí specifikací Apache TinkerPop. Existují však určité rozdíly v podrobnostech implementace, které jsou specifické pro službu Azure Cosmos DB. Některé funkce podporované službou 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 .

Rozhraní API pro Gremlin kombinuje výkon algoritmů grafových databází s vysoce škálovatelnou a spravovanou infrastrukturou. Tento přístup poskytuje jedinečné a flexibilní řešení běžných problémů s daty spojených s nepružnými nebo relačními omezeními.

Tip

Chcete vyzkoušet rozhraní API pro Gremlin bez závazku? Vytvořte si účet služby Azure Cosmos DB pomocí bezplatného vyzkoušení služby Azure Cosmos DB .

Rozhraní API pro výhody Gremlin

Rozhraní API pro Gremlin přináší další výhody, které přináší služba Azure Cosmos DB:

  • Elasticky škálovatelná propustnost a úložiště: Grafy v reálném světě se musí škálovat nad rámec kapacity jednoho serveru. Azure Cosmos DB podporuje horizontálně škálovatelné grafové databáze, které můžou mít 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 ve více oblastech: 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 mechanismus regionálního převzetí služeb při selhání spravovaný službou. Tento mechanismus může zajistit kontinuitu vaší aplikace ve výjimečných případech přerušení služby v oblasti.

  • Rychlé dotazy a procházení pomocí nejčastěji používaného standardu dotazů grafů: 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ů. Rozhraní API pro Gremlin umožňuje bohaté dotazy a procházení v reálném čase bez nutnosti zadávat nápovědy schématu, sekundární indexy nebo zobrazení. Další informace najdete v tématu Dotazování grafů pomocí Gremlin.

  • Plně spravovaná grafová databáze: Azure Cosmos DB eliminuje potřebu správy databázových a strojových prostředků. Většina stávajících platforem grafových databází je vázána na omezení své infrastruktury a často vyžaduje vysoký stupeň údržby, aby byl zajištěn její provoz. Cosmos DB jako plně spravovaná služba odstraňuje nutnost spravovat virtuální počítače, aktualizovat software modulu runtime, spravovat horizontální dělení nebo replikaci nebo řešit složité upgrady datové vrstvy. Každý graf je automaticky zálohovaný a chráněný proti selháním v dané oblasti. Tato správa umožňuje vývojářům soustředit se na poskytování hodnot aplikace místo na provoz a správu grafových databází.

  • Automatické indexování: Rozhraní API pro Gremlin ve výchozím nastavení automaticky indexuje všechny vlastnosti v rámci uzlů (označovaných také jako vrcholy) a hrany v grafu a neočekává ani nevyžaduje žádné schéma ani vytváření sekundárních indexů. Další informace najdete v tématu indexování ve službě Azure Cosmos DB.

  • Kompatibilita s Apache TinkerPop: Rozhraní API pro Gremlin podporuje opensourcový standard Apache TinkerPop. Standard Apache TinkerPop má dostatek ekosystému aplikací a knihoven, které lze snadno integrovat s rozhraním API.

  • Nastavitelné úrovně konzistence: Azure Cosmos DB poskytuje pět jasně definovaných úrovní konzistence, které zajišťují správný kompromis 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 tématu Nastavitelné úrovně konzistence dat ve službě Azure Cosmos DB.

Běžné scénáře pro rozhraní API pro Gremlin

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

  • Sociální sítě a zákazník 365: Kombinováním dat o zákaznících a jejich interakcích s jinými lidmi můžete vytvářet přizpůsobené možnosti, předpovídat chování zákazníků nebo spojovat lidi s ostatními s podobnými 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.

  • Moduly doporučení: Tento scénář se běžně 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í. Pro tyto scénáře je ideální nízká latence, elastické škálování a nativní podpora grafů služby Azure Cosmos DB.

  • Geoprostorové: Mnoho aplikací v oblasti telekomunikačních služeb, logistiky a plánování cest potřebuje najít lokaci zájmu v rámci oblasti nebo najít 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í: Díky sítím a připojením mezi zařízeními IoT modelovanými jako graf můžete lépe porozumět stavu vašich zařízení a prostředků. 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čet jejich relací za běhu. I když má tento model své výhody, správa vysoce propojených dat může být v rámci jeho omezení náročná.

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í grafů. Rozhraní API pro Gremlin podporuje model grafu vlastností.

Objekty grafu vlastností

Graf vlastností je struktura, která se skládá z vrcholů a hran. Oba objekty mohou 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í vztahy mezi vrcholy. Osoba může například znát jinou osobu, být zapojena do události nebo nedávno byla na nějakém místě.

  • Vlastnosti: Vlastnosti vyjadřují informace (nebo metadata) o vrcholech a hranách. Vrcholy nebo hrany mohou obsahovat libovolný počet vlastností, které se dají použít k popisu a filtrování objektů v dotazu. Mezi příklady vlastností patří vrchol, který má název a stáří, nebo hranu, která může mít časové razítko a/nebo váhu.

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

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 přirozeně a efektivně modelovat a ukládat propojené struktury.

Příklad grafové databáze

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ý graf vlastností zobrazující osoby, zařízení a zájmy

Tento graf má následující typy vrcholů . Tyto typy se v Gremlin označují také jako popisky :

  • Lidé: Graf obsahuje tři osoby; Robin, Thomas a Ben.

  • Zájmy: Jejich zájmy v tomto příkladu zahrnují hru fotbalu.

  • Zařízení: Zařízení, která uživatelé používají.

  • Operační systémy: Operační systémy, ve kterých zařízení běží.

  • Místo: Místo, kde se zařízení používají.

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

  • Zná: Představuje známé informace. Například "Thomas zná Robina".

  • Zájem: Zastupujte zájmy lidí v našem grafu. Například "Ben má zájem o fotbal".

  • RunsOS: Představuje operační systém, který zařízení používá. Například "Přenosný počítač používá operační systém Windows".

  • Použití: Představuje zařízení, které osoba používá. Příklad: "Robin používá telefon Motorola se sériovým číslem 77".

  • Umístění: Představuje umístění, ze kterého se k zařízením přistupuje.

Konzola Gremlin je interaktivní terminál, který nabízí Apache TinkerPop. Tento terminál slouží k interakci s daty grafu. Další informace najdete v rychlém startu 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íváme na vytvoření, čtení, aktualizaci a odstranění (CRUD). Následující příkaz Gremlin vloží do grafu vrchol Thomas s několika vlastnostmi:

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

Tip

Pokud budete postupovat podle těchto příkladů, můžete některou z těchto vlastností (age, firstName, lastName) použít jako klíč oddílu při vytváření grafu. Vlastnost id se v grafu nepodporuje jako klíč oddílu.

Následující příkaz Gremlin pak vloží mezi Thomase a Robina známou hranu.

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

Následující dotaz vrátí vrcholy osob v sestupném pořadí podle jejich křestních jmen:

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í? Tyto informace můžete z grafu získat spuštěním tohoto procházení Gremlin:

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

Další kroky