Gráfadatok modellezése az Apache Gremlinhez készült Azure Cosmos DB-vel

A KÖVETKEZŐKRE VONATKOZIK: Gremlin

Ez a cikk javaslatokat tartalmaz a gráfadatmodellek használatára. Ezek az ajánlott eljárások létfontosságúak a gráfadatbázis-rendszerek skálázhatóságának és teljesítményének az adatok fejlődésével való biztosításához. A hatékony adatmodell különösen fontos a nagy léptékű gráfok esetében.

Követelmények

Az útmutatóban ismertetett folyamat az alábbi feltételezéseken alapul:

  • A problématérben lévő entitások azonosíthatók. Ezeket az entitásokat minden kéréshez atomi módon kell használni. Más szóval az adatbázisrendszert nem arra tervezték, hogy egyetlen entitás adatait több lekérdezési kérelemben lekérje.
  • Megismerheti az adatbázisrendszer olvasási és írási követelményeit . Ezek a követelmények vezetik a gráfadatmodellhez szükséges optimalizálást.
  • Az Apache Tinkerpop tulajdonsággrafikon-szabvány alapelvei jól érthetők.

Mikor van szükségem gráfadatbázisra?

A gráfadatbázis-megoldás optimálisan használható, ha az adattartományban lévő entitások és kapcsolatok az alábbi jellemzők valamelyikével rendelkeznek:

  • Az entitások leíró kapcsolatokon keresztül kapcsolódnak egymáshoz . Ebben a forgatókönyvben az az előnye, hogy a kapcsolatok a tárolóban maradnak.
  • Vannak ciklikus kapcsolatok vagy önállóan hivatkozott entitások. Ez a minta gyakran kihívást jelent a relációs vagy dokumentum-adatbázisok használatakor.
  • Az entitások között dinamikusan változó kapcsolatok vannak . Ez a minta különösen a sok szinttel rendelkező hierarchikus vagy faszerkezetes adatokra vonatkozik.
  • Az entitások között több-a-többhöz kapcsolat áll fenn.
  • Az entitásokra és kapcsolatokra egyaránt vonatkoznak írási és olvasási követelmények.

Ha a fenti feltételek teljesülnek, a gráfadatbázis-megközelítés valószínűleg előnyökkel jár a lekérdezések összetettsége, az adatmodell méretezhetősége és a lekérdezési teljesítmény szempontjából.

A következő lépés annak meghatározása, hogy a gráf elemzési vagy tranzakciós célokra lesz-e felhasználva. Ha a gráfot nagy számítási feladatokhoz és adatfeldolgozási feladatokhoz szeretné használni, érdemes megvizsgálni a Cosmos DB Spark-összekötőt és a GraphX-kódtárat.

Gráfobjektumok használata

Az Apache Tinkerpop tulajdonsággrafikon-szabvány két objektumtípust határoz meg: csúcsokat és éleket.

A gráfobjektumok tulajdonságaihoz az alábbi ajánlott eljárások tartoznak:

Objektum Tulajdonság Típus Jegyzetek
Vertex ID (Azonosító) Sztring Egyedileg kikényszerítve partíciónként. Ha a beszúráskor nem ad meg értéket, a rendszer egy automatikusan létrehozott GUID-t tárol.
Vertex Címke Sztring Ez a tulajdonság határozza meg a csúcspont által képviselt entitás típusát. Ha nincs megadva érték, a rendszer egy alapértelmezett értékcsúcsot használ.
Vertex Tulajdonságok Sztring, logikai, numerikus Az egyes csúcsokban kulcs-érték párokként tárolt különálló tulajdonságok listája.
Vertex Partíciókulcs Sztring, logikai, numerikus Ez a tulajdonság határozza meg a csúcspont és a kimenő élek tárolási helyét. További információ a gráfparticionálásról.
Edge ID (Azonosító) Sztring Egyedileg kikényszerítve partíciónként. Alapértelmezés szerint automatikusan létre van hozva. Az éleknek általában nem kell egyedileg lekérnie egy azonosítót.
Edge Címke Sztring Ez a tulajdonság határozza meg a két csúcspont közötti kapcsolat típusát.
Edge Tulajdonságok Sztring, logikai, numerikus Az egyes éleken kulcs-érték párokként tárolt különálló tulajdonságok listája.

Megjegyzés

Az élekhez nincs szükség partíciókulcs-értékre, mivel az érték automatikusan hozzá lesz rendelve a forrás csúcsa alapján. További információ: Particionált gráf használata az Azure Cosmos DB-ben.

Entitás- és kapcsolatmodellezési irányelvek

Az alábbi irányelvek segítséget nyújtanak az Apache Gremlin-gráfadatbázishoz készült Azure Cosmos DB adatmodellezésének megközelítésében. Ezek az irányelvek feltételezik, hogy létezik egy adattartomány definíciója és a hozzá tartozó lekérdezések.

Megjegyzés

A következő lépések javaslatokként jelennek meg. Mielőtt éles üzemre késznek tekintené, ki kell értékelnie és tesztelnie a végső modellt. A javaslatok emellett az Azure Cosmos DB Gremlin API-implementációjára is vonatkoznak.

Csúcspontok és tulajdonságok modellezése

A gráfadatmodellek első lépése az, hogy minden azonosított entitást egy csúcsobjektumra képeznek le. Az összes entitás csúcsokra való egy-az-egyhez leképezésének kezdeti lépésnek kell lennie, és változhat.

Az egyik gyakori buktató az egyetlen entitás tulajdonságainak leképezése különálló csúcspontokként. Vegyük az alábbi példát, ahol ugyanaz az entitás két különböző módon jelenik meg:

  • Csúcspontalapú tulajdonságok: Ebben a megközelítésben az entitás három különböző csúcspontot és két élet használ a tulajdonságainak leírásához. Bár ez a megközelítés csökkentheti a redundanciát, növeli a modell összetettségét. A modell összetettségének növekedése további késést, lekérdezések összetettségét és számítási költségeket eredményezhet. Ez a modell a particionálás során is kihívást jelenthet.

    Entitásmodell diagramja tulajdonságok csúcsaival.

  • Tulajdonságba ágyazott csúcsok: Ez a megközelítés a kulcs-érték párok listájának használatával jeleníti meg az entitás összes tulajdonságát egy csúcson belül. Ez a megközelítés csökkenti a modell összetettségét, ami egyszerűbb lekérdezésekhez és költséghatékonyabb bejárásokhoz vezet.

    Az előző diagram Luis-csúcsának ábrája azonosítóval, címkével és tulajdonságokkal.

Megjegyzés

Az előző diagramok egy egyszerűsített gráfmodellt mutatnak be, amely csak az entitástulajdonságok felosztásának két módját hasonlítja össze.

A tulajdonságba ágyazott csúcsok mintája általában nagyobb teljesítményű és méretezhetőbb megközelítést biztosít. Az új gráfadatmodell alapértelmezett megközelítésének ehhez a mintához kell közelednie.

Vannak azonban olyan helyzetek, amikor egy tulajdonságra való hivatkozás előnyökkel járhat. Ha például a hivatkozott tulajdonság gyakran frissül. Használjon egy külön csúcspontot egy olyan tulajdonság ábrázolásához, amely folyamatosan változik a frissítéshez szükséges írási műveletek mennyiségének minimalizálása érdekében.

Kapcsolatmodellek élirányokkal

A csúcspontok modellezése után az élek hozzáadhatók a köztük lévő kapcsolatok jelöléséhez. Az első szempont, amelyet ki kell értékelni, a kapcsolat iránya.

A peremhálózati objektumok alapértelmezett iránya a vagy outE() függvények out() használatakor bejárást követ. Ennek a természetes iránynak a használata hatékony működést eredményez, mivel minden csúcspont a kimenő élekkel együtt van tárolva.

Ha azonban egy él ellentétes irányában halad át a függvény használatával, az in() mindig keresztpartíciós lekérdezést eredményez. További információ a gráfparticionálásról. Ha a függvény használatával in() folyamatosan kell haladnia, javasoljuk, hogy mindkét irányban adjon hozzá éleket.

A peremvonal meghatározásához használja a .to() vagy .from() predikátumokat a .addE() Gremlin lépéssel. Vagy használja a tömeges végrehajtói kódtárat a Gremlin API-hoz.

Megjegyzés

A peremhálózati objektumoknak alapértelmezés szerint van irányuk.

Kapcsolatfeliratok

A leíró kapcsolatcímkék használata javíthatja az élfeloldási műveletek hatékonyságát. Ezt a mintát a következő módokon alkalmazhatja:

  • Kapcsolat címkézéséhez használjon nem általános kifejezéseket.
  • Társítsa a forráscsúcs címkéjét a célcsúcs címkéjével a kapcsolat nevével.

Kapcsolatcímkézési példák ábrája.

Minél pontosabb az a címke, amelyet a bejárás a szegélyek szűrésére használ, annál jobb. Ez a döntés jelentős hatással lehet a lekérdezési költségekre is. A lekérdezés költségét bármikor kiértékelheti a executionProfile lépéssel.

Következő lépések