Megosztás a következőn keresztül:


Gráfmodellek áttekintése (előzetes verzió)

A következőkre vonatkozik: ✅Microsoft FabricAzure Data Explorer

Megjegyzés:

Ez a funkció jelenleg nyilvános előzetes verzióban érhető el. A funkciók és a szintaxis az általános elérhetőség előtt változhat.

Az Azure Data Explorer gráfmodelljei lehetővé teszik az adatbázis állandó gráfstruktúráinak meghatározását, kezelését és hatékony lekérdezését. A make-graph operátorral létrehozott átmeneti gráfokkal ellentétben a gráfmodellek olyan tárolt ábrázolások, amelyek ismételten lekérdezhetők anélkül, hogy az egyes lekérdezésekhez újra kellene építeni a gráfot, ami jelentősen javítja az összetett kapcsolatalapú elemzés teljesítményét.

Áttekintés

A gráfmodell egy adatbázis-objektum, amely egy címkézett tulajdonságdiagramot (LPG) jelöl az Azure Data Explorerben. Csomópontokból, más néven csúcsokból és élekből, más néven kapcsolatokból áll. Mind a csomópontok, mind az élek rendelkezhetnek azokat leíró tulajdonságokkal. A modell meghatározza a gráf sémáját, beleértve a csomópont- és éltípusokat a tulajdonságaikkal együtt. Emellett meghatározza a gráf KQL-adatbázistáblákban tárolt táblázatos adatokból és táblázatos kifejezésekből történő létrehozásának folyamatát is.

Főbb jellemzők

Gráfmodellek ajánlata:

  • Metaadatok megőrzése: Gráfspecifikációk tárolása az adatbázis metaadataiban a tartósság és az újrahasználhatóság érdekében
  • Materialized snapshots: Nem szükséges újraépíteni a gráfokat az egyes lekérdezésekhez, ami jelentősen javítja a lekérdezési teljesítményt
  • Sémadefiníció: Nem kötelező, de ajánlott definiált sémák támogatása csomópontokhoz és élekhez, biztosítva az adatkonzisztenciát
  • Mély KQL-integráció: Zökkenőmentes integráció a gráf szemantikával
  • Optimalizált bejárások: Speciális indexelés belefoglalása a hatékony gráfbejárási műveletekhez, így az összetett minták egyeztetése és az elérési útkeresési lekérdezések jelentősen gyorsabbak

Mikor érdemes gráfmodelleket használni?

A gráfmodellek jelentős előnyöket biztosítanak a kapcsolatalapú elemzéshez, de az alkalmi gráfos lekérdezésekhez képest további beállításokat igényelnek. Fontolja meg a gráfmodellek használatát a következő esetekben:

  • A teljesítmény kritikus fontosságú: Gráf típusú lekérdezéseket ismétlődően futtat ugyanazon az alapul szolgáló adatokon, és optimalizált teljesítményre van szüksége
  • Összetett kapcsolatadatok: Számos összekapcsolt kapcsolattal rendelkezik olyan adatokkal, amelyek gráfábrázolásból származnak
  • Stabil struktúra: A gráfstruktúra viszonylag stabil, rendszeres, de nem állandó frissítésekkel
  • Speciális gráfműveletek: Összetett bejárásokat, útvonalkeresést, mintaegyeztetést vagy közösségi észlelést kell végrehajtania az adatokon
  • Konzisztens séma: A gráfelemzéshez jól definiált struktúra szükséges konzisztens csomópont- és éltípusokkal

A kisebb adathalmazokon végzett egyszerűbb, egyszeri gráfelemzéshez a make-graph operátor megfelelőbb lehet.

Gráfmodell összetevői

A gráfmodellek két fő összetevőből állnak:

Séma (nem kötelező)

A séma meghatározza a csomópontok és élek szerkezetét és tulajdonságait a gráfmodellben. Bár nem kötelező, a séma számos fontos célt szolgál:

  • Típusbiztonság: A sématulajdonságok határozzák meg a csomópont- és éltulajdonságok várt adattípusát, biztosítva a típuskonzisztenciát a gráfos lekérdezések során
  • Tulajdonságérvényesítés: A sémában definiált összes tulajdonság érvényes tulajdonságokká válik a megfelelő címkékkel rendelkező csomópontok/élek számára, függetlenül attól, hogy ezek a tulajdonságok megjelennek-e a lépés lekérdezési oszlopaiban.
  • Lekérdezéskompatibilitás: A sématulajdonságok biztonságosan hivatkozhatók gráfegyeztetésű lekérdezésekben anélkül, hogy típusütközések ütköznek a lépéses lekérdezés oszlopaival

