Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Koskee seuraavia: Microsoft Sentinel Graph
Huomautus
GQL-tuki on esikatselutilassa. Ominaisuudet ja syntaksi voivat muuttua palautteen ja jatkuvan kehityksen perusteella.
Tämä viittaus kattaa GQL-kielen peruskäsitteet, funktiot ja operaattorit. GQL (Graph Query Language) perustuu matemaattisen kaavion teoriakäsitteisiin, jotka muodostavat vankan perustan kaaviotietojen kyselyille. Näiden tekijöiden ymmärtäminen auttaa kirjoittamaan tehokkaampia kyselyitä ja ymmärtämään paremmin, miten GQL käsittelee tietojasi. GQL tarjoaa myös monipuolisen joukon funktioita ja operaattoreita, jotka toimivat kaaviokuvioiden, solmujen, reunojen ja ominaisuuksien kanssa.
Peruskäsitteet
Tässä osiossa käsitellään keskeisiä käsitteitä, jotka muodostavat GQL:n kaaviotietojen analyysin perustan.
Kaaviokuviot
Graph-mallit ovat GQL-kyselyiden perusosia. Ne kuvaavat rakennetta, jonka haluat löytää kaavion tiedoista käyttämällä deklaratiivista syntaksia, joka peilaa kuvaajien visuaalisen esityksen.
Solmukuviot
Solmukuviot määrittävät, miten kaavion yksittäiset solmut vastaavat toisiaan:
(n) -- Any node
(n:Person) -- Node with Person label
(n:Person&City) -- Node with Person AND City label
(:Person) -- Person node, don't bind variable
Avainkäsitteet:
Muuttujan sidonta:
(n)luo muuttujan n, johon voit viitata myöhemmin kyselyssäAnonyymit solmut:
(:Person)vastaa solmuja luomatta muuttujaaSelitteiden suodatus:
:Personrajoittaa vastaavuudet solmuihin, joilla on Henkilö-seliteOtsikkoyhdistelmät: And-,
|OR-toimintojen käyttö&
Reunakuviot
Reunakuviot määrittävät, miten solmut yhdistyvät toisiinsa:
-[e]-> -- Directed outgoing edge, any label
-[e:works_at]-> -- Directed edge, works_at label
-[e:knows|likes]--> -- knows OR likes edge
<-[e]- -- Directed incoming edge
-[e]- -- Undirected (any direction)
Avainkäsitteet:
Suunta:
->lähteville,<-saapuville,-mihin tahansa suuntaanReunatyypit: Käytä selitteitä kuten
:works_atsuodattaaksesi suhdetyypin mukaanUseita tyyppejä:
knows|likesvastaa jompaakumpaa suhdetyyppiä
Otsikkolausekkeet
Selitteet tarjoavat semanttisen merkityksen solmuille ja reunuille. GQL tukee monimutkaisia otsikkolausekkeita:
:Person&Company -- Both Person AND Company labels
:Person|Company -- Person OR Company labels
:!Company -- NOT Company label
:(Person|!Company)&City -- Complex expressions with parentheses
Toimijoiden
&(AND): Solmussa on oltava kaikki määritetyt selitteet|(TAI): Solmussa on oltava vähintään yksi määritetty selite!(EI): Solmulla ei saa olla määritettyä otsikkoa(): Monimutkaisten lausekkeiden ryhmittelyn sulkeet
Polkukuviot
Polkukuviot kuvaavat usean hypyn suhteita kaaviossa:
(a)-[e1]->;(b)-[e2]->(c) -- 2-hop path
(a)-[e]->;{2,4}(b) -- 2 to 4 hops
(a)-[e]->{1,}(b) -- 1 to maximum of 8 hops
(a)-[:knows|likes]->;{1,3}(b) -- 1-3 hops via knows/likes
p=()-[:works_at]->() -- Binding a path variable
Vaihtelevan pituiset polut:
{2,4}: Tasan 2-4 humalaa{1,}: vähintään 1 hyppy (ei sidottu). Ei-sidotut polkukyselyt on rajoitettu 8:aan siirtymään.{,5}: Enintään 5 hyppyä{5}: Tasan 5 humalaa
Polkumuuttujat
p=()->(): Tallentaa koko polun myöhempää analyysia varten-, -
RELATIONSHIPS(p)ja -käyttöNODES(p)PATH_LENGTH(p)
Useita kuvioita
GQL tukee monimutkaisia, epä lineaarista kaaviorakenteita:
(a)->(b), (a)->(c) -- Multiple edges from same node
(a)->(b)<-(c), (b)->(d) -- Non-linear structures
Kuvion koostumus:
- Useiden kuvioiden erottaminen pilkuilla
, - Kaikkien mallien on vastattava toisiaan samanaikaisesti
- Muuttujia voidaan jakaa toistuvien mallien välillä
Vastaavuustilat
GQL tukee erilaisia polkujen vastaavuustiloja, jotka ohjaavat kuvioiden vastaavuutta kaaviotietoihin. Nämä tilat vaikuttavat suorituskykyyn, tuloksen täydellisyyteen ja palautettuihin polkutyyppeihin.
Vastaavuustilat ohjaavat sitä, miten kaavioelementtejä voidaan käyttää uudelleen kuviomuuttujien välillä yksittäisen MATCH-lauseen sisällä.
ERI REUNAT (oletus)
Oletustila. Vastaava reuna ei voi sitoa useampaan kuin yhteen reunamuuttujaan, mutta solmuja voi käyttää vapaasti uudelleen.
MATCH (a)-[r1]->(b)-[r2]->(c)
-- r1 and r2 must be different edges
-- a, b, c can be the same or different nodes
TOISTETTAVISSA OLEVAT ELEMENTIT
Mahdollistaa sekä reunojen että solmujen uudelleenkäyttämisen kuviomuuttujien välillä ilman rajoituksia.
MATCH REPEATABLE ELEMENTS (a)-[r1]->(b)-[r2]->(c)
-- r1 and r2 can be the same edge
-- a, b, c can be the same or different nodes
Polkutilat
Polkutilat määrittävät toistorajoitusten perusteella, mitkä polkutyypit sisältyvät tuloksiin.
TRAIL
Suodattaa polut, joissa on toistuvia reunoja. Solmut voivat toistaa, mutta jokainen reuna voi näkyä vain kerran polkua kohden.
MATCH TRAIL (a)-[]->{1,3}(b)
-- No edge can appear twice in the same path
-- Nodes may repeat
Funktiot ja operaattorit viittaavat
Graph Query Language (GQL) tarjoaa monipuolisen joukon funktioita ja operaattoreita, jotka toimivat kaaviokuvioiden, solmujen, reunojen ja ominaisuuksien kanssa.
GQL-perusfunktiot ja -operaattorit
Seuraavassa taulukossa on lueteltu GQL-perusfunktiot ja -operaattorit sekä esimerkkejä.
| GQL-funktio/-operaattori | Kuvaus | Esimerkki GQL:stä |
|---|---|---|
| VASTINE | Etsi kaaviokuvioita | MATCH (a)-[r]->(b) |
| VALINNAINEN VASTINE | Etsi kuvioita, joita ei ehkä ole olemassa | VALINNAINEN VASTINE (p)->(c:Kaupunki) |
| JOSSA | Suodatusmallit ja ominaisuudet | WHERE henkilö.ikä > 25 |
| SUODATIN | Vastaa WHERE-lausetta, mutta sitä käytetään ilman MATCH-lauseita | FILTER p.name = 'Carol' OR c.name = 'Seattle' |
| ON TYHJÄARVOINEN | Tarkista tyhjäarvot | WHERE person.age ON NULL |
| EI OLE TYHJÄARVOINEN | Etsi muita kuin tyhjäarvoja | WHERE person.age EI OLE TYHJÄARVOINEN |
| PALAUTTAA | Projektin tulokset | RETURN person.name, henkilö.ikä |
| ERILLISTÄ | Palauta yksilölliset arvot | PALAUTA ERILLINEN person.name |
| COUNT(*) | Laske kaikki rivit | PALAUTUSMÄÄRÄ(*) |
| COUNT() | Muiden kuin tyhjäarvojen laskeminen | RETURN COUNT(person.name) |
| SUM() | Numeeristen arvojen summa | RETURN SUM(person.age) |
| MIN() | Pienin arvo | RETURN MIN(person.age) |
| SUURIN() | Suurin arvo | RETURN MAX(henkilö.ikä) |
| AVG() | Keskiarvo | RETURN AVG(henkilö.ikä) |
| COLLECT_LIST() | Arvojen kerääminen matriisiin | RETURN COLLECT_LIST(person.name) |
| KOKO() | Matriisin pituus | RETURN SIZE(COLLECT_LIST(n.firstName)) |
| labels() | Näytä solmun tai reunan selitteet | RETURN-otsikot (entiteetti) |
| UPPER() | Isoiksi kirjaimiksi muuntaminen | RETURN UPPER(person.name) |
| LOWER() | Muunna pieniksi kirjaimiksi | RETURN LOWER(person.name) |
| ALKAA MERKKIJONOLLA | Merkkijono alkaa kuviolla | MISTÄ PERSON.NAME ALKAA TOMILLA? |
| PÄÄTTYY MERKIN | Merkkijono päättyy kuvioon | MISSÄ person.name PÄÄTTYY 'Hanksiin' |
| SISÄLTÄÄ | Merkkijono sisältää kuvion | WHERE person.name SISÄLTÄÄ "Tomin" |
| || | Merkkijonon yhdistäminen | RETURN n.firstName || ' ' || n.lastName |
| TRIM() | Poista välilyönnit molemmista päistä | RETURN TRIM(' abc ') |
| STRING_JOIN() | Liitä matriisielementit erottimella | RETURN STRING_JOIN(["a", "b" || "c"], "-") |
| CAST() | Tietotyyppien muuntaminen | CAST(person.age AS STRING) |
| ZONED_DATETIME() | Päivämäärän ja ajan luominen merkkijonosta | ZONED_DATETIME('2024-01-01') |
| PATH_LENGTH() | Polun pituuden hakeminen | RETURN PATH_LENGTH(path_variable) |
| LAJITTELUPERUSTE | Lajittele tulokset | ORDER BY person.age DESC |
| RAJA | Rajoita tulosten määrä | RAJA 10 |
| & (AND) | Tarran leikkaus | MATCH (p:Person & uros) |
| | (TAI) | Tunnisteiden yhdistäminen | MATCH (n:Person | Elokuva) |
| ! (EI) | Otsikon negaatio | MATCH (p:! Nainen) |
Parhaat käytännöt
- GQL ei määritä selkeästi, miten dynaamisia tyyppejä tulisi käsitellä. Voit välttää suorituksenaikaiset virheet kirjoittamalla sisäkkäiset kentät eksplisiittisesti niiden odotettuun tyyppiin (katso CAST).
Suorituskyvyn optimointi
Näiden strategioiden avulla voit optimoida GQL-kyselyn suorituskyvyn tuotantoympäristöissä:
Vihje
Aloita yksinkertaisista malleista ja lisää tarvittaessa monimutkaisuutta. Valvo kyselyn suorituskykyä ja säädä polkujen pituuksia ja suodattimia tulosten parantamiseksi.
Rajoita polkua vastaava alue:
Vähennä hakutilaa käyttämällä tiettyjä otsikkosuodattimia: MATCH (start:SpecificType) MATCH-arvon (aloitus) sijaan
Rajoita muuttujien pituuspolkuja kohtuullisilla rajoilla: MATCH (a)-[]->{1,3}(b) ei-sidottujen polkujen sijaan
Käytä WHERE-lauseita aikaisessa vaiheessa tulosten suodattamiseksi ennen kalliita toimintoja.
Käytä COUNT(*)-toimintoa olemassa olevien tarkistusten yhteydessä:
Jos sinun tarvitsee vain tarkistaa, onko kuvio olemassa, käytä COUNT(*) -funktiota täydellisten tulosten palauttamisen sijaan.
MATCH (user:User)-[:SUSPICIOUS_ACTIVITY]->(target)
WHERE user.id = 'user123'
RETURN COUNT(*) > 0 AS HasSuspiciousActivity
Rajoitukset
Kyselyrakenne: Kaikkien GQL-kyselyiden on alettava MATCH-lauseella.
Varatut avainsanat: Joitakin GQL-avainsanoja ei voi käyttää tunnisteina kyselyissä. Jotkin varatut avainsanat eivät ole heti ilmeisiä (esimerkiksi DATE on varattu avainsana). Jos kaaviotiedoissa on GQL-varattujen avainsanojen kanssa ristiriitaisia ominaisuuksien nimiä, käytä kaavion rakenteessa eri ominaisuuksien nimiä tai nimeä ne uudelleen ristiriitojen jäsentämisen välttämiseksi.
Tärkeää
Kun suunnittelet kaavion rakennetta, jotkin yleiset ominaisuuksien nimet saattavat olla ristiriidassa GQL:n varattujen avainsanojen kanssa. Vältä tai nimeä uudelleen näitä ominaisuuksien nimiä.
Ei INSERT/CREATE-tukea: Kaaviorakenteiden muutostoimintoja ei tueta.
Valinnaiset osumat: Tuetaan vain solmukuvioille (ei reunuksille).
Entiteettien vastaavuustarkistuksia ei tueta: GQL-tarkistuksia
(MATCH (n)-[]-(n2) WHERE n1 <> n2)ei tueta. Käytä eksplisiittisiä kenttävertailuja esimerkiksin.id <> n2.idAika ja aikavyöhyke: Moottori toimii UTC:ssä. Datetime-literaalien on käytettävä vyöhykettä datetime; vain UTC-vyöhykettä tuetaan kohteen kautta
ZONED_DATETIME("2011-12-31 23:59:59.9").Keston askelväli: Kestot tukevat enintään päiviä ja pienempiä yksiköitä nanosekunteihin asti. Yli päivän mittayksiköitä (esimerkiksi viikot, kuukaudet, vuodet) ei tueta.
Labels()-funktion mukautettu GQL-funktio
Funktio labels() näyttää solmun tai reunan selitteet matriisina.
Syntaksi:
labels(entity)
Parametrit:entity: Solmu tai reunamuuttuja vastaavasta kuviosta.
Palauttaa:
Palauttaa merkkijonomatriisin, jossa on kaikki määritetyn entiteetin otsikot.
Esimerkkejä:
Näytä vastaavuussolmujen selitteet:
MATCH (entity)
RETURN entity.name, labels(entity)
Lähtö
Tämä kysely näyttää kaavion kunkin solmun nimen ja kaikki otsikot.
| entity.name | labels(entiteetti) |
|---|---|
| john.doe | ["Käyttäjä"] |
| admin.user | ["Käyttäjä"] |
| web-server | ["Järjestelmä"] |
| Tietokannan | ["Järjestelmä"] |
| toimialueen ohjauskone | ["Järjestelmä"] |
Näytä otsikot projektioina aliaksilla:
MATCH (n)-[e]->(target)
RETURN n.name, labels(n) AS n_labels, labels(e) AS edge_labels, target.name
Tämä kysely näyttää solmujen nimet, niiden selitteet ja yhdistävien reunojen selitteet.
| n.name | n_labels | edge_labels | target.name |
|---|---|---|---|
| john.doe | ["Käyttäjä"] | ["CAN_ACCESS"] | web-server |
| admin.user | ["Käyttäjä"] | ["CAN_ACCESS"] | toimialueen ohjauskone |
| web-server | ["Järjestelmä"] | ["CAN_ACCESS"] | Tietokannan |
| toimialueen ohjauskone | ["Järjestelmä"] | ["CAN_ACCESS"] | Tietokannan |