Apache Gremlin için Azure Cosmos DB nedir?

ŞUNLAR IÇIN GEÇERLIDIR: Gremlin

Azure Cosmos DB , modern uygulama geliştirme için tam olarak yönetilen bir NoSQL ve ilişkisel veritabanıdır.

Apache Gremlin için Azure Cosmos DB, milyarlarca köşe ve kenar içeren büyük grafikleri depolamak için kullanılabilecek bir graf veritabanı hizmetidir. Milisaniyelik gecikme süresiyle grafikleri sorgulayabilir ve graf yapısını kolayca geliştirebilirsiniz. Gremlin IÇIN API, Gremlin sorgu dilini kullanan bir graf bilgi işlem çerçevesi olan Apache TinkerPop'u temel alır.

Önemli

Azure Cosmos DB graf altyapısı Apache TinkerPop belirtimini yakından izler. Ancak uygulama ayrıntılarında Azure Cosmos DB'ye özgü bazı farklılıklar vardır. Apache TinkerPop tarafından desteklenen bazı özellikler Azure Cosmos DB'de kullanılamaz. Desteklenmeyen özellikler hakkında daha fazla bilgi edinmek için Apache TinkerPop ile uyumluluk makalesine bakın.

Gremlin IÇIN API, graf veritabanı algoritmalarının gücünü yüksek oranda ölçeklenebilir, yönetilen altyapıyla birleştirir. Bu yaklaşım esnek olmayan veya ilişkisel kısıtlamalarla ilişkili yaygın veri sorunlarına yönelik benzersiz ve esnek bir çözüm sağlar.

İpucu

Gremlin api'sini hiçbir taahhüt olmadan denemek mi istiyorsunuz? Azure Cosmos DB'yi ücretsiz deneyin seçeneğini kullanarak bir Azure Cosmos DB hesabı oluşturun.

Gremlin avantajları için API

Gremlin API'sinin Azure Cosmos DB üzerinde derlenmesinin avantajları vardır:

  • Elastik olarak ölçeklenebilir aktarım hızı ve depolama: Gerçek dünyadaki grafiklerin tek bir sunucunun kapasitesinin ötesine ölçeklendirilmesi gerekir. Azure Cosmos DB, depolama ve sağlanan aktarım hızı açısından sınırsız boyuta sahip olabilecek yatay olarak ölçeklenebilir grafik veritabanlarını destekler. Graf veritabanı ölçeği büyüdükçe, veriler graf bölümleme kullanılarak otomatik olarak dağıtılır.

  • Çok bölgeli çoğaltma: Azure Cosmos DB graf verilerinizi dünya genelindeki herhangi bir Azure bölgesine otomatik olarak çoğaltabilir. Genel çoğaltma, verilere genel erişim gerektiren uygulamaların geliştirilmesini kolaylaştırır. Azure Cosmos DB, dünyanın her yerinde okuma ve yazma gecikme süresini en aza indirmenin yanı sıra hizmet tarafından yönetilen bir bölgesel yük devretme mekanizması da sağlar. Bu mekanizma, bir bölgede nadiren hizmet kesintisi olması durumunda uygulamanızın sürekliliğini sağlayabilir.

  • En yaygın olarak benimsenen grafik sorgu standardına sahip hızlı sorgular ve çapraz geçişler: Heterojen köşeleri ve kenarları depolayın ve tanıdık bir Gremlin söz dizimi aracılığıyla sorgulayın. Gremlin, yaygın graf algoritmalarını uygulamak için zengin bir arabirim sağlayan kesinlik temelli, işlevsel bir sorgu dilidir. Gremlin API'si şema ipuçlarını, ikincil dizinleri veya görünümleri belirtmeye gerek kalmadan zengin gerçek zamanlı sorgular ve dolaşmalar sağlar. Daha fazla bilgi için bkz. Gremlin kullanarak grafları sorgulama.

  • Tam olarak yönetilen graf veritabanı: Azure Cosmos DB, veritabanı ve makine kaynaklarını yönetme gereksinimini ortadan kaldırır. Mevcut graf veritabanı platformlarının çoğu altyapısının sınırlamalarına bağlıdır ve çalışmasını sağlamak için genellikle yüksek düzeyde bakım gerektirir. Tam olarak yönetilen bir hizmet olan Cosmos DB, sanal makineleri yönetme, çalışma zamanı yazılımını güncelleştirme, parçalama veya çoğaltmayı yönetme ya da karmaşık veri katmanı yükseltmeleriyle ilgilenme gereksinimini ortadan kaldırır. Tüm grafikler otomatik olarak yedeklenir ve bölgesel arızalara karşı korunur. Bu yönetim, geliştiricilerin graf veritabanlarını çalıştırmak ve yönetmek yerine uygulama değeri sunmaya odaklanmasını sağlar.

  • Otomatik dizin oluşturma: Gremlin API'si varsayılan olarak, grafikteki düğümlerdeki (köşe olarak da adlandırılır) ve kenarlardaki tüm özellikleri otomatik olarak dizine alır ve herhangi bir şema veya ikincil dizin oluşturulmasını beklemez veya gerektirmez. Daha fazla bilgi için bkz. Azure Cosmos DB'de dizin oluşturma.

  • Apache TinkerPop ile uyumluluk: Gremlin API'si açık kaynak Apache TinkerPop standardını destekler. Apache TinkerPop standardı, API ile kolayca tümleştirilebilen geniş bir uygulama ve kitaplık ekosistemi içerir.

  • Ayarlanabilir tutarlılık düzeyleri: Azure Cosmos DB, uygulamanız için tutarlılık ve performans arasında doğru dengeyi elde etmek için iyi tanımlanmış beş tutarlılık düzeyi sağlar. Azure Cosmos DB sorgular ve okuma işlemleri için beş farklı tutarlılık düzeyi sunar: güçlü, sınırlanmış eskime durumu, oturum, tutarlı ön ek ve son. Bu ayrıntılı ve iyi tanımlanmış tutarlılık düzeyleri tutarlılık, kullanılabilirlik ve gecikme süresi arasında sağlam bir denge kurmanıza olanak sağlar. Daha fazla bilgi için bkz. Azure Cosmos DB'de ayarlanabilir veri tutarlılığı düzeyleri.

Gremlin için API için yaygın senaryolar

Azure Cosmos DB'nin grafik desteğinin yararlı olabileceği bazı senaryolar şunlardır:

  • Sosyal ağlar/Müşteri 365: Müşterileriniz ve diğer kişilerle etkileşimleri hakkındaki verileri birleştirerek kişiselleştirilmiş deneyimler geliştirebilir, müşteri davranışlarını tahmin edebilir veya benzer ilgi alanlarına sahip kişilerle bağlantı kurabilirsiniz. Azure Cosmos DB, sosyal ağları yönetmek ve müşteri tercihlerini ve verilerini izlemek için kullanılabilir.

  • Öneri altyapıları: Bu senaryo perakende sektöründe yaygın olarak kullanılır. Ürünler, kullanıcılar ve satın alma, gözatma veya bir öğeyi derecelendirme gibi kullanıcı etkileşimleri hakkındaki bilgileri birleştirerek özelleştirilmiş öneriler oluşturabilirsiniz. Azure Cosmos DB'nin düşük gecikme süresi, elastik ölçek ve yerel graf desteği bu senaryolar için idealdir.

  • Jeo-uzamsal: Telekomünikasyon, lojistik ve seyahat planlama alanındaki birçok uygulamanın bir alan içinde ilgi çekici bir konum bulması veya iki konum arasındaki en kısa/en uygun rotayı bulması gerekir. Azure Cosmos DB, bu sorunları için idealdir.

  • Nesnelerin İnterneti: Ağ ve IoT cihazları arasındaki bağlantılar graf olarak modellendikçe, cihazlarınızın ve varlıklarınızın durumunu daha iyi anlayabilirsiniz. Ayrıca ağın bir bölümündeki değişikliklerin başka bir bölümü nasıl etkileyebileceğini de öğrenebilirsiniz.

Grafik veritabanlarına giriş

Gerçek dünyada görünen veriler doğal olarak bağlıdır. Geleneksel veri modelleme, varlıkları ayrı ayrı tanımlamaya ve çalışma zamanında ilişkilerini hesaplamaya odaklanır. Bu modelin avantajları olsa da, yüksek oranda bağlı verilerin kısıtlamaları altında yönetilmesi zor olabilir.

Graf veritabanı yaklaşımı bunun yerine depolama katmanındaki ilişkileri kalıcı hale getirerek son derece verimli graf alma işlemlerine yol açar. Gremlin API'si özellik grafı modelini destekler.

Özellik grafı nesneleri

Özellik grafı köşelerden vekenarlardan oluşan bir yapıdır. Her iki nesnenin de özellik olarak rastgele sayıda anahtar-değer çifti olabilir.

  • Köşeler/düğümler: Köşeler kişi, yer veya olay gibi ayrık varlıkları belirtir.

  • Kenarlar/ilişkiler: Kenarlar köşeler arasındaki ilişkileri gösterir. Örneğin, bir kişi başka bir kişiyi tanıyor, bir olaya dahil olabilir veya yakın zamanda bir yerde olabilir.

  • Özellikler: Özellikler köşeler ve kenarlar hakkındaki bilgileri (veya meta verileri) ifade eder. Köşelerde veya kenarlarda herhangi bir sayıda özellik olabilir ve bunlar sorgudaki nesneleri tanımlamak ve filtrelemek için kullanılabilir. Örnek özellikler arasında adı ve yaşı olan bir köşe veya zaman damgası ve/veya ağırlığa sahip olabilecek bir kenar bulunur.

  • Etiket - Etiket bir köşenin veya kenarın adı veya tanımlayıcısıdır. Etiketler, bir gruptaki tüm köşelerin/kenarların belirli bir etikete sahip olması için birden çok köşeyi veya kenarı gruplandırabilir. Örneğin, bir grafiğin "person" etiketine sahip birden çok köşesi olabilir.

