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. Grafikleri milisaniyelik gecikme süresiyle 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 benzersiz ve esnek bir çözüm sağlar.

İpucu

Gremlin için API'yi 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'de derlenme avantajları vardır:

  • Esnek 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 çapındaki 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 bölgesel bir yük devretme mekanizması sağlar. Bu mekanizma, bir bölgede 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 bunları 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 zorunlu, işlevsel bir sorgu dilidir. Gremlin için API, şema ipuçlarını, ikincil dizinleri veya görünümleri belirtmeye gerek kalmadan zengin gerçek zamanlı sorgular ve çapraz geçişler sağlar. Daha fazla bilgi için bkz . Gremlin kullanarak grafları sorgulama.

  • Tam olarak yönetilen grafik 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ırlamalarına bağlıdır ve genellikle çalışmasını sağlamak için 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 dizinler 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 IÇIN API, 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ışı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 grafik desteği bu senaryolar için idealdir.

  • Jeo-uzamsal: Telekomünikasyon, lojistik ve seyahat planlama alanındaki birçok uygulamanın bir alanda 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: IoT cihazları arasındaki ağ ve bağlantılar graf olarak modellenmiş durumdayken, 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 kalıcı ilişkileri kullanır ve bu da son derece verimli graf alma işlemlerine yol açar. Gremlin için API, özellik grafı modelini destekler.

Özellik grafı nesneleri

Özellik grafı köşelerden ve kenarlardan 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 belirtir. Ö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ında 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 ya da zaman damgası ve/veya ağırlığı olabilecek bir kenar bulunur.

  • Etiket - Etiket, 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.

Grafik veritabanları genellikle NoSQL veya ilişkisel olmayan veritabanı kategorisine dahil edilir, çünkü şemaya veya kısıtlanmış veri modeline bağımlılık yoktur. 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 graf aşağıdaki köşe türlerine sahiptir. Bu türler Gremlin'de etiketler 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...

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

  • Bilir: Tanıdıklığı temsil eden. Örneğin, "Thomas Robin'i tanıyor".

  • İlgi alanı: Grafımızdaki kişilerin ilgi alanlarını temsil edin. Örneğin, "Ben Futbol ile 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ım Alanları: Bir kişinin hangi cihazı kullandığını temsil edin. Ö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 gremlin konsolu hızlı başlangıcına bakın. 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 Konsolunu kullanarak bu grafik verilerine yönelik sorguların nasıl çalıştırılacakları gösterilmektedir.

İlk olarak oluşturma, okuma, güncelleştirme ve silme (CRUD) işlemine göz atalım. Aşağıdaki Gremlin deyimi, thomas köşesini birkaç özelliğe sahip 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 bir grafikte bölüm anahtarı olarak desteklenmez.

Daha sonra, 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. Bu bilgileri grafikten 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