Mi az Az Azure Cosmos DB for Apache Gremlin?

A KÖVETKEZŐKRE VONATKOZIK: Gremlin

Az Azure Cosmos DB egy teljes mértékben felügyelt NoSQL- és relációs adatbázis a modern alkalmazásfejlesztéshez.

Az Apache Gremlinhez készült Azure Cosmos DB egy gráfadatbázis-szolgáltatás, amellyel hatalmas gráfokat tárolhat csúcspontok és élek milliárdjaival. A gráfokat ezredmásodperc késéssel kérdezheti le, és könnyedén fejlesztheti a gráfstruktúrát. A Gremlin API alapja az Apache TinkerPop, a Gremlin lekérdezési nyelvet használó gráf-számítási keretrendszer.

Fontos

Az Azure Cosmos DB gráfmotor szorosan követi az Apache TinkerPop specifikációját. Az Azure Cosmos DB-hez tartozó implementáció részletei között azonban vannak különbségek. Az Apache TinkerPop által támogatott funkciók némelyike nem érhető el az Azure Cosmos DB-ben. A nem támogatott funkciókról további információt az Apache TinkerPop-tal való kompatibilitásról szóló cikkben talál.

A Gremlin API egyesíti a gráfadatbázis-algoritmusok erejét a nagymértékben skálázható, felügyelt infrastruktúrával. Ez a megközelítés egyedi és rugalmas megoldást kínál a rugalmatlan vagy relációs korlátozásokhoz kapcsolódó gyakori adatproblémákra.

Tipp.

Szeretné kipróbálni a Gremlin API-t kötelezettségvállalás nélkül? Hozzon létre egy Azure Cosmos DB-fiókot az Azure Cosmos DB ingyenes kipróbálása használatával.

API a Gremlin előnyeihez

A GremlinHEZ készült API az Azure Cosmos DB-re való építés előnyeit is hozzáadta:

  • Rugalmasan méretezhető átviteli sebesség és tárolás: A valós gráfoknak az egyetlen kiszolgáló kapacitásán túl kell méretezni. Az Azure Cosmos DB támogatja a horizontálisan méretezhető gráfadatbázisokat, amelyek korlátlan méretűek lehetnek a tárolás és a kiosztott átviteli sebesség tekintetében. A gráfadatbázis méretezésének növekedésével az adatok automatikusan elosztódnak gráfparticionálással.

  • Többrégiós replikáció: Az Azure Cosmos DB képes automatikusan replikálni a gráfadatokat a világ bármely Azure-régiójába. A globális replikáció leegyszerűsíti az olyan alkalmazások fejlesztését, amelyek globális adathozzáférést igényelnek. Amellett, hogy a világ bármely pontján minimalizálja az olvasási és írási késést, az Azure Cosmos DB szolgáltatás által felügyelt regionális feladatátvételi mechanizmust is biztosít. Ez a mechanizmus biztosítja az alkalmazás folytonosságát egy régió szolgáltatáskimaradásának ritka eseteiben.

  • Gyors lekérdezések és bejárások a legelterjedtebb gráf lekérdezési szabványsal: Heterogén csúcsokat és éleket tárol, és lekérdezi őket egy jól ismert Gremlin-szintaxissal. A Gremlin egy imperatív, funkcionális lekérdezési nyelv, amely gazdag felületet biztosít a gyakori gráf algoritmusok implementálásához. A Gremlin API gazdag valós idejű lekérdezéseket és bejárásokat tesz lehetővé anélkül, hogy sémamutatókat, másodlagos indexeket vagy nézeteket kellene megadnia. További információ: Lekérdezési grafikonok a Gremlin használatával.

  • Teljes körűen felügyelt gráfadatbázis: Az Azure Cosmos DB szükségtelenné teszi az adatbázis- és gépi erőforrások kezelését. A legtöbb meglévő gráfadatbázis-platform az infrastruktúra korlátaihoz van kötve, és gyakran magas szintű karbantartást igényel a működés biztosítása érdekében. Teljes körűen felügyelt szolgáltatásként a Cosmos DB nem igényli a virtuális gépek kezelését, a futtatókörnyezeti szoftverek frissítését, a horizontális skálázás vagy a replikáció kezelését, illetve az összetett adatréteg-frissítések kezelését. Minden gráfról automatikus biztonsági mentés készül, és védelmet élveznek a regionális meghibásodásokkal szemben. Ez a felügyelet lehetővé teszi a fejlesztők számára, hogy a gráfadatbázisok üzemeltetése és kezelése helyett az alkalmazás értékének átadására összpontosítsanak.

  • Automatikus indexelés: Alapértelmezés szerint a Gremlin API automatikusan indexeli a csomópontokon (más néven csúcspontokon) és éleken belüli összes tulajdonságot a gráfban, és nem számít sémára vagy másodlagos indexek létrehozására. További információ: indexelés az Azure Cosmos DB-ben.

  • Kompatibilitás az Apache TinkerPop-tal: A Gremlin API támogatja a nyílt forráskódú Apache TinkerPop szabványt. Az Apache TinkerPop szabvány alkalmazások és kódtárak bőséges ökoszisztémájával rendelkezik, amelyek könnyen integrálhatók az API-val.

  • Konzisztenciaszintek: Az Azure Cosmos DB öt jól definiált konzisztenciaszintet biztosít az alkalmazás konzisztencia és teljesítmény közötti megfelelő kompromisszum eléréséhez. A lekérdezések és olvasási műveletek esetében az Azure Cosmos DB öt különböző konzisztenciaszintet kínál: erős, kötött elavulás, munkamenet, konzisztens előtag és végleges. Ezek a részletes, jól meghatározott konzisztenciaszintek lehetővé teszik, hogy ésszerű kompromisszumot alakítson ki a konzisztencia, a rendelkezésre állás és a késleltetés között. További információkért tekintse meg az Azure Cosmos DB adatkonzisztenciaszintjeit.

Gyakori forgatókönyvek a Gremlin API-hoz

Íme néhány olyan forgatókönyv, ahol az Azure Cosmos DB gráftámogatása hasznos lehet:

  • Közösségi hálózatok/Ügyfél 365: Az ügyfelek adatainak és másokkal való interakcióinak kombinálásával személyre szabott élményeket fejleszthet, előre jelezheti az ügyfelek viselkedését, vagy hasonló érdeklődési körrel rendelkező személyekkel is kapcsolatba léphet. Az Azure Cosmos DB használatával felügyelhetők a közösségi hálózatok, és nyomon követhetők az ügyfelek preferenciái és adatai.

  • Javaslatmotorok: Ezt a forgatókönyvet gyakran használják a kiskereskedelmi iparágban. A termékekkel, a felhasználókkal és a felhasználók interakcióival (például vásárlások, böngészés vagy az egyes cikkek értékelése) kapcsolatos információk kombinálásával testre szabott javaslatokat állíthat össze. Az Azure Cosmos DB alacsony késése, rugalmas skálázása és natív gráftámogatása ideális ezekhez a forgatókönyvekhez.

  • Térinformatikai: A távközlés, a logisztika és az utazástervezés területén számos alkalmazásnak meg kell találnia egy érdekes helyet egy adott területen belül, vagy meg kell találnia a legrövidebb/optimális útvonalat két hely között. Az Azure Cosmos DB természetes választás az ilyen problémákhoz.

  • Eszközök internete: A gráfként modellezett IoT-eszközök hálózatával és kapcsolataival jobban megértheti az eszközök és eszközök állapotát. Azt is megértheti, hogy a hálózat egyes részeinek módosítása milyen potenciális hatással lehet a többi részre.

A gráfadatbázisok bemutatása

Az adatok a való világban természetes módon kapcsolódnak egymáshoz. A hagyományos adatmodellezés az entitások különálló meghatározására és a kapcsolatuk futásidejű számítására összpontosít. Bár ennek a modellnek megvannak az előnyei, a szigorúan összekapcsolt adatok kezelése nehézkes lehet a korlátozások mellett.

A gráfadatbázis-megközelítés ehelyett a tárolási rétegben lévő kapcsolatok megőrzésére támaszkodik, ami rendkívül hatékony gráflekérési műveletekhez vezet. A Gremlin API támogatja a tulajdonsággráf-modellt.

Tulajdonságdiagram-objektumok

