Aracılığıyla paylaş


GQL grafik türleri

Uyarı

Bu özellik şu anda genel önizlemededir. Bu önizleme, hizmet düzeyi sözleşmesi olmadan sağlanır ve üretim iş yükleri için önerilmez. Bazı özellikler desteklenmiyor olabileceği gibi özellikleri sınırlandırılmış da olabilir. Daha fazla bilgi için bkz. Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları.

Grafik türü, hangi düğümlerin ve kenarların mevcut olabileceğini tanımlayarak grafınızın yapısını açıklar. Bunu bir şema veya şema gibi düşünün; grafikteki düğümlerin ve kenarların şeklini etiketleri ve özellikleri açısından belirtir. Kenarlar (düğümler arasındaki bağlantılar) için, hangi tür kenarların hangi düğüm türlerine bağlanabileceğini de belirtir. İlişkisel veritabanları hakkında bilgi sahibiyseniz, grafik türleri ER diyagramlarının tabloları ve yabancı anahtar ilişkilerini açıklama şekline benzer şekilde çalışır.

Önemli

Bu makale yalnızca sosyal ağ örnek grafik veri setini kullanmaktadır.

Graf türleri çeşitli temel avantajlar sağlar:

  • Veri doğrulama: Grafınızın yalnızca geçerli düğüm ve kenar bileşimleri içerdiğinden emin olun.
  • Sorgu iyileştirme: Daha iyi performans için sorgu altyapısının veri yapınızı anlamasına yardımcı olun.
  • Belgeler: Grafınızın geliştiriciler ve analistler için yapısına ilişkin net bir belirtim görevi görür.

Uyarı

Bu makale grafik türlerini kavramsal olarak tanıtır ve GQL standardında tanımlanan söz dizimini kullanarak tanımlarını gösterir. Ancak, bu söz dizimi şu anda Microsoft Fabric'teki graf için doğrudan desteklenmiyor.

Yapısal olarak grafik türü, izin verilen düğüm türlerini ve grafik türündeki kenar grafik türlerinin yanı sıra bu grafikleri daha da kısıtlayan ek kısıtlamaları tanımlar.

Uyarı

Grafik türleri bir düğüm türü, kenar türü ve kısıtlama tanımları kümesi verilerek tanımlanır. Bu tanımların sırasının değiştirilmesi, tanımlanan grafik türünü değiştirmez.

Düğüm türlerini tanımlama

Düğüm türü, düğümlerinizin sahip olabileceği etiketleri ve özellik türlerini belirtir. Temel düğüm türünü şu şekilde belirtebilirsiniz:

(:Organization => { 
  id :: UINT64 NOT NULL, 
  name :: STRING, 
  url :: STRING 
})

Bu örnek, aşağıdakilerle düğümleri tanımlayan bir düğüm türü oluşturur:

  • etiketidir Organization.
  • id İmzasız tamsayı değerlerini tutan ve null olamaz özelliği.
  • name Dize değerlerini tutan bir özellik (null olabilir).
  • url Dize değerlerini tutan bir özellik (null olabilir).

:: işleci her özellik için veri türünü belirtirkenNOT NULL, özelliğin her zaman bir değere sahip olması gerektiğini gösterir.

Uyarı

NOT NULL , SQL'den farklı olan GQL türünün bir parçası olarak kabul edilir.

Düğüm türleri, daha fazla özellik ve veri türüyle daha karmaşık olabilir:

(:Person => {
    id :: UINT64 NOT NULL,
    creationDate :: ZONED DATETIME,
    firstName :: STRING,
    lastName :: STRING,
    gender :: STRING,
    birthday :: UINT64,
    browserUsed :: STRING,
    locationIP :: STRING
})

Birden çok etiketli düğüm türleri

Düğümlerin devralmayı ve kategorilere ayırmayı desteklemek için birden çok etiketi olabilir. Düğüm türü için birden çok etiket belirtebilirsiniz, ancak bir etiket ("anahtar etiketi") düğüm türünü benzersiz olarak tanımlamalıdır (Yalnızca bir etiket belirtilirse, bu, düğüm türünün anahtar etiketi olarak alınır).

Örnek olarak şunları göz önünde bulundurun:

(:University => :Organization),

(:Company => :Organization)

University Burada ve Company iki düğüm türünün anahtar etiketleri tanımlanırkenOrganization, her iki tür tarafından paylaşılan ikincil bir etikettir. Anahtar etiketinin ve ikincil etiketlerin her düğüm türünde ile nasıl ayrıldığına => dikkat edin. Bu yaklaşım hem üniversitelerin hem de şirketlerin kuruluş türleri olduğu bir tür hiyerarşisi oluşturur.

Anahtar etiketleri düğüm türlerini tanımladığından, bu söz dizimi kullanılırken ikincil etiketler tarafından tanımlanan düğüm türlerinin özellikleri otomatik olarak devralınır. Bu nedenle, aşağıdaki düğüm türlerini etkili bir şekilde tanımlamak için önceki söz dizimi anlaşılabilir:

