Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga / Notatka
Ta funkcja jest obecnie w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie jest zalecana w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą nie być obsługiwane lub mogą mieć ograniczone możliwości. Aby uzyskać więcej informacji, zobacz Warunki dodatkowe korzystania z testowych wersji Microsoft Azure.
Typ grafu opisuje strukturę grafu, definiując, które węzły i krawędzie mogą istnieć. Pomyśl o tym jak strategia lub schemat — określa kształt węzłów i krawędzi na grafie pod względem ich etykiet i właściwości. W przypadku krawędzi (połączeń między węzłami) określa również, które rodzaje krawędzi mogą łączyć się z tego rodzaju węzłami. Jeśli znasz relacyjne bazy danych, typy grafów działają podobnie do sposobu, w jaki diagramy ER opisują tabele i relacje kluczy obcych.
Ważne
Artykuł ten wykorzystuje wyłącznie przykładowy zbiór grafów sieci społecznościowych.
Typy grafów zapewniają kilka kluczowych korzyści:
- Weryfikacja danych: Upewnij się, że wykres zawiera tylko prawidłowe kombinacje węzłów i krawędzi.
- Optymalizacja zapytań: pomóż aparatowi zapytań zrozumieć strukturę danych w celu uzyskania lepszej wydajności.
- Dokumentacja: Służyć jako wyraźna specyfikacja struktury grafu dla deweloperów i analityków.
Uwaga / Notatka
W tym artykule przedstawiono koncepcyjnie typy grafów i zilustrowano ich definicję przy użyciu składni zdefiniowanej w standardzie GQL. Jednak ta składnia nie jest obecnie bezpośrednio obsługiwana dla grafu w usłudze Microsoft Fabric.
Strukturalnie typ grafu definiuje dozwolone typy węzłów i typy krawędzi grafów typu grafu, a także dodatkowe ograniczenia, które dodatkowo ograniczają te wykresy.
Uwaga / Notatka
Typy grafów są definiowane przez nadanie zestawowi definicji typu węzła, typu krawędzi i ograniczeń. Zmiana kolejności tych definicji nie zmienia zdefiniowanego typu grafu.
Definiowanie typów węzłów
Typ węzła określa, jakie etykiety i typy właściwości mogą mieć węzły. Poniżej przedstawiono sposób określania podstawowego typu węzła:
(:Organization => {
id :: UINT64 NOT NULL,
name :: STRING,
url :: STRING
})
W tym przykładzie tworzony jest typ węzła, który definiuje węzły z następującymi elementami:
- Etykieta
Organization. -
idWłaściwość, która zawiera niepodpisane wartości całkowite i nie może mieć wartości null. -
nameWłaściwość, która zawiera wartości ciągów (może mieć wartość null). -
urlWłaściwość, która zawiera wartości ciągów (może mieć wartość null).
Operator :: określa typ danych dla każdej właściwości, a jednocześnie NOT NULL wskazuje, że właściwość musi zawsze mieć wartość.
Uwaga / Notatka
NOT NULL jest uważany za część typu W JĘZYKU GQL, który różni się od języka SQL.
Typy węzłów mogą być również bardziej złożone, przy użyciu większej liczby właściwości i typów danych:
(:Person => {
id :: UINT64 NOT NULL,
creationDate :: ZONED DATETIME,
firstName :: STRING,
lastName :: STRING,
gender :: STRING,
birthday :: UINT64,
browserUsed :: STRING,
locationIP :: STRING
})
Typy węzłów z wieloma etykietami
Węzły mogą mieć wiele etykiet do obsługi dziedziczenia i kategoryzacji. Można określić wiele etykiet dla typu węzła, ale jedna etykieta (etykieta klucza) musi jednoznacznie zidentyfikować typ węzła (jeśli określono tylko jedną etykietę, jest to etykieta klucza typu węzła).
Rozważmy na przykład:
(:University => :Organization),
(:Company => :Organization)
University W tym miejscu i Company są etykietami kluczy dwóch zdefiniowanych typów węzłów, podczas gdy Organization jest etykietą pomocniczą współdzieloną przez oba typy. Zwróć uwagę, że etykieta klucza i etykiety pomocnicze są rozdzielane w => każdym typie węzła. Takie podejście tworzy hierarchię typów, w której zarówno uniwersytety, jak i firmy są typami organizacji.
Ponieważ etykiety kluczy identyfikują typy węzłów, właściwości typów węzłów identyfikowanych przez etykiety pomocnicze są automatycznie dziedziczone podczas korzystania z tej składni. W związku z tym można zrozumieć poprzednią składnię, aby skutecznie zdefiniować następujące typy węzłów:
(:University => :Organization {
id :: UINT64 NOT NULL,
name :: STRING,
url :: STRING
}),
(:Company => :Organization {
id :: UINT64 NOT NULL,
name :: STRING,
url :: STRING
})
Uwaga / Notatka
Etykiety kluczy są niezbędne podczas definiowania hierarchii typów węzłów. Ułatwiają one systemowi zrozumienie typu węzła, do którego odwołujesz się, gdy wiele typów ma te same etykiety.
Oszczędzaj czas dzięki skrótom dziedziczenia
Powtarzające się etykiety i właściwości z typów węzłów nadrzędnych są żmudne i podatne na błędy. Program Graph w usłudze Microsoft Fabric udostępnia += operator, dzięki czemu można określić tylko dodatkowe (niezaheritowane) etykiety i typy właściwości:
(:Post => :Message += {
language :: STRING,
imageFile :: STRING
})
Jeśli nie określono dodatkowych właściwości, graf dziedziczy wszystkie wymagane właściwości z typu nadrzędnego:
(:Comment => :Message) -- Same as: (:Comment => :Message += {})
Używanie typów węzłów abstrakcyjnych
Typy węzłów można definiować wyłącznie na potrzeby tworzenia hierarchii, nawet jeśli wykres nie zawiera konkretnych węzłów tego typu. Typy węzłów abstrakcyjnych są przydatne do tworzenia koncepcyjnych grupowania i zestawów właściwości udostępnionych. W tym celu można zdefiniować typ węzła w postaci ABSTRACT grafu w usłudze Microsoft Fabric:
ABSTRACT (:Message => {
id :: UINT64 NOT NULL,
creationDate :: ZONED DATETIME,
browserUsed :: STRING,
locationIP :: STRING,
content :: STRING,
length :: UINT64
})
Typy węzłów abstrakcyjnych nie są dostępne do bezpośredniego ładowania grafu — istnieją tylko do tworzenia struktury hierarchii i definiowania właściwości udostępnionych. Konkretne typy węzłów dziedziczone z typów abstrakcyjnych mogą być ładowane z danymi.
Definiowanie typów krawędzi i rodzin
Typ krawędzi definiuje etykietę klucza, typy właściwości i typy węzłów punktu końcowego dla krawędzi. W grafowych bazach danych krawędzie reprezentują połączenia między węzłami. Definicja krawędzi informuje system, jakie relacje są dozwolone na wykresie:
(:Person)-[:knows { creationDate :: ZONED DATETIME }]->(:Person)
Ten typ krawędzi definiuje wszystkie krawędzie z następującymi elementami:
- Etykieta
knows(klucz) . -
creationDateWłaściwość, która przechowujeZONED DATETIMEwartości (znaczniki czasu wraz z przesunięciem strefy czasowej). - Źródłowe i docelowe punkty końcowe, które muszą być
Personwęzłami.
Strzałka wskazuje kierunek -> krawędzi od źródła do miejsca docelowego. Te informacje kierunkowe mają kluczowe znaczenie dla zrozumienia semantyki grafu.
Poniżej przedstawiono więcej przykładów typów krawędzi:
(:Person)-[:studyAt { classYear :: UINT64 }]->(:University)
(:Person)-[:workAt { workFrom :: UINT64 }]->(:Company)
Wystarczy określić etykiety kluczy (Person, Universitylub Company) dla typów węzłów punktu końcowego — nie trzeba powtarzać pełnej definicji typu węzła. System rozpoznaje te odwołania do definicji typu pełnego węzła.
Rodziny typów krawędzi grafu
Etykiety kluczy krawędzi grafu działają inaczej niż etykiety kluczy węzła. Można mieć wiele typów krawędzi z tą samą etykietą klucza w typie grafu, o ile mają te same etykiety i typy właściwości. Jednak dwa typy krawędzi z tą samą etykietą klucza muszą się różnić w co najmniej jednym typie węzła punktu końcowego. Nazywamy zestaw typów krawędzi tą samą etykietą klucza rodziną typów krawędzi.
Ta koncepcja umożliwia modelowanie tego samego typu relacji między różnymi typami jednostek.
Example:
(:City)-[:isPartOf]->(:Country),
(:Country)-[:isPartOf]->(:Continent)
Oba typy krawędzi używają isPartOf etykiety, ale łączą różne typy węzłów, tworząc rodzinę typów krawędzi, która reprezentuje relacje hierarchicznej zawierania.
Używaj podtypowania węzłów w definicjach typów krawędzi
Trzeba wypisywać każdy możliwy typ krawędzi może być trochę uciążliwe. Dla uproszczenia możliwe jest również zdefiniowanie rodzin typów krawędzi, które są zgodne z hierarchią typów węzłów implikowaną przez ich końcowe punkty.
Przykład:
-- Node types
ABSTRACT (:Message { ... }),
(:Post => :Message { ... }),
(:Comment => :Message { ... }),
-- All edge types (x)-[:hasTag]->(:Tag) where x is at least a (:Message)
(<:Message)-[:hasTag]->(:Tag)
To domyślnie definiuje następujące typy krawędzi:
(:Post)-[:hasTag]->(:Tag)
(:Comment)-[:hasTag]->(:Tag)
Obsługiwane typy właściwości
Podczas definiowania typu właściwości typ wartości właściwości musi być taki, który obsługuje graf w usłudze Microsoft Fabric. Wybór odpowiednich typów danych jest ważny dla wydajności magazynu i wydajności zapytań.
Poniżej przedstawiono typy danych, których można użyć dla wartości właściwości:
-
INT(również:INT64) -
UINT(również:UINT64) STRING-
BOOL(również:BOOLEAN) -
DOUBLE(również:FLOAT64,FLOAT) -
T NOT NULL, gdzieTjest dowolnym z powyższych typów danych. -
LIST<T>iLIST<T> NOT NULL, gdzie jest dowolnymTz powyższych typów danych.
Aby uzyskać pełne informacje o typach wartości, zobacz GQL values and value types (Wartości I typy wartości GQL).
Ważne
Wszystkie typy właściwości o tej samej nazwie, które występują w typie węzła lub typie krawędzi danego typu grafu, muszą określać ten sam typ wartości właściwości.
Jedynym wyjątkiem: mogą różnić się od tego, czy zawierają wartość null.
Na przykład zgodnie z tą regułą typ grafu z wartością (:A { id :: STRING }), (:B { id :: STRING NOT NULL}) będzie prawidłowy, a typ grafu z wartością (:A { id :: STRING }), (:B { id :: INT}) będzie nieprawidłowy.
Konfigurowanie ograniczeń klucza węzła
Ograniczenia klucza węzła definiują sposób, w jaki każdy węzeł na grafie jest jednoznacznie identyfikowany przez co najmniej jedną z jego wartości właściwości. Kluczowe ograniczenia działają jak ograniczenia klucza podstawowego w relacyjnych bazach danych i zapewniają integralność danych. Ograniczenie klucza węzła może dotyczyć węzłów w wielu typach węzłów, co umożliwia definiowanie kluczy węzłów dla całych hierarchii koncepcyjnych.
Zrozumienie kluczowych ograniczeń ma kluczowe znaczenie, ponieważ:
- Upewnij się, że unikatowość: zapobiegaj zduplikowaniu węzłów na podstawie logiki biznesowej.
- Włącz wydajne wyszukiwanie: umożliwia systemowi optymalizowanie zapytań, które wyszukują określone węzły.
- Obsługa integracji danych: zapewnia stabilny sposób odwołowania się do węzłów w różnych źródłach danych.
Ważne
W przypadku grafu w usłudze Microsoft Fabric musi być ograniczone każde ograniczenie klucza.
Jak działają ograniczenia klucza węzła
W typie grafu można określić ograniczenia klucza węzła. Każde ograniczenie klucza węzła ma określone cechy, które sprawiają, że działa efektywnie:
Składniki ograniczenia klucza węzła:
- Ma unikatową nazwę w typie grafu w celu łatwego odwołania.
- Definiuje węzły docelowe przy użyciu prostego wzorca ograniczenia określającego, do których węzłów ma zastosowanie ograniczenie.
- Definiuje właściwości, które tworzą unikatową wartość klucza.
Example:
CONSTRAINT person_pk
FOR (n:Person) REQUIRE n.id IS KEY
Ta składnia tworzy ograniczenie klucza węzła wywoływane person_pk dla wszystkich węzłów z co najmniej etykietą Person . Ograniczenie zapewnia, że każdy węzeł na grafie jest jednoznacznie identyfikowany przez jego id właściwość. Brak dwóch węzłów z etykietą Person może mieć tę samą id wartość.
Można również zdefiniować klucze złożone, które używają wielu właściwości razem, aby zapewnić unikatowość przy użyciu CONSTRAINT ... FOR ... REQUIRE (n.prop1, n.prop2) IS KEY składni.
Ważne
Właściwości używane w kluczowych ograniczeniach:
- Nie można mieć wartości null
- Należy zadeklarować jako
NOT NULLw typach węzłów i typach krawędzi docelowych przez ograniczenie klucza