Azure Cosmos DB gremlin apı 'si için Graph veri modellemesi
Uygulama hedefı:
Gremlin API
Aşağıdaki belge, grafik veri modelleme önerileri sağlamak için tasarlanmıştır. Bu adım, veri geliştikçe grafik veritabanı sisteminin ölçeklenebilirliğini ve performansını güvence altına almak için önemlidir. Verimli bir veri modeli büyük ölçekli grafiklerle özellikle önemlidir.
Gereksinimler
Bu kılavuzda özetlenen işlem aşağıdaki varsayımlar temelinde olur:
- Sorun-alanı içindeki varlıklar tanımlanır. Bu varlıkların her istek için otomatik olarak tüketilmesi amaçlanmıştır. Diğer bir deyişle, veritabanı sistemi birden çok sorgu isteğinde tek bir varlığın verilerini almak üzere tasarlanmamıştır.
- Veritabanı sistemi için okuma ve yazma gereksinimlerinin anlaşılmasıdır. Bu gereksinimler, grafik veri modeli için gereken iyileştirmelere kılavuzluk eder.
- Apache Tinkerpop özelliği grafik standardının ilkeleri iyi anlaşılmıştır.
Grafik veritabanına ne zaman ihtiyacım var?
Bir veri etki alanındaki varlıklar ve ilişkilerin aşağıdaki özelliklerden herhangi biri varsa, grafik veritabanı çözümü en iyi şekilde uygulanabilir:
- Varlıklar, açıklayıcı ilişkiler aracılığıyla yüksek oranda bağlanır . Bu senaryodaki avantaj, ilişkilerin depolamada kalıcı hale getirilir.
- Döngüsel ilişkiler veya kendine Başvurulmuş varlıklar vardır. Bu model genellikle ilişkisel veya belge veritabanlarını kullanırken zorluk sergilemektir.
- Varlıklar arasında dinamik olarak gelişen ilişkiler vardır. Bu model özellikle çok sayıda düzeyi olan hiyerarşik veya ağaç biçimli veriler için geçerlidir.
- Varlıklar arasında çok-çok ilişkisi vardır.
- Hem varlıklarda hem de ilişkilerde yazma ve okuma gereksinimleri vardır.
Yukarıdaki kriterler karşılandıysanız, bir grafik veritabanı yaklaşımının sorgu karmaşıklığı, veri modeli ölçeklenebilirliği ve sorgu performansı için avantaj sağlaması olasıdır.
Bir sonraki adım, grafiğin analitik veya işlemsel amaçlar için kullanılacağını belirlemektir. grafik ağır hesaplama ve veri işleme iş yükleri için kullanılmak üzere tasarlanıyorsa, Cosmos DB Spark bağlayıcısını ve graphx kitaplığınınkullanımını keşfetmeye değer de vardır.
Graph nesnelerini kullanma
Apache Tinkerpop özelliği grafik standardı iki tür nesne köşeleri ve kenarlarını tanımlar.
Grafik nesnelerindeki özellikler için en iyi uygulamalar şunlardır:
| Nesne | Özellik | Tür | Notlar |
|---|---|---|---|
| İzdüşüm | ID | Dize | Bölüm başına benzersiz olarak uygulandı. Ekleme sırasında bir değer sağlanmazsa, otomatik olarak oluşturulan bir GUID depolanır. |
| İzdüşüm | etiket | Dize | Bu özellik, köşeyi temsil eden varlık türünü tanımlamak için kullanılır. Değer sağlanmazsa, varsayılan "köşe" değeri kullanılacaktır. |
| İzdüşüm | properties | Dize, Boolean, sayısal | Her köşede anahtar-değer çiftleri olarak depolanan ayrı özelliklerin listesi. |
| İzdüşüm | bölüm anahtarı | Dize, Boolean, sayısal | Bu özellik, köşe ve giden kenarlarının depolanacağı yeri tanımlar. Grafik bölümlendirmehakkında daha fazla bilgi edinin. |
| Edge | ID | Dize | Bölüm başına benzersiz olarak uygulandı. Varsayılan olarak otomatik oluşturulur. Kenarlar genellikle bir KIMLIK tarafından benzersiz bir şekilde alınması gereksinimini içermez. |
| Edge | etiket | Dize | Bu özellik, iki köşelerin sahip olduğu ilişkinin türünü tanımlamak için kullanılır. |
| Edge | properties | Dize, Boolean, sayısal | Her bir kenarda anahtar-değer çiftleri olarak depolanan ayrı özelliklerin listesi. |
Not
Kenarları, kendi değeri kaynak köşelerine göre otomatik olarak atandığından bölüm anahtarı değeri gerektirmez. Grafik bölümlendirme makalesinde daha fazla bilgi edinin.
Varlık ve ilişki modelleme yönergeleri
aşağıda, bir Azure Cosmos DB gremlin apı grafik veritabanı için veri modellemeye yaklaşıma yönelik bir dizi kılavuz verilmiştir. Bu yönergeler, bir veri etki alanının ve sorgu sorgularının var olan bir tanımı olduğunu varsayar.
Not
Aşağıda özetlenen adımlar öneriler olarak sunulmuştur. Son model, üretime hazırlanma olarak değerlendirilmeden önce değerlendirilmeli ve test edilmelidir. ayrıca, aşağıdaki öneriler Azure Cosmos DB gremlin apı uygulamasına özgüdür.
Modelleme köşeleri ve özellikleri
Grafik veri modeli için ilk adım, tanımlanan her varlığı bir köşe nesnesine eşlemenize yöneliktir. Tüm varlıkların köşelere eşlenmesinin bir ilk adımı ve değişikliğe tabi olması gerekir.
Bir ortak giriş, tek bir varlığın özelliklerini ayrı köşeler olarak eşmaktır. Aşağıdaki örneği, aynı varlığın iki farklı şekilde temsil edildiği yerde göz önünde bulundurun:
- Köşe tabanlı özellikler: Bu yaklaşımda varlık, özelliklerini anlatmak için üç ayrı köşe ve iki kenar kullanır. Bu yaklaşım artıklığı azaltada, model karmaşıklığını artırır. Model karmaşıklığının artışı, eklenen gecikme süresi, sorgu karmaşıklığı ve hesaplama maliyetine neden olabilir. Bu model, Bölümlemede zorluk de sunabilir.
- Özelliğe gömülü köşeler: Bu yaklaşım, bir köşe içindeki varlığın tüm özelliklerini göstermek için anahtar-değer çifti listesinden yararlanır. Bu yaklaşım daha basit sorgulara ve daha düşük maliyetli traversals neden olacak şekilde daha az model karmaşıklığı sağlar.
Not
Yukarıdaki örneklerde, yalnızca varlık özelliklerini bölmek için iki yol arasındaki karşılaştırmayı göstermek üzere basitleştirilmiş bir grafik modeli gösterilmektedir.
Özelliği gömülü köşeler, genellikle daha performanslı ve ölçeklenebilir bir yaklaşım sağlar. Yeni bir grafik veri modeli için varsayılan yaklaşım bu düzene doğru olmalıdır.
Ancak, bir özelliğe başvuruda bulunan senaryolar avantaj sağlayabilir. Örneğin: başvurulan özellik sık sık güncellendiyse. Sürekli olarak değiştirilen bir özelliği göstermek için ayrı bir köşe kullanmak, güncelleştirmenin gerektirdiği yazma işlemleri miktarını en aza indirir.
Kenar yönlerine sahip ilişki modelleme
Köşeler modellendikten sonra aralarındaki ilişkileri göstermek için kenarlar eklenebilir. Değerlendirilmesi gereken ilk boyut ilişkinin yönüdür.
Edge nesnelerinin, veya işlevi kullanılırken bir çapraz geçiş tarafından izlenen varsayılan bir yönü vardır out() outE() . Tüm köşeler giden kenarlarıyla depolandığından, bu doğal yönün kullanılması verimli bir işlem ile sonuçlanır.
Ancak, işlevi kullanılarak bir kenarın ters yönünde geçiş yapmak, in() her zaman bir çapraz bölüm sorgusuna neden olur. Grafik bölümlendirmehakkında daha fazla bilgi edinin. İşlevi kullanarak sürekli geçiş yapmanız gerekiyorsa in() , her iki yönde de kenar eklenmesi önerilir.
.to() .from() Gremlin adımında veya koşullarını kullanarak kenar yönünü belirleyebilirsiniz .addE() . Ya da Gremlin API için toplu yürütücü kitaplığı'nı kullanarak.
Not
Edge nesnelerinin varsayılan olarak bir yönü vardır.
İlişki etiketleme
Açıklayıcı ilişki etiketlerinin kullanılması, sınır çözümleme işlemlerinin verimliliğini artırır. Bu model aşağıdaki yollarla uygulanabilir:
- Bir ilişkiyi etiketlemek için genel olmayan terimleri kullanın.
- Kaynak köşesinin etiketini, ilişki adı ile hedef köşe etiketi ile ilişkilendirin.
Traverser 'ın kenarları filtrelemesini sağlamak için kullanacağı etiket daha iyidir. Bu karar, sorgu maliyetinde önemli bir etkiye sahip olabilir. Sorgu maliyetini, her zaman executionProfile adımını kullanarakdeğerlendirebilirsiniz.
Sonraki adımlar:
- Desteklenen Gremlin adımlarınınlistesine göz atın.
- Büyük ölçekli grafiklerle başa çıkmak için grafik veritabanı bölümlendirme hakkında bilgi edinin.
- Yürütme profili adımınıkullanarak Gremlin sorgularınızı değerlendirin.
- üçüncü taraf Graph tasarım veri modeli