(:University => :Organization {
  id :: UINT64 NOT NULL, 
  name :: STRING, 
  url :: STRING 
}),

(:Company => :Organization {
  id :: UINT64 NOT NULL, 
  name :: STRING, 
  url :: STRING 
})

Uyarı

Düğüm türü hiyerarşileri tanımlarken anahtar etiketleri gereklidir. Birden çok tür aynı etiketleri paylaştığında sistemin hangi düğüm türüne başvurdığınızı anlamasına yardımcı olur.

Devralma kısayollarıyla zaman kazanın

Üst düğüm türlerinden yinelenen etiketler ve özellikler yorucu ve hataya açık hale gelir. Microsoft Fabric'teki Graph işlecini += sağlar, böylece yalnızca ek (doğasız) etiketleri ve özellik türlerini belirtebilirsiniz:

(:Post => :Message += {
    language :: STRING,
    imageFile :: STRING
})

Ek özellik belirtilmediğinde, grafik tüm gerekli özellikleri üst türden devralır:

(:Comment => :Message)  -- Same as: (:Comment => :Message += {})

Soyut düğüm türlerini kullanma

Grafiğinizde bu tür somut düğümler olmasa bile yalnızca hiyerarşi oluşturmak için düğüm türleri tanımlayabilirsiniz. Soyut düğüm türleri kavramsal gruplandırmalar ve paylaşılan özellik kümeleri oluşturmak için kullanışlıdır. Bu amaçla, Microsoft Fabric'teki grafikte olduğu gibi ABSTRACT bir düğüm türü tanımlayabilirsiniz:

ABSTRACT (:Message => {
    id :: UINT64 NOT NULL,
    creationDate :: ZONED DATETIME,
    browserUsed :: STRING,
    locationIP :: STRING,
    content :: STRING,
    length :: UINT64
})

Soyut düğüm türleri doğrudan grafik yükleme için kullanılamaz; yalnızca hiyerarşinizi yapılandırmak ve paylaşılan özellikleri tanımlamak için vardır. Soyut türlerden devralan somut düğüm türleri verilerle yüklenebilir.

Kenar türlerini ve aileleri tanımlama

Kenar türü, kenarlar için anahtar etiketi, özellik türleri ve uç nokta düğümü türlerini tanımlar. Grafik veritabanlarında kenarlar düğümler arasındaki bağlantıları temsil eder. Kenar tanımı sisteme grafiğinizde izin verilen ilişkileri bildirir:

(:Person)-[:knows { creationDate :: ZONED DATETIME }]->(:Person)

Bu kenar türü aşağıdakilerle tüm kenarları tanımlar:

  • (anahtar) etiketi knows.
  • creationDate Değerleri (saat dilimi uzaklığıyla birlikte zaman damgaları) tutan ZONED DATETIME özellik.
  • Her ikisi de düğüm olması Person gereken kaynak ve hedef uç noktalar.

Ok -> , kenar yönünü kaynaktan hedefe gösterir. Bu yönlü bilgiler grafınızın semantiğini anlamak için çok önemlidir.

Kenar türlerine daha fazla örnek aşağıda verilmiştir:

(:Person)-[:studyAt { classYear :: UINT64 }]->(:University)
(:Person)-[:workAt { workFrom :: UINT64 }]->(:Company)

Yalnızca uç nokta düğüm türleri için anahtar etiketlerini (Person, Universityveya Company) belirtmeniz gerekir; düğüm türü tanımının tamamını yinelemeniz gerekmez. Sistem, bu başvuruları tam düğüm türü tanımlarına çözümler.

Graf kenar türü aileleri

Graf kenar anahtar etiketleri düğüm anahtar etiketlerinden farklı çalışır. Aynı etiketlere ve özellik türlerine sahip oldukları sürece grafik türünde aynı anahtar etiketine sahip birden çok kenar türüne sahip olabilirsiniz. Ancak, aynı anahtar etiketine sahip iki kenar türünün en az bir uç nokta düğümü türünde farklı olması gerekir. Aynı anahtar etiketine sahip bir kenar türü kümesine kenar türü ailesi diyoruz.

Bu kavram, farklı varlık türleri arasındaki aynı ilişki türünü modellemenizi sağlar.

Example:

(:City)-[:isPartOf]->(:Country),
(:Country)-[:isPartOf]->(:Continent)

Her iki kenar türü de etiketi kullanır isPartOf , ancak farklı düğüm türlerini birbirine bağlayarak hiyerarşik kapsama ilişkilerini temsil eden bir kenar türü ailesi oluşturur.

Kenar tipi tanımlarında düğüm alt tiplendirme kullanın

Her olası kenar tipini açıkça belirtmek biraz sıkıcı olabilir. Basitleştirmek gerekirse, uç noktalarının ima ettiği düğüm tipleri hiyerarşisiyle uyumlu kenar tip aileleri de tanımlanabilir.

Örnek:

-- Node types
ABSTRACT (:Message { ... }),
(:Post => :Message { ... }),
(:Comment => :Message { ... }),

-- All edge types (x)-[:hasTag]->(:Tag) where x is at least a (:Message)
(<:Message)-[:hasTag]->(:Tag) 

Bu, aşağıdaki kenar türlerini örtük olarak tanımlar:

(:Post)-[:hasTag]->(:Tag) 
(:Comment)-[:hasTag]->(:Tag) 

Desteklenen özellik türleri

Bir özellik türü tanımlarken, özellik değeri türü Microsoft Fabric'teki grafiğin desteklediği türde olmalıdır. Depolama verimliliği ve sorgu performansı için doğru veri türlerini seçmek önemlidir.

Özellik değerleri için kullanabileceğiniz veri türleri şunlardır:

  • INT (ayrıca: INT64)
  • UINT (ayrıca: UINT64)
  • STRING
  • BOOL (ayrıca: BOOLEAN)
  • DOUBLE (ayrıca: FLOAT64, FLOAT)
  • T NOT NULL, burada T önceki veri türlerinden herhangi biridir.
  • LIST<T> ve LIST<T> NOT NULL, burada T önceki veri türlerinden herhangi biridir.

Değer türleri hakkında tam bilgi için bkz. GQL değerleri ve değer türleri.

Önemli

Belirli bir grafik türünün düğüm türünde veya kenar türünde aynı ada sahip tüm özellik türleri aynı özellik değeri türünü belirtmelidir. Tek özel durum: null değeri içerip içermedikleri konusunda farklılık gösterebilirler. Örneğin, bu kurala göre, ile (:A { id :: STRING }), (:B { id :: STRING NOT NULL}) bir grafik türü geçerli olurken, ile (:A { id :: STRING }), (:B { id :: INT}) bir grafik türü geçersiz olacaktır.

Düğüm anahtarı kısıtlamalarını ayarlama

Düğüm anahtarı kısıtlamaları, grafiğinizdeki her düğümün bir veya daha fazla özellik değeri tarafından benzersiz olarak nasıl tanımleneceğini tanımlar. Anahtar kısıtlamaları, ilişkisel veritabanlarındaki birincil anahtar kısıtlamaları gibi çalışır ve veri bütünlüğünü güvence altına alır. Düğüm anahtarı kısıtlaması, birden çok düğüm türü arasında düğümleri hedefleyebilir ve bu da kavramsal hiyerarşilerin tamamı için düğüm anahtarları tanımlamanızı sağlar.

Önemli kısıtlamaları anlamak çok önemlidir çünkü bunlar:

  • Benzersiz olduğundan emin olun: İş mantığınıza göre yinelenen düğümleri önleyin.
  • Verimli aramaları etkinleştirme: Sistemin belirli düğümleri arayan sorguları iyileştirmesine izin verin.
  • Destek veri tümleştirmesi: Farklı veri kaynaklarındaki düğümlere başvurmak için kararlı bir yol sağlar.

Önemli

Microsoft Fabric'teki grafik için tam olarak bir anahtar kısıtlamasının her düğümü kısıtlaması gerekir.

Düğüm anahtarı kısıtlamaları nasıl çalışır?

Grafik türünüzde düğüm anahtarı kısıtlamaları belirtebilirsiniz. Her düğüm anahtarı kısıtlaması, etkili bir şekilde çalışmasını sağlayan belirli özelliklere sahiptir:

Düğüm anahtarı kısıtlamasının bileşenleri:

  • Kolay başvuru için grafik türü içinde benzersiz bir ada sahiptir.
  • Kısıtlamanın hangi düğümlere uygulandığını belirten basit bir kısıtlama deseni kullanarak hedeflenen düğümleri tanımlar.
  • Benzersiz anahtar değerini oluşturan özellikleri tanımlar.

Example:

CONSTRAINT person_pk
  FOR (n:Person) REQUIRE n.id IS KEY

Bu söz dizimiperson_pk etiketi olan tüm düğümler için çağrılan bir düğüm anahtarı kısıtlaması Person oluşturur. Kısıtlama, grafikteki her düğümün kendi özelliği tarafından benzersiz olarak tanımlanmasını id sağlar. Etikete Person sahip iki düğüm aynı id değere sahip olamaz.

Söz dizimini kullanarak benzersizliği sağlamak için birden çok özelliği birlikte kullanan bileşik anahtarlar CONSTRAINT ... FOR ... REQUIRE (n.prop1, n.prop2) IS KEY da tanımlayabilirsiniz.

Önemli

Anahtar kısıtlamalarında kullanılan özellikler:

  • Null olamaz
  • Anahtar kısıtlaması tarafından hedeflenen düğüm türlerinde ve kenar türlerinde olduğu gibi NOT NULL bildirilmelidir