úvod do rozhraní Gremlin API v Azure Cosmos DB

PLATÍ pro: rozhraní Gremlin API

Azure Cosmos DB   je globálně distribuovaná databázová služba pro více modelů od Microsoftu pro klíčové aplikace. Je to databáze s více modely a podporuje datové modely typu dokument, klíč-hodnota, graf a řada sloupců. Azure Cosmos DB poskytuje databázovou službu grafu prostřednictvím rozhraní API Gremlin pro plně spravovanou databázovou službu určenou pro libovolné škálování.

Architektura grafu služby Azure Cosmos DB

tento článek obsahuje přehled rozhraní Azure Cosmos DB API Gremlin a vysvětluje, jak je používat k ukládání obrovských grafů s miliardami vrcholů a hran. Můžete zadávat dotazy na grafy s latencí milisekund a snadno vyvíjet strukturu grafu. rozhraní Gremlin API pro Azure Cosmos DB je postavené na základě rozhraní Apache TinkerPop, architektury grafu computingu. rozhraní Gremlin API v Azure Cosmos DB používá dotazovací jazyk Gremlin.

rozhraní Gremlin API Azure Cosmos DB kombinuje sílu algoritmů databázové databáze s vysoce škálovatelnou a spravovanou infrastrukturou, aby poskytovala jedinečné a flexibilní řešení nejběžnějších problémů s daty, která souvisí s nedostatečnou flexibilitou a relačními přístupy.

Poznámka

Azure Cosmos DB graph engine úzce sleduje specifikace Apache TinkerPop. existují však určité rozdíly v podrobnostech implementace, které jsou specifické pro Azure Cosmos DB. některé funkce podporované Apache TinkerPop nejsou k dispozici v Azure Cosmos DB. další informace o nepodporovaných funkcích najdete v článku kompatibilita s Apache TinkerPop .

funkce rozhraní Gremlin API pro 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 kapacity bez serveru je teď k dispozici v Azure Cosmos DB rozhraní API pro Gremlin.

níže jsou uvedené odlišné funkce Azure Cosmos DB Gremlin API nabízí:

  • 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é databáze grafů, které mohou mít prakticky neomezenou velikost z hlediska úložiště a zajištěné propustnosti. Při zvětšování měřítka databáze grafu budou data automaticky distribuována pomocí dělení grafů.

  • Replikace mezi více oblastmi

    Azure Cosmos DB může automaticky replikovat data grafu do jakékoli 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 po celém světě Azure Cosmos DB poskytuje automatický mechanismus pro místní převzetí služeb při selhání, který umožňuje zajistit kontinuitu aplikace ve výjimečných případech přerušení služby v určité oblasti.

  • Rychlé dotazy a procházení s nejběžnějším přijatým standardem dotazů na grafy

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

    Azure Cosmos DB povoluje rozsáhlé dotazy v reálném čase a procházení, aniž by bylo nutné zadávat parametry schématu, sekundární indexy nebo zobrazení. Další informace najdete v článku o dotazování grafů pomocí jazyka Gremlin.

  • Plně spravovaná databáze grafu

    Azure Cosmos DB eliminuje nutnost správy databáze a počítačových prostředků. Většina stávajících databázových platforem grafu je vázána na omezení infrastruktury a často vyžaduje vysokou úroveň údržby, aby bylo zajištěno její fungování.

    jako plně spravovaná služba Cosmos DB odstraňuje nutnost spravovat virtuální počítače, aktualizovat běhový software, spravovat horizontálního dělení nebo replikaci nebo řešit komplexní upgrady na datové vrstvě. Každý graf je automaticky zálohovaný a chráněný proti selháním v dané oblasti. To umožňuje vývojářům soustředit se na dodávání hodnoty aplikace, a ne na provoz a správu databází grafů.

  • 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í v Azure Cosmos DB.

  • Kompatibilita s Apache TinkerPop

    Azure Cosmos DB podporuje open source standard Apache TinkerPop. Tinkerpop standard má rozsáhlou ekosystém aplikací a knihoven, které je možné snadno integrovat s Gremlin rozhraním API Azure Cosmos DB.

  • Přizpůsobitelné úrovně konzistence

    Azure Cosmos DB poskytuje pět jasně definovaných úrovní konzistence pro dosažení správných 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 č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ářů, kde může být užitečná podpora grafu 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í. minimální latence, elastické škálování a podpora nativního grafu Azure Cosmos DB jsou 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.

Seznámení s databázemi grafů

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čet jejich vztahů za běhu. I když tento model má své výhody, může být velmi propojená data nenáročná na správu v rámci svých omezení.

Přístup k databázi grafu spoléhá na trvalé vztahy ve vrstvě úložiště, což vede k vysoce efektivním operacím načítání grafů. rozhraní Gremlin API Azure Cosmos DB 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/vztahy – okraje označují vztahy 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 vyjadřují informace o vrcholech a hranách. V obou vrcholech nebo v okrajích může být libovolný počet vlastností, které lze použít k popisu a filtrování objektů v dotazu. Příkladem vlastností je vrchol, který má název a stáří nebo okraj, který může mít časové razítko nebo váhu.

  • Label – popisek je název nebo identifikátor vrcholu nebo okraje. Popisky mohou seskupovat více vrcholů nebo hran tak, aby všechny vrcholy a hrany ve skupině měly určitý popisek. Například graf může mít více vrcholů typu Label "Person".

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

Graph 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 má následující typy vrcholů (v Gremlin se také nazývají "jmenovka"):

  • Lidé: graf má tři lidi, Robin, Tomáš a Robert.
  • Zájmy: jejich zájmy v tomto příkladu se hrou fotbalu
  • Zařízení: zařízení, která uživatelé používají
  • Operační systémy: operační systémy, ve kterých se zařízení spouštějí
  • Místo: místa, ze kterých se mají zařízení přistupovat

Vztahy mezi těmito entitami zastupujeme prostřednictvím následujících typů Edge :

  • : například "Tomáš ví s dotazem"
  • Zúčastněte se: k vyjádření zájmů lidí v našem grafu, například "Robert se zajímá o fotbal."
  • RunsOS: laptop spouští operační systém Windows.
  • Používá: k vyjádření zařízení, které osoba používá. Robin například používá telefon Motorola se sériovým číslem 77.
  • Located (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 a tento terminál slouží k interakci s daty grafu. Další informace najdete v dokumentu Rychlý start, kde se dozvíte, jak používat konzolu 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í? Spuštěním tohoto procházení Gremlin můžete tyto informace získat 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: