Azure Cosmos DB'de Gremlin API'ye giriş
Uygulama hedefı:
Gremlin API
Azure Cosmos DB , Microsoft'un görev açısından kritik uygulamalar için genel olarak dağıtılmış, çok modelli veritabanı hizmetidir. Çok modelli bir veritabanıdır ve belge, anahtar-değer, grafik ve sütun ailesi veri modellerini destekler. Azure Cosmos DB, gremlin API'si aracılığıyla herhangi bir ölçek için tasarlanmış, tam olarak yönetilen bir veritabanı hizmeti üzerinde graf veritabanı hizmeti sağlar.
Bu makalede Azure Cosmos DB Gremlin API'sine genel bir bakış sağlanmıştır ve milyarlarca köşe ve kenarı olan muazzam grafları depolamak için nasıl kullanacağız? Grafikleri milisaniyelik gecikme süresiyle sorgulayabilirsiniz ve graf yapısını kolayca geliştirebilirsiniz. Azure Cosmos DB'nin Gremlin API'si, bir grafik bilgi işlem çerçevesi olan Apache TinkerPop'adayalı olarak geliştirilmiştir. Azure Cosmos DB'de Gremlin API'si Gremlin sorgu dilini kullanır.
Azure Cosmos DB'nin Gremlin API'si, esneklik ve ilişkisel yaklaşım eksikliğiyle ilişkili en yaygın veri sorunlarına benzersiz ve esnek bir çözüm sağlamak için graf veritabanı algoritmalarının gücünü yüksek oranda ölçeklenebilir, yönetilen altyapıyla birleştirir.
Not
Azure Cosmos DB grafik altyapısı Apache TinkerPop belirtimlerine yakından bağlıdır. Ancak uygulama ayrıntılarında Azure veritabanına özgü bazı farklar Cosmos 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.
Azure Cosmos DB'nin Gremlin API'sini özellikleri
Azure Cosmos DB; genel dağıtım, depolama ve aktarım hızında esnek ölçeklendirme, otomatik dizinleme ve sorgu, ayarlanabilir tutarlılık düzeyleri ve TinkerPop standardı desteği sunan, tam olarak yönetilen bir graf veritabanıdır.
Not
Sunucusuz kapasite modu artık Azure Cosmos DB'nin Gremlin API'sini kullanabilir.
Azure Cosmos DB Gremlin API'sini sunan farklı özellikler şunlardır:
Aktarım hızı ve depolamayı esnek bir şekilde ölçeklendirme
Gerçek dünyadaki grafiklerin, tek bir sunucunun kapasitesinin yetmeyeceği biçimde ölçeklendirilmesi gerekir. Azure Cosmos DB, depolama ve sağlanan aktarım hızı açısından neredeyse sınırsız boyuta sahip olan yatay olarak ölçeklenebilir graf 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ölgesinde otomatik olarak çoğaltabilirsiniz. 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 indirmeye ek olarak, bir bölgede hizmet kesintisi olması durumunda uygulamanın sürekliliğini sağlayan otomatik bölgesel yük devretme mekanizması sağlar.
En yaygın olarak benimsenen graf sorgusu standardıyla hızlı sorgular ve çapraz geçişler
Heterojen köşeleri ve kenarları depolar ve tanıdık gremlin söz dizimi aracılığıyla bunları sorgular. Gremlin, ortak graf algoritmalarını uygulamak için zengin bir arabirim sağlayan bir uygulamalı, işlevsel bir sorgu dilidir.
Azure Cosmos DB şema ipuçları, ikincil dizinler veya görünümler belirtmeye gerek kalmadan zengin gerçek zamanlı sorgulara ve çapraz geçişlere olanak sağlar. Daha fazla bilgi için bkz. Gremlin kullanarak sorgu grafikleri.
Tam olarak yönetilen graf veritabanı
Azure Cosmos DB, veritabanı ve makine kaynaklarını yönetme ihtiyacını 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 genellikle çalışması için yüksek düzeyde bakım gerektirir.
Tam olarak yönetilen bir hizmet olarak 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 uğraşmak zorunda değildir. Tüm grafikler otomatik olarak yedeklenir ve bölgesel arızalara karşı korunur. Bu, geliştiricilerin graf veritabanlarını çalıştırmaya ve yönetmeye değil uygulama değeri sunmaya odaklanmalarına olanak sağlar.
Otomatik dizin oluşturma
Varsayılan olarak Azure Cosmos DB, grafikte düğümler (köşe olarak da denir) ve kenarlar içindeki tüm özellikleri otomatik olarak dizinler ve herhangi bir şema ya da ikincil dizin oluşturulmasını beklemez veya gerektirmez. Azure Cosmos DB'de dizin oluşturma hakkında daha fazla bilgi edinin.
Apache TinkerPop ile uyumluluk
Azure Cosmos DB, açık kaynak Apache TinkerPop standardını destekler. Tinkerpop standardı, Azure Cosmos DB'nin Gremlin API'si ile kolayca tümleştirilebilir geniş bir uygulama ve kitaplık ekosistemi içerir.
Ayarlanabilir tutarlılık düzeyleri
Azure Cosmos DB, tutarlılığı ve uygulama performansını doğru şekilde 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. Azure Cosmos DB'deki ayarlanabilir tutarlılık düzeyleri sayfasına giderek daha fazla bilgi edinin.
Gremlin API'sini kullanan senaryolar
Azure Cosmos DB'nin grafik desteğinin yararlı olduğu bazı senaryolar:
Sosyal ağlar/Müşteri 365
Müşterileriniz ve diğer kişilerle etkileşimleri hakkındaki verileri birleştirerek kişiselleştirilmiş deneyimleri geliştirebilir, müşteri davranışını tahmin edebilir veya kişileri benzer ilgi alanlarına sahip başkalarına bağlayabilirsiniz. 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, esnek ölçek ve yerel graf desteği bu senaryolar için idealdir.
Jeo-uzamsal
Telekomünikasyon, lojistik ve seyahat planlama alanlarındaki birçok uygulamanın, bir bölgede ilgi çekici bir konum bulması veya iki konum arasındaki en kısa/en uygun yolu belirlemesi gerekir. Azure Cosmos DB, bu sorunları için idealdir.
Nesnelerin İnterneti
IOT cihazları arasındaki ağ ve bağlantılar bir grafik olarak modellendiğinde, cihazlarınızın ve varlıklarınızın durumunu daha iyi kavrayabilirsiniz. Ayrıca ağın bir bölümündeki değişikliklerin başka bir bölümü nasıl etkileyebileceğini de öğrenebilirsiniz.
Graf 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ı vardır ancak yüksek oranda bağlı verilerin kısıtlamaları altında yönetimi zor olabilir.
Graf veritabanı yaklaşımı, bunun yerine depolama katmanında kalıcı ilişkiler kullanır ve bu da yüksek oranda verimli graf alma işlemlerine yol gösterir. Azure Cosmos DB'nin Gremlin API'si özellik grafı modelini destekler.
Özellik grafı nesneleri
Özellik grafiği köşelerden ve kenarlardan oluşan bir yapıdır. Her iki nesne 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ı gösterir.
Kenarlar/ilişkiler - Kenarlar köşeler arasındaki ilişkileri ifade ediyor. Bir kişinin başka bir kişiyi tanıması, bir etkinliğe katılması veya kısa süre önce bir konumda bulunması bağlantılar buna örnek gösterilebilir.
Özellikler - Özellikler, köşeler ve kenarlar hakkında bilgi ifade eder. Köşelerde veya kenarlarda herhangi bir sayıda özellik olabilir ve bunlar bir 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ığı olan bir kenar vardır.
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 olacak şekilde birden çok köşeyi veya kenarı gruplar. Örneğin, bir graf "kişi" etiket türünde birden çok köşeye sahip olabilir.
Graph 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 sağlar.
Graph veritabanı oluşturma
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.
Bu graf aşağıdaki köşe türlerine (Gremlin'de "etiket" olarak da denir) sahip:
- People: Grafikte Robin, Thomas ve Ben gibi üç kişi var
- İlgi Alanları: Bu örnekteki ilgi alanları, Futbol oyunu
- Cihazlar: Kişilerin kullanmakta olduğu cihazlar
- İşletim Sistemleri: Cihazların üzerinde çalıştır olduğu işletim sistemleri
- Yer: Cihazlara erişilen yerler
Bu varlıklar arasındaki ilişkileri aşağıdaki kenar türleri aracılığıyla temsil ediyoruz:
- Biliyor: Örneğin, "Thomas Robin'i tanıyor"
- İlgilenen: Grafımızda yer alan kişilerin ilgilerini temsil etmek için , örneğin, "Ben Futbolla ilgileniyor"
- RunsOS: Dizüstü bilgisayar işletim Windows çalıştırır
- Kullanır: Bir kişinin kullandığı cihazı temsil etmek için. Örneğin Robin, seri numarası 77 olan bir Motorola telefon kullanır
- Bulunan: Cihazlara erişilen konumu temsil etmek için
Gremlin Konsolu Apache TinkerPop tarafından sunulan etkileşimli bir terminaldir ve bu terminal graf verileriyle etkileşim kurmak için kullanılır. Daha fazla bilgi edinmek için Gremlinkonsolunu kullanma hızlı başlangıç belgesine 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 Konsolu'nu kullanarak bu graf verilerine yönelik sorguların nasıl çalıştır olduğu gösterilir.
İlk olarak CRUD’a bakalım. Aşağıdaki Gremlin deyimi “Thomas” köşesini grafiğe ekler:
:> g.addV('person').property('id', 'thomas.1').property('firstName', 'Thomas').property('lastName', 'Andersen').property('age', 44)
Daha sonra aşağıdaki Gremlin deyimi, Thomas ve Robin arasına bir “Tanıma” kenarı ekler.
:> g.V('thomas.1').addE('knows').to(g.V('robin.1'))
Aşağıdaki sorgu, “kişiler” köşesini ilk 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şlerini çalıştırabilirsiniz:
:> g.V('thomas.1').out('knows').out('uses').out('runsos').group().by('name').by(count())
Sonraki adımlar
Azure Cosmos DB’de grafik desteği hakkında daha fazla bilgi için bkz.
- Azure Cosmos DB grafik öğreticisi ile çalışmaya başlayın.
- Azure Cosmos DB’de Gremlin kullanarak grafikleri sorgulamayı öğrenin.