A tulajdonságdiagramcsúcsokból és élekből álló struktúra. Mindkét objektum tulajdonságként tetszőleges számú kulcs-érték párgal rendelkezhet.

  • Csúcsok/csomópontok: A csúcsok különálló entitásokat, például személyt, helyet vagy eseményt jelölnek.

  • Élek/kapcsolatok: Az élek a csúcsok közötti kapcsolatokat jelölik. Előfordulhat például, hogy egy személy ismer egy másik személyt, részt vesz egy eseményben, vagy nemrég egy helyen tartózkodott.

  • Tulajdonságok: A tulajdonságok kifejezik a csúcsokra és élekre vonatkozó információkat (vagy metaadatokat). A csúcspontokban vagy élekben tetszőleges számú tulajdonság lehet, és a lekérdezések objektumainak leírására és szűrésére is használhatók. A példatulajdonságok közé tartozik egy névvel és korsal rendelkező csúcspont, vagy egy szél, amely időbélyeggel és/vagy súlysal rendelkezhet.

  • Címke – A címke egy csúcs vagy él neve vagy azonosítója. A címkék több csúcsot vagy élet is csoportosíthatnak, így a csoport összes csúcsa/széle rendelkezik egy adott címkével. Egy gráf például több csúcsponttal is rendelkezhet, "person" címkével.

A gráfadatbázisok gyakran a NoSQL vagy a nem relációs adatbázis kategóriájába tartoznak, mivel nincs függőség a sémától vagy a korlátozott adatmodellekhez. A séma hiánya lehetővé teszi a csatlakoztatott struktúrák természetes és hatékony modellezését és tárolását.

Gráfadatbázis-példa

Használjunk egy mintagráfot annak megismeréséhez, hogyan adhatók meg lekérdezések a Gremlinben. Az alábbi ábrán egy üzleti alkalmazás látható, amely felhasználókkal, érdeklődési körökkel és eszközökkel kapcsolatos adatokat kezel egy gráf formájában.

Személyeket, eszközöket és érdeklődési köröket ábrázoló mintatulajdonság-diagram.

Ez a gráf a következő csúcstípusokat tartalmazza. Ezeket a típusokat a Gremlinben címkéknek is nevezik:

  • Kapcsolatok: A gráf három személyből áll; Robin, Thomas és Ben.

  • Érdeklődési körök: Az érdeklődési körük ebben a példában a labdarúgás játékát is magában foglalja.

  • Eszközök: A felhasználók által használt eszközök.

  • Operációs rendszerek: Azok az operációs rendszerek, amelyeken az eszközök futnak.

  • Hely: Az a hely,ahol az eszközök elérhetők.

Az entitások közötti kapcsolatokat a következő éltípusokon keresztül ábrázoljuk:

  • Tudja: Az ismerősséget képviseli. Például: "Thomas ismeri Robint".

  • Érdekel: A gráfban szereplő emberek érdekeit képviseli. Például: "Ben érdekli a labdarúgás".

  • FuttatásOS: Az eszköz operációs rendszerének leírása. Például: "A Laptop a Windows operációs rendszert futtatja".

  • Felhasználás: Az adott személy által használt eszköz ábrázolása. Például: "Robin egy Motorola telefont használ a 77-es sorozatszámmal".

  • Található: Azt a helyet jelöli, ahonnan az eszközök elérhetők.

A Gremlin-konzol egy interaktív terminál, amelyet az Apache TinkerPop kínál, és ez a terminál a gráfadatok kezelésére szolgál. További információkért tekintse meg a Gremlin konzol rövid útmutatóját. Ezek a műveletek tetszőleges platformon is (Java, Node.js, Python vagy .NET) végrehajthatók a Gremlin-illesztők használatával. Az alábbi példák bemutatják, hogyan futtathat lekérdezéseket a gráfadatokon a Gremlin-konzol használatával.

Először nézzük meg a létrehozást, olvasást, frissítést és törlést (CRUD). A következő Gremlin-utasítás beszúrja a Thomas-csúcsot a gráfba néhány tulajdonsággal:

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

Tipp.

Ha ezeket a példákat követi, ezeket a tulajdonságokat (age, firstName, lastName) használhatja partíciókulcsként a gráf létrehozásakor. A id tulajdonság nem támogatott partíciókulcsként egy gráfban.

Ezután a következő Gremlin-utasítás beszúr egy ismerőszeget Thomas és Robin közé.

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

Az alábbi lekérdezés a személy csúcspontjait adja vissza az utónevük csökkenő sorrendjében:

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

A gráfok különösen akkor hasznosak, ha olyan kérdéseket kell megválaszolnunk, mint például: „Milyen operációs rendszereket használnak Thomas barátai?”. A Gremlin-bejárás futtatásával lekérheti ezeket az információkat a grafikonról:

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

Következő lépések