Şemaya veya kısıtlanmış veri modeline bağımlılık olmadığından graf veritabanları genellikle NoSQL veya ilişkisel olmayan veritabanı kategorisine dahil edilir. Bu şema eksikliği, bağlı yapıların doğal ve verimli bir şekilde modellenmesine ve depolanmasına olanak tanır.

Graf veritabanı örneği

Sorguların Gremlin’de nasıl ifade edildiğini anlamak için örnek bir grafik kullanalım. Aşağıdaki şekilde kullanıcılar, ilgi alanları ve cihazlar hakkındaki verileri yöneten bir iş uygulaması grafik biçiminde gösterilir.

Kişileri, cihazları ve ilgi alanlarını gösteren örnek özellik grafiği.

Bu grafik aşağıdaki köşe türlerine sahiptir. Bu türler Gremlin'de etiket olarak da adlandırılır:

  • Kişiler: Grafikte üç kişi vardır; Robin, Thomas ve Ben.

  • İlgi alanları: İlgi alanları, bu örnekte Futbol oyununu içerir.

  • Cihazlar: Kişilerin kullandığı cihazlar.

  • İşletim Sistemleri: Cihazların üzerinde çalıştığı işletim sistemleri.

  • Yer: Cihazların erişildiği yer[s].

Bu varlıklar arasındaki ilişkileri aşağıdaki kenar türleri aracılığıyla temsil ediyoruz:

  • Bilir: Aşinalığı temsil edin. Örneğin, "Thomas Robin'i tanıyor".

  • İlgilenen: Grafımızdaki kişilerin ilgi alanlarını temsil edin. Örneğin, "Ben futbolla ilgileniyor".

  • RunsOS: Bir cihazın çalıştığı işletim sistemini temsil eder. Örneğin, "Dizüstü bilgisayar Windows işletim sistemini çalıştırır".

  • Kullanır: Bir kişinin hangi cihazı kullandığını gösterir. Örneğin, "Robin seri numarası 77 olan bir Motorola telefonu kullanıyor".

  • Konum: Cihazların erişildiği konumu temsil edin.

Gremlin Konsolu, Apache TinkerPop tarafından sunulan etkileşimli bir terminaldir ve bu terminal graf verileriyle etkileşime geçmek için kullanılır. Daha fazla bilgi için bkz. Gremlin konsolu hızlı başlangıcı. Dilerseniz bu işlemleri, tercih ettiğiniz platformdaki (Java, Node.js, Python veya .NET) Gremlin sürücülerini kullanarak da gerçekleştirebilirsiniz. Aşağıdaki örneklerde Gremlin Konsolu'nu kullanarak bu graf verisinde sorgu çalıştırma işlemi gösterilir.

İlk olarak oluşturma, okuma, güncelleştirme ve silme (CRUD) işlemine göz atalım. Aşağıdaki Gremlin deyimi , Thomasköşesini birkaç özellik ile grafiğe ekler:

g.addV('person').
  property('id', 'thomas.1').
  property('firstName', 'Thomas').
  property('lastName', 'Andersen').
  property('age', 44)

İpucu

Bu örneklerle birlikte takip ediyorsanız, grafiğinizi oluştururken bölüm anahtarı olarak bu özelliklerden herhangi birini (age, firstName, lastName) kullanabilirsiniz. id özelliği grafikte bölüm anahtarı olarak desteklenmez.

Ardından, aşağıdaki Gremlin deyimi Thomas ve Robin arasında bir bilinen kenar ekler.

g.V('thomas.1').
  addE('knows').
  to(g.V('robin.1'))

Aşağıdaki sorgu kişi köşelerini adlarına göre azalan sırada döndürür:

g.V().
  hasLabel('person').
  order().
  by('firstName', decr)

Grafiklerin asıl iyi olduğu kısımlar, “Thomas’ın arkadaşları hangi işletim sistemini kullanıyor?” gibi sorular sorduğunuzda ortaya çıkıyor. Graftan bu bilgileri almak için bu Gremlin geçişini çalıştırabilirsiniz:

g.V('thomas.1').
  out('knows').
  out('uses').
  out('runsos').
  group().
  by('name').
  by(count())

Sonraki adımlar