Ú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. Jedná se o vícemodelovou databázi a podporuje datové modely dokumentů, párů klíč-hodnota, grafů a rodin sloupců. Azure Cosmos DB poskytuje databázovou službu grafů prostřednictvím rozhraní Gremlin API v plně spravované databázové službě navržené pro libovolné škálování.
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í v milisekundách a snadno rozvíjet strukturu grafu. Rozhraní Gremlin API služby Azure Cosmos DB je postavené na rozhraní Apache TinkerPop,architektury grafového computingu. Rozhraní Gremlin API v Azure Cosmos DB používá dotazovací jazyk Gremlin.
Rozhraní Gremlin API služby Azure Cosmos DB kombinuje výkon databázových algoritmů grafů s vysoce škálovatelnou spravovanou infrastrukturou a poskytuje jedinečné a flexibilní řešení nejběžnějších problémů s daty, které jsou spojené s nedostatkem flexibility a relačních přístupů.
Poznámka
Modul grafů Azure Cosmos DB pečlivě dodržuje specifikaci Apache TinkerPop. V podrobnostech implementace ale existují určité rozdíly, které jsou specifické pro Azure Cosmos DB. Některé funkce podporované platformou 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 bez serveru je teď k dispozici v rozhraní Gremlin API služby Azure Cosmos DB.
Toto jsou odlišné funkce, které rozhraní Gremlin API služby Azure Cosmos DB 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é grafové databáze, které mohou mít prakticky neomezenou velikost z hlediska úložiště a zřízené propustnosti. S růstem škálování grafové databáze se data automaticky distribuují pomocí dělení grafů.
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 po celém světě poskytuje Azure Cosmos DB mechanismus automatického regionálního 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žeb v oblasti.
Rychlé dotazy a procházení s nejrozšířenějším standardem grafových dotazů
Uložte heterogenní vrcholy a hrany a dotazujte se na ně prostřednictvím 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, aniž by bylo nutné zakazovat nápovědy 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 databázových platforem grafů je svázaná s omezeními jejich infrastruktury a k zajištění provozu často vyžaduje vysoký stupeň údržby.
Jako plně spravovaná služba Cosmos DB eliminuje potřebu spravovat virtuální počítače, aktualizovat software modulu runtime, spravovat shardování 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. To umožňuje vývojářům 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 (nazývané také jako vrcholy) a hrany v grafu a neočekává ani nevyžaduje žádné schéma nebo vytvoření sekundárních indexů. Další informace o indexování v Azure Cosmos DB.
Kompatibilita s Apache TinkerPop
Azure Cosmos DB podporuje open source 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.
Nastavitelné úrovně konzistence
Azure Cosmos DB poskytuje pět jasně definovaných úrovní konzistence pro dosažení správnému kompromisu mezi konzistencí a výkonem pro vaši aplikaci. 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í. Pro tyto scénáře je ideální nízká latence, elastické škálování a nativní podpora Cosmos DB.
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čet jejich relací za běhu. I když má tento model své výhody, správa vysoce propojených dat může být náročná na základě jeho 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í grafů. 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 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í 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 vyjadřují informace o vrcholech a hranách. Vrcholy nebo hrany mohou mít libovolný počet vlastností a lze je použít k popisu a filtrování objektů v dotazu. Mezi příklady vlastností patří vrchol, který má jméno 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 hrany. Popisky mohou seskupit více vrcholů nebo hran tak, aby všechny vrcholy/hrany ve skupině měl určitý popisek. Například graf může mít více vrcholů typu popisek "osoba".
Graph databáze jsou často zahrnuty do kategorie NoSQL nebo nerelačních databází, protože na schématu nebo omezeném datovém modelu není žádná závislost. Tento nedostatek schématu umožňuje přirozeně a efektivně modelovat a ukládat propojené struktury.
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.
Tento graf má následující typy vrcholů (v Gremlin se také nazývají "popisek"):
- Lidé: Graf má tři lidi, Robina, Thomase a Bena.
- Interests(Zájmy): Jejich zájmy v tomto příkladu hra Football
- Zařízení: Zařízení, která lidé používají
- Operační systémy: Operační systémy, na které zařízení běží
- Místo: Místa, ze kterých se k zařízením přistupuje
Vztahy mezi těmito entitami představujeme prostřednictvím následujících typů hran:
- Knows(Zná): Například Thomas knows Robin (Tomáš zná Robina).
- Interested (Zájem): Představuje zájmy lidí v našem grafu, například Ben is interested in Football (Ben se zajímá o fotbal).
- RunsOS: Laptop runs the Windows OS
- Používá: K reprezentaci 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 mají být zařízení k dispozici.
Konzola Gremlin je interaktivní terminál nabízený Apache TinkerPop a tento terminál slouží k interakci s daty grafu. Další informace najdete v dokumentu rychlý Start, 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 spustit dotazy na 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í? Tento Gremlin průchod můžete spustit pro získání těchto informací 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: