Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Megjegyzés:
Ez a funkció jelenleg nyilvános előzetes verzióban érhető el. Ez az előzetes verzió szolgáltatásszintű szerződés nélkül érhető el, és éles számítási feladatokhoz nem ajánlott. Előfordulhat, hogy bizonyos funkciók nem támogatottak, vagy korlátozott képességekkel rendelkeznek. További információkért lásd: Microsoft Azure Previews Kiegészítő Felhasználási Feltételek.
A gráftípus úgy írja le a gráf szerkezetét, hogy meghatározza, mely csomópontok és élek létezhetnek. Gondoljon rá úgy, mint egy tervre vagy sémára – a csomópontok és élek alakját határozza meg a gráfban a címkék és a tulajdonságok szempontjából. Élek (a csomópontok közötti kapcsolatok) esetében azt is meghatározza, hogy milyen típusú élek csatlakoztathatók a csomópontokhoz. Ha ismeri a relációs adatbázisokat, a gráftípusok ugyanúgy működnek, mint ahogyan az ER-diagramok a táblákat és az idegenkulcs-kapcsolatokat írják le.
Fontos
Ez a cikk kizárólag a közösségi hálózati példa gráfdatasetet használja.
A gráftípusok számos fontos előnnyel járnak:
- Adatérvényesítés: Győződjön meg arról, hogy a gráf csak érvényes csomópont- és élkombinációkat tartalmaz.
- Lekérdezésoptimalizálás: Segít a lekérdezési motornak megérteni az adatstruktúrát a jobb teljesítmény érdekében.
- Dokumentáció: A gráf szerkezetének egyértelmű meghatározása fejlesztők és elemzők számára.
Megjegyzés:
Ez a cikk fogalmilag bemutatja a gráftípusokat, és a GQL szabványban meghatározott szintaxissal szemlélteti a definíciójukat. Ez a szintaxis azonban jelenleg nem támogatott közvetlenül a Microsoft Fabric gráfja esetében.
A gráftípus szerkezetileg meghatározza a gráftípus engedélyezett csomóponttípusait és éltípusait, valamint további korlátozásokat, amelyek tovább korlátozzák ezeket a gráfokat.
Megjegyzés:
A gráftípusok csomóponttípus, éltípus és kényszerdefiníciók készletének megadásával határozhatók meg. A definíciók sorrendjének módosítása nem változtatja meg a definiált gráftípust.
Csomóponttípusok definiálása
A csomóponttípusok határozzák meg, hogy a csomópontok milyen címkéket és tulajdonságtípusokat tartalmazhatnak. Az alábbiak szerint adhat meg egy alapszintű csomóponttípust:
(:Organization => {
id :: UINT64 NOT NULL,
name :: STRING,
url :: STRING
})
Ez a példa létrehoz egy csomóponttípust, amely a következőkkel definiálja a csomópontokat:
- A címke
Organization. - Olyan
idtulajdonság, amely aláíratlan egész számokat tartalmaz, és nem lehet null értékű. - Karakterláncértékeket
nametartalmazó tulajdonság (lehet null). - Karakterláncértékeket
urltartalmazó tulajdonság (lehet null).
Az :: operátor minden tulajdonsághoz megadja az adattípust, míg NOT NULL azt jelzi, hogy a tulajdonságnak mindig értéknek kell lennie.
Megjegyzés:
NOT NULL A GQL típusának része, amely különbözik az SQL-től.
A csomóponttípusok összetettebbek is lehetnek, több tulajdonsággal és adattípussal:
(:Person => {
id :: UINT64 NOT NULL,
creationDate :: ZONED DATETIME,
firstName :: STRING,
lastName :: STRING,
gender :: STRING,
birthday :: UINT64,
browserUsed :: STRING,
locationIP :: STRING
})
Több címkével rendelkező csomóponttípusok
A csomópontok több címkével is támogathatják az öröklést és a kategorizálást. Egy csomóponttípushoz több címkét is megadhat, de egy címkének (a "kulcsfeliratnak") egyedileg azonosítania kell a csomópont típusát (ha csak egy címke van megadva, akkor ez lesz a csomóponttípus kulcscímkéje).
Vegyük például a következőt:
(:University => :Organization),
(:Company => :Organization)
University Itt a Company két csomóponttípus kulcscímkéi vannak definiálva, míg Organization egy másodlagos címke, amelyet mindkét típus megoszt. Figyelje meg, hogy a kulcscímke és a másodlagos címkék hogyan vannak elválasztva => az egyes csomóponttípusoktól. Ez a megközelítés egy olyan típushierarchiát hoz létre, amelyben az egyetemek és a vállalatok is szervezetek.
Mivel a kulcscímkék azonosítják a csomóponttípusokat, a másodlagos címkék által azonosított csomóponttípusok tulajdonságai automatikusan öröklődnek a szintaxis használatakor. Ezért az előző szintaxis a következő csomóponttípusok hatékony definiálásához értelmezhető:
(:University => :Organization {
id :: UINT64 NOT NULL,
name :: STRING,
url :: STRING
}),
(:Company => :Organization {
id :: UINT64 NOT NULL,
name :: STRING,
url :: STRING
})
Megjegyzés:
A csomóponttípusok hierarchiáinak definiálásakor a kulcscímkék nélkülözhetetlenek. Segítenek a rendszernek megérteni, hogy melyik csomóponttípusra hivatkozik, ha több típus azonos címkéket használ.
Időt takaríthat meg öröklési parancsikonokkal
A szülőcsomópont-típusok címkéinek és tulajdonságainak ismétlése fárasztó és hibalehetőséget kap. A Microsoft Fabric graphja biztosítja az += operátort, így csak az extra (nem kötelező) címkéket és tulajdonságtípusokat adhatja meg:
(:Post => :Message += {
language :: STRING,
imageFile :: STRING
})
Ha nincs megadva további tulajdonság, a gráf az összes szükséges tulajdonságot örökli a szülőtípustól:
(:Comment => :Message) -- Same as: (:Comment => :Message += {})
Absztrakt csomóponttípusok használata
A csomóponttípusok kizárólag hierarchiák létrehozásához definiálhatók, még akkor is, ha a gráf nem tartalmaz ilyen típusú konkrét csomópontokat. Az absztrakt csomóponttípusok hasznosak fogalmi csoportosítások és megosztott tulajdonságkészletek létrehozásához. Erre a célra a Microsoft Fabric gráfjának megfelelően ABSTRACT definiálhat csomóponttípust:
ABSTRACT (:Message => {
id :: UINT64 NOT NULL,
creationDate :: ZONED DATETIME,
browserUsed :: STRING,
locationIP :: STRING,
content :: STRING,
length :: UINT64
})
Az absztrakt csomóponttípusok nem érhetők el a közvetlen gráfbetöltéshez – csak a hierarchia strukturálásához és a megosztott tulajdonságok definiálásához léteznek. Az absztrakt típusoktól öröklő konkrét csomóponttípusok betölthetők adatokkal.
Éltípusok és -családok definiálása
Az élek típusa határozza meg a peremhálózatok kulcscímkéjét, tulajdonságtípusait és végpontcsomópont-típusait. A gráfadatbázisokban az élek csomópontok közötti kapcsolatokat jelölnek. Az éldefiníció megmutatja a rendszernek, hogy milyen kapcsolatok engedélyezettek a gráfban:
(:Person)-[:knows { creationDate :: ZONED DATETIME }]->(:Person)
Ez az éltípus az összes élét a következőkkel határozza meg:
- A (kulcs) címke
knows. - Értékeket
creationDatetartalmazóZONED DATETIMEtulajdonság (időbélyegek és időzónák eltolása). - A forrás- és célvégpontoknak csomópontoknak kell lenniük
Person.
A nyíl -> a szél irányát jelzi a forrástól a célig. Ez az irányított információ kulcsfontosságú a gráf szemantikájának megértéséhez.
Az alábbiakban további példákat talál az éltípusokra:
(:Person)-[:studyAt { classYear :: UINT64 }]->(:University)
(:Person)-[:workAt { workFrom :: UINT64 }]->(:Company)
Csak a végpontcsomópont-típusok kulcsfeliratát (PersonUniversityvagy Company) kell megadnia– nem kell megismételnie a teljes csomóponttípus-definíciót. A rendszer feloldja ezeket a hivatkozásokat a teljes csomóponttípus-definícióra.
Gráfszéltípuscsaládok
A gráf szélének kulcsfeliratai másként működnek, mint a csomópontkulcsok címkéi. Egy gráftípusban több éltípus is lehet ugyanazzal a kulcscímkével, feltéve, hogy ugyanazokkal a címkékkel és tulajdonságtípusokkal rendelkeznek. Az azonos kulcscímkével rendelkező két éltípusnak azonban legalább egy végpontcsomóponttípusban meg kell különböznie. Az azonos kulcscímkével rendelkező éltípusok készletét egy éltípuscsaládnak hívjuk.
Ez a koncepció lehetővé teszi a különböző típusú entitások közötti azonos típusú kapcsolat modellezését.
Example:
(:City)-[:isPartOf]->(:Country),
(:Country)-[:isPartOf]->(:Continent)
Mindkét éltípus használja a isPartOf címkét, de különböző típusú csomópontokat kötnek össze, és olyan éltípuscsaládot alkotnak, amely hierarchikus elszigetelési kapcsolatokat jelöl.
Használj csomópont-altípust edge type definíciókban
Minden lehetséges éltípus kifejtése kissé fárasztó lehet. Egyszerűsítésképpen, olyan éltípus-családokat is definiálhatunk, amelyek illeszkednek a végpontok által feltételezett csomóponttípusok hierarchiájához.
Példa:
-- Node types
ABSTRACT (:Message { ... }),
(:Post => :Message { ... }),
(:Comment => :Message { ... }),
-- All edge types (x)-[:hasTag]->(:Tag) where x is at least a (:Message)
(<:Message)-[:hasTag]->(:Tag)
Ez implicit módon definiálja a következő éltípusokat:
(:Post)-[:hasTag]->(:Tag)
(:Comment)-[:hasTag]->(:Tag)
Támogatott tulajdonságtípusok
Tulajdonságtípus definiálásakor a tulajdonság értéktípusának olyannak kell lennie, amelyet a Microsoft Fabric gráfja támogat. A tárolási hatékonyság és a lekérdezési teljesítmény szempontjából fontos a megfelelő adattípusok kiválasztása.
A tulajdonságértékekhez az alábbi adattípusok használhatók:
-
INT(továbbá:INT64) -
UINT(továbbá:UINT64) STRING-
BOOL(továbbá:BOOLEAN) -
DOUBLE(továbbá:FLOAT64,FLOAT) -
T NOT NULL, aholTaz előző adattípusok bármelyike szerepel. -
LIST<T>ésLIST<T> NOT NULLholTtalálható az előző adattípusok bármelyike.
Az értéktípusokkal kapcsolatos teljes információkért tekintse meg a GQL-értékeket és az értéktípusokat.
Fontos
Minden olyan tulajdonságtípusnak, amelynek neve megegyezik egy adott gráftípus csomóponttípusában vagy éltípusában, ugyanazt a tulajdonságértéktípust kell megadnia.
Az egyetlen kivétel: eltérhetnek attól, hogy tartalmazzák-e a null értéket.
A szabály szerint például egy gráftípus (:A { id :: STRING }), (:B { id :: STRING NOT NULL}) érvényes lenne, míg egy gráftípus (:A { id :: STRING }), (:B { id :: INT}) érvénytelen lenne.
Csomópontkulcs-korlátozások beállítása
A csomópontkulcs-megkötések határozzák meg, hogy a gráf egyes csomópontjai hogyan lesznek egyedileg azonosítva egy vagy több tulajdonságértékével. A kulcskorlátozások az elsődleges kulcskorlátozásokhoz hasonlóan működnek a relációs adatbázisokban, és biztosítják az adatintegritást. A csomópontkulcs-megkötések több csomóponttípus csomópontjait is megcélzhatják, így a csomópontkulcsok teljes fogalmi hierarchiákhoz definiálhatók.
A fő megkötések megértése kulcsfontosságú, mert:
- Egyediség biztosítása: Az üzleti logikán alapuló ismétlődő csomópontok megakadályozása.
- Hatékony keresések engedélyezése: Lehetővé teszi a rendszer számára, hogy optimalizálja az adott csomópontokat kereső lekérdezéseket.
- Az adatintegráció támogatása: Stabil módot biztosít a csomópontok különböző adatforrások közötti hivatkozására.
Fontos
A Microsoft Fabric gráfja esetében pontosan egy fő korlátozásnak kell korlátoznia minden csomópontot.
A csomópontkulcs korlátainak működése
A csomópontkulcs korlátozásait a gráftípusban adhatja meg. Minden csomópontkulcs-korlátozás olyan jellemzőkkel rendelkezik, amelyek hatékonyan működnek:
Csomópontkulcs-korlátozás összetevői:
- A gráftípuson belül egyedi névvel rendelkezik a könnyű referencia érdekében.
- A megcélzott csomópontokat egy egyszerű kényszerminta használatával határozza meg, amely meghatározza, hogy a korlátozás mely csomópontokra vonatkozik.
- Meghatározza az egyedi kulcsértéket alkotó tulajdonságokat.
Example:
CONSTRAINT person_pk
FOR (n:Person) REQUIRE n.id IS KEY
Ez a szintaxis létrehoz egy csomópontkulcs-korlátozást, amely az összes olyan csomóponthoz szól person_pk , amelynek legalább a címkéje van Person . A korlátozás biztosítja, hogy a gráf minden csomópontja egyedileg azonosítható legyen a tulajdonsága id alapján. A címkével rendelkező Person két csomópont nem rendelkezhet ugyanazzal id az értékkel.
Olyan összetett kulcsokat is meghatározhat, amelyek több tulajdonságot használnak együtt az egyediség biztosítása érdekében a CONSTRAINT ... FOR ... REQUIRE (n.prop1, n.prop2) IS KEY szintaxis használatával.
Fontos
A kulcskorlátozásokban használt tulajdonságok:
- Nem lehet null értékű
- Deklarálni
NOT NULLkell a csomóponttípusokban és a kulcskényszer által megcélzott éltípusokban