Sémastruktúra

  • Csomópontok: Meghatározza a csomópontcímkék típusait és azok gépelt tulajdonságait (pl. "Person": {"Name": "string", "Age": "long"})
  • Élek: Meghatározza az élcímkék típusait és azok gépelt tulajdonságait (pl. "WORKS_AT": {"StartDate": "datetime", "Position": "string"})

Definíció

A definíció azt határozza meg, hogyan hozhatja létre a gráfot táblázatos adatokból szekvenciális műveletek sorozatán keresztül. Ez a szakasz a gráfmodell lényege, mivel gráfstruktúrává alakítja a relációs adatokat.

A definíció főbb jellemzői:

  • Szekvenciális végrehajtás: A lépések végrehajtása pontosan a Definíció tömbben megjelenő sorrendben történik. Ez a sorrend kritikus fontosságú, mert:

    • A csomópontokat általában azokra hivatkozó élek előtt kell létrehozni
    • A későbbi lépések a korábbi lépések eredményeire építhetnek vagy módosíthatnak
    • A sorozat hatással van a teljesítményre és a memóriahasználatra a gráfok felépítése során
  • Növekményes konstrukció: Minden lépés hozzáadja a készülő gráfot, így a következőket teszi lehetővé:

    • Több táblából vagy forrásból származó adatok egyesítése
    • Különböző logika alkalmazása különböző csomóponttípusokhoz vagy élekhez
    • Összetett gráfstruktúrák növekményes létrehozása

Lépéstípusok:

  • AddNodes: A csomópontok táblázatos adatokból való létrehozásának módját meghatározó lépések

    • Több alkalommal is használható különböző típusú csomópontok hozzáadásához
    • Minden lépés különböző adatforrásokból lekérhető, vagy különböző szűrőket alkalmazhat
    • A csomópont tulajdonságai a lekérdezés eredményének oszlopaiból származnak
  • AddEdges: Lépések, amelyek meghatározzák, hogyan hozhat létre éleket táblázatos adatokból

    • Hivatkozhat olyan csomópontokra, amelyek még nem léteznek (a rendszer helyőrző csomópontokat hoz létre, és frissíti őket az AddNodes-lépések későbbi feldolgozásakor)
    • Létrehozhat kapcsolatokat a csomópontok között ugyanazon vagy különböző AddNodes-lépésekből
    • Az éltulajdonságok a lekérdezés eredményének oszlopaiból származnak
    • Bár a csomópontok előtt lehetőség van élek hozzáadására, javasoljuk, hogy először csomópontokat adjon hozzá a jobb olvashatóság és megértés érdekében

Végrehajtási folyamat példája:

Step 1 (AddNodes): Create Person nodes from Employees table
Step 2 (AddNodes): Create Company nodes from Organizations table  
Step 3 (AddEdges): Create WORKS_AT edges between Person and Company nodes
Step 4 (AddEdges): Create KNOWS edges between Person nodes

Ez a szekvenciális megközelítés biztosítja, hogy amikor a 3. lépés WORKS_AT éleket hoz létre, a Person csomópontok (az 1. lépésből) és a Vállalati csomópontok (a 2. lépésből) már léteznek a gráfban.

Címkék a Graph-modellekben

A címkék kritikus azonosítók, amelyek kategorizálják a csomópontokat és a széleket a gráfban, így hatékony szűrést és mintaegyezést tesz lehetővé. Az Azure Data Explorer gráfmodelljei két kiegészítő címketípust támogatnak:

Statikus címkék

  • Explicit módon definiálva a gráfmodell Séma szakaszában
  • Csomópont- vagy éltípusok megjelenítése előre definiált tulajdonságokkal
  • Konzisztens séma biztosítása a gráfelemekhez
  • Hivatkozás az AddNodes és az AddEdges lépések "Címkék" tömbjében
  • Ideális jól ismert, stabil entitás- és kapcsolattípusokhoz

Dinamikus címkék

  • Nincs előre definiálva a Séma szakaszban
  • Futásidőben generálva az alapul szolgáló táblák adataiból
  • A "LabelsColumn" használatával van megadva az AddNodes vagy az AddEdges lépésekben
  • Lehet egy címke (sztringoszlop) vagy több címke (dinamikus tömboszlop)
  • Rugalmasabb gráfstruktúrák engedélyezése, amelyek alkalmazkodnak az adatokhoz
  • Olyan rendszereknél hasznos, ahol a csomópont-/éltípusok idővel fejlődnek

Jótanács

A statikus és a dinamikus címkék kombinálásával mindkét módszer előnyeit élvezheti: az alapvető entitástípusok sémaérvényesítését, a változó besorolások rugalmasságának fenntartása mellett.

Részletes definíciós lépések

A gráfmodell Definíció szakasza olyan lépéseket tartalmaz, amelyek meghatározzák, hogyan lehet táblázatos adatokból létrehozni a gráfot. Minden lépésnek adott paraméterei vannak a típusától függően.

AddNodes steps

Az AddNodes-lépések meghatározzák, hogyan hozhat létre csomópontokat a gráfban táblázatos adatokból:

Paraméter Kötelező Leírás
Kedves Igen "AddNodes" (AddNodes) értékre kell állítani
Lekérdezés Igen KQL-lekérdezés, amely lekéri a csomópontok adatait. A lekérdezés eredményének tartalmaznia kell a csomópont tulajdonságaihoz és azonosítóihoz szükséges összes oszlopot
NodeIdColumn Igen Az egyes csomópontok egyedi azonosítójaként használt lekérdezési eredmény oszlopa
Címkék Nem A sémaszakaszban definiált statikus címkenevek tömbje, amely ezekre a csomópontokra vonatkozik
LabelsColumn Nem A lekérdezés eredményének oszlopa, amely dinamikus címkéket biztosít az egyes csomópontokhoz. Lehet sztringoszlop (egyetlen címke) vagy dinamikus tömboszlop (több címke)

Hozzáadási lépések

Az AddEdges lépések meghatározzák, hogyan hozhat létre kapcsolatokat a csomópontok között a gráfban:

Paraméter Kötelező Leírás
Kedves Igen "AddEdges" értékre kell állítani
Lekérdezés Igen KQL-lekérdezés, amely lekéri az élek adatait. A lekérdezés eredményének tartalmaznia kell a forrás- és célcsomópont-azonosítókat, valamint az éltulajdonságokat
ForrásOszlop Igen A forráscsomópont-azonosítókat tartalmazó lekérdezési eredmény oszlopa
TargetColumn Igen A célcsomópont-azonosítókat tartalmazó lekérdezési eredmény oszlopa
Címkék Nem A sémaszakaszban definiált statikus címkenevek tömbje, amely ezekre a élekre vonatkozik
LabelsColumn Nem A lekérdezés eredményének oszlopa, amely dinamikus címkéket biztosít az egyes élekhez. Lehet sztringoszlop (egyetlen címke) vagy dinamikus tömboszlop (több címke)

Példák gráfmodellekre

Egyszerű példa statikus és dinamikus címkékkel

Az alábbi példa egy professzionális hálózati gráfmodellt hoz létre, amely egyesíti a statikus sémadefiníciókat a dinamikus címkézéssel:

.create-or-alter graph_model ProfessionalNetwork ```
{
  "Schema": {
    "Nodes": {
      "Person": {"Name": "string", "Age": "long", "Title": "string"},
      "Company": {"Name": "string", "Industry": "string", "FoundedYear": "int"}
    },
    "Edges": {
      "WORKS_AT": {"StartDate": "datetime", "Position": "string", "Department": "string"},
      "KNOWS": {"ConnectionDate": "datetime", "ConnectionStrength": "int"}
    }
  },
  "Definition": {
    "Steps": [
      {
        "Kind": "AddNodes",
        "Query": "Employees | project Id, Name, Age, Title, NodeType",
        "NodeIdColumn": "Id",
        "Labels": ["Person"],
        "LabelsColumn": "NodeType"
      },
      {
        "Kind": "AddNodes",
        "Query": "Organizations | project Id, Name, Industry, FoundedYear",
        "NodeIdColumn": "Id",
        "Labels": ["Company"]
      },
      {
        "Kind": "AddEdges",
        "Query": "EmploymentRecords | project EmployeeId, CompanyId, StartDate, Position, Department",
        "SourceColumn": "EmployeeId",
        "TargetColumn": "CompanyId",
        "Labels": ["WORKS_AT"]
      },
      {
        "Kind": "AddEdges",
        "Query": "Connections | project PersonA, PersonB, ConnectionDate, ConnectionType, ConnectionStrength",
        "SourceColumn": "PersonA",
        "TargetColumn": "PersonB",
        "Labels": ["KNOWS"],
        "LabelsColumn": "ConnectionType"
      }
    ]
  }
}
```

Ez a modell olyan lekérdezéseket tenne lehetővé, mint a többfokú elkülönítéssel összekapcsolt munkatársak megkeresése, az azonos iparágban dolgozó személyek azonosítása vagy a szervezeti kapcsolatok elemzése.

Graph-modellek létrehozása és kezelése

Az Azure Data Explorer átfogó felügyeleti parancsokat biztosít a gráfmodellek teljes életciklusuk során történő kezeléséhez.

Parancs összefoglalása

Parancs Cél Kulcsparaméterek
.create-or-alter graph_model Új gráfmodell létrehozása vagy meglévő módosítása Adatbázis, név, séma, definíció
.drop graph_model Gráfmodell eltávolítása Adatbázis, név
.show graph_models Elérhető gráfmodellek listázása Adatbázis [nem kötelező]

Gráfmodell életciklusa

A gráfmodellek kezelésének tipikus munkafolyamata a következőket foglalja magában:

  1. Fejlesztés – Kezdeti gráfmodell létrehozása az adatokhoz leképező sémával és definícióval
  2. Érvényesítés – A modell lekérdezése a helyes struktúra és a várt eredmények ellenőrzéséhez
  3. Karbantartás – A modell rendszeres frissítése az adatstruktúra fejlődésével
  4. Pillanatkép-kezelés – Pillanatképek létrehozása és kivonása a teljesítmény és a frissesség egyensúlya érdekében

Jótanács

A gráfmodellekkel kezdve kezdje az adatok egy kis részhalmazával, hogy érvényesítse a tervet, mielőtt nagyobb adathalmazokra skálázhat.

Gráf-pillanatképek

A gráfpillanatképek olyan adatbázis-entitások, amelyek adott időpontban ábrázolják a gráfmodellek példányait. Míg a gráfmodellek a gráfok struktúráját és adatforrásait határozzák meg, a pillanatkép a ténylegesen lekérdezhető materializált gráf.

A gráfpillanatképek főbb jellemzői:

  • Minden pillanatkép egy adott gráfmodellhez van csatolva
  • Egy gráfmodellhez több pillanatkép is társítható
  • A rendszer pillanatképeket hoz létre a .make graph_snapshot paranccsal
  • A pillanatképek olyan metaadatokat tartalmaznak, mint a létrehozási idő és a forrásgráfmodell
  • A pillanatképek lehetővé teszik a gráf lekérdezését, mivel az egy adott időpontban létezett

A gráfpillanatképek használatával kapcsolatos további információkért tekintse meg a Gráf pillanatképek áttekintését.

Graph-modellek lekérdezése

A gráfmodellek lekérdezése a graph() függvény használatával történik, amely hozzáférést biztosít a gráf entitásához. Ez a függvény támogatja a gráf legfrissebb pillanatképének lekérését, vagy a gráf lekérdezési időpontban történő létrehozását, ha a pillanatképek nem érhetők el.

Egyszerű lekérdezési struktúra

graph("GraphModelName")
| graph-match <pattern>
    where <filters>
    project <output fields>

Lekérdezési példák

1. Alapszintű csomópont-élcsomópont-minta

// Find people who commented on posts by employees in the last week
graph("SocialNetwork") 
| graph-match (person)-[comments]->(post)<-[authored]-(employee)
    where person.age > 30 
      and comments.createTime > ago(7d)
    project person.name, post.title, employee.userName

2. Több kapcsolati minta

// Find people who both work with and are friends with each other
graph("ProfessionalNetwork") 
| graph-match (p1)-[worksWith]->(p2)-[friendsWith]->(p1)
    where labels(worksWith) has "WORKS_WITH" and labels(friendsWith) has "FRIENDS_WITH" and
      labels(p1) has "Person" and labels(p2) has "Person"
    project p1.name, p2.name, p1.department

3. Változó hosszúságú elérési utak

// Find potential influence paths up to 3 hops away
graph("InfluenceNetwork") 
| graph-match (influencer)-[influences*1..3]->(target)
    where influencer.id == "user123" and all(influences, labels() has "INFLUENCES")
    project influencePath = influences, 
         pathLength = array_length(influences), 
         target.name

A graph() függvény konzisztens módot biztosít a gráfadatok elérésére anélkül, hogy explicit módon kellene létrehoznia a gráfot az egyes lekérdezésekhez.

Megjegyzés:

A gráflekérdezés szintaxisával és képességeivel kapcsolatos teljes referenciaért tekintse meg a Gráf operátorokat .

Gyakori kérdések

Ki felel a gráf frissítéséért?

A felhasználóknak vagy folyamatoknak maguknak kell frissíteniük a gráfot. Kezdetben nem léteznek automatikus frissítési szabályzatok az új gráfentitásokhoz. A gráf azonban akkor is lekérdezhető marad, ha a pillanatkép létrehozása folyamatban van, vagy még nem lett létrehozva.

Hogyan frissíthető egy gráf?

Gráf frissítése:

  1. Új pillanatkép létrehozása aszinkron művelettel (.make graph_snapshot)
  2. A létrehozás után a bejövő gráfos lekérdezések automatikusan használják az új pillanatképet
  3. Nem kötelező: A régi pillanatkép elvetése erőforrások felszabadításához (.drop graph_snapshot)

Mi történik, ha a különböző lépések duplikált éleket vagy csomópontokat hoznak létre?

A definíciós lépések egymás után futnak, és a duplikált kezelés csomópontok és élek között eltérő:

  • Élek: Az ismétlődések alapértelmezés szerint ismétlődnek, mivel az élek nem rendelkeznek egyedi azonosítókkal. Ha több lépés is azonos forrás-cél kapcsolatokat hoz létre, mindegyik külön él lesz a gráfban. Ez a viselkedés szándékos, mivel ugyanazon csomópontok közötti több kapcsolat különböző interakciókat vagy eseményeket jelölhet az idők során.

  • Csomópontok: Az "ismétlődések" automatikusan egyesülnek a NodeIdColumn érték alapján – a rendszer feltételezi, hogy ugyanazt az entitást képviselik. Ha több lépés is létrehoz csomópontokat ugyanazzal az azonosítóval:

    • A különböző lépések összes tulajdonsága egyetlen csomópontba van kombinálva
    • Ha ugyanahhoz a tulajdonságnévhez ütköző tulajdonságértékek vannak, a legutóbb végrehajtott lépés értéke elsőbbséget élvez
    • Az egyik lépésben meglévő, de egy másikban nem szereplő tulajdonságok megmaradnak

Ez az egyesítési viselkedés lehetővé teszi csomópontok növekményes összeállítását a lépések között, például alapszintű információkat adhat hozzá egy lépésben, és további tulajdonságokkal bővülhet a következő lépésekben.

Hogyan kezelik a gráfmodellek a sémamódosításokat?

Amikor a mögöttes adatok sémája megváltozik:

  1. A gráfmodell módosítása a parancs használatával a .create-or-alter graph_model sémájának vagy definíciójának frissítéséhez
  2. A módosítások megvalósulásához hozzon létre egy új pillanatképet
  3. A régebbi pillanatképek továbbra is elérhetők maradnak, amíg explicit módon el nem dobják

Lekérdezhetek több gráfmodellt?

Igen, több gráfmodellt is lekérdezhet egyetlen lekérdezésben a kompozíció használatával:

  • Az egyik graph() operátor kimenetének használata egy másik graph() operátor bemeneteként
  • Az eredmények feldolgozása és átalakítása egy gráfból egy másik gráf lekérdezésbe való betáplálás előtt
  • Több gráfművelet láncolása tartományok közötti elemzéshez egységes modell létrehozása nélkül

Példa:

// Query the first graph model
graph("EmployeeNetwork") 
| graph-match (person)-[manages]->(team)
    where labels(manages) has "MANAGES" and labels(person) has "Employee"
    project manager=person.name, teamId=team.id
// Use these results to query another graph model
| join (
	graph("ProjectNetwork")
	| graph-match (project)-[assignedTo]->(team)
        where labels(assignedTo) has "ASSIGNED_TO"
	    project projectName=project.name, teamId=team.id
) on teamId

Mi a különbség a címkék és a tulajdonságok között?

  • Címkék: Csomópontok és élek kategorizálása a szerkezeti minták egyeztetéséhez
  • Tulajdonságok: Csomópontokhoz és élekhez társított adatértékek tárolása (szűréshez és kimenethez használatos)