Hızlı Başlangıç: Node.js için Apache Gremlin için Azure Cosmos DB kitaplığı
ŞUNLAR IÇIN GEÇERLIDIR: Gremlin
Apache Gremlin için Azure Cosmos DB, Gremlin sorgu dilini kullanan popüler Apache Tinkerpop
bir graf bilgi işlem çerçevesi uygulayan tam olarak yönetilen bir graf veritabanı hizmetidir. Gremlin API'si, minimum yönetimle gremlin'i istediğiniz kadar büyüyebilen ve ölçeği genişletebilen bir hizmetle kullanmaya başlamanız için düşük uyuşmalı bir yol sunar.
Bu hızlı başlangıçta kitaplığını gremlin
kullanarak yeni oluşturulan Gremlin için Azure Cosmos DB hesabına bağlanacaksınız.
Kitaplık kaynak kodu | Paketi (npm)
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı.
- Azure aboneliği yok mu? Ücretsiz bir Azure hesabına kaydolun.
- Azure aboneliği istemiyor musunuz? Abonelik gerektirmeden Azure Cosmos DB'i ücretsiz deneyebilirsiniz.
- Node.js (LTS)
- Node.js yüklü değil mi? Bu hızlı başlangıcı GitHub Codespaces.codespaces.new/github/codespaces-blank?quickstart=1) adresinde deneyin
- Azure Komut Satırı Arabirimi (CLI)
Azure Cloud Shell
Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı olan Azure Cloud Shell'i barındırıyor. Azure hizmetleriyle çalışmak için Cloud Shell ile Bash veya PowerShell kullanabilirsiniz. Yerel ortamınıza herhangi bir şey yüklemek zorunda kalmadan bu makaledeki kodu çalıştırmak için Cloud Shell önceden yüklenmiş komutlarını kullanabilirsiniz.
Azure Cloud Shell'i başlatmak için:
Seçenek | Örnek/Bağlantı |
---|---|
Kodun veya komut bloğunun sağ üst köşesindeki Deneyin'i seçin. Deneyin seçildiğinde kod veya komut otomatik olarak Cloud Shell'e kopyalanmaz. | ![]() |
https://shell.azure.comadresine gidin veya Cloud Shell'i tarayıcınızda açmak için Cloud Shell'i Başlat düğmesini seçin. | ![]() |
Azure portalının sağ üst kısmındaki menü çubuğunda Cloud Shell düğmesini seçin. | ![]() |
Azure Cloud Shell'i kullanmak için:
Cloud Shell'i başlatın.
Kodu veya komutu kopyalamak için kod bloğundaki (veya komut bloğundaki) Kopyala düğmesini seçin.
Windows ve Linux'ta Ctrl+Shift V'yi seçerek veya macOS üzerinde Cmd+Shift++V'yi seçerek kodu veya komutu Cloud Shell oturumuna yapıştırın.
Kodu veya komutu çalıştırmak için Enter'ı seçin.
Ayarlama
Bu bölümde Gremlin hesabı için API oluşturma ve hesaba bağlanmak üzere kitaplığı kullanmak üzere bir Node.js projesi ayarlama adımları açıklanmıştır.
Gremlin hesabı için API oluşturma
gremlin hesabı için API, Node.js kitaplığını kullanmadan önce oluşturulmalıdır. Ayrıca, veritabanının ve grafiğin yerinde olması da yardımcı olur.
accountName, resourceGroupName ve location için kabuk değişkenleri oluşturun.
# Variable for resource group name resourceGroupName="msdocs-cosmos-gremlin-quickstart" location="westus" # Variable for account name with a randomly generated suffix let suffix=$RANDOM*$RANDOM accountName="msdocs-gremlin-$suffix"
Henüz yapmadıysanız kullanarak
az login
Azure CLI'da oturum açın.Aboneliğinizde yeni bir kaynak grubu oluşturmak için kullanın
az group create
.az group create \ --name $resourceGroupName \ --location $location
Varsayılan ayarlarla Gremlin hesabı için yeni bir API oluşturmak için kullanın
az cosmosdb create
.az cosmosdb create \ --resource-group $resourceGroupName \ --name $accountName \ --capabilities "EnableGremlin" \ --locations regionName=$location \ --enable-free-tier true
Not
Azure aboneliği başına bir ücretsiz katman Azure Cosmos DB hesabına sahip olabilirsiniz. Bunu hesabı oluştururken kabul etmeniz gerekir. Bu komut ücretsiz katman indirimini uygulayamazsa, bu abonelikteki başka bir hesabın ücretsiz katmanla zaten etkinleştirildiği anlamına gelir.
kullanarak
az cosmosdb show
hesabın Gremlin uç nokta ADı API'sini alın.az cosmosdb show \ --resource-group $resourceGroupName \ --name $accountName \ --query "name"
ile hesabın
az-cosmosdb-keys-list
anahtar listesinden KEY değerini bulun.az cosmosdb keys list \ --resource-group $resourceGroupName \ --name $accountName \ --type "keys" \ --query "primaryMasterKey"
AD ve ANAHTAR değerlerini kaydedin. Bu kimlik bilgilerini daha sonra kullanacaksınız.
kullanarak
az cosmosdb gremlin database create
adlıcosmicworks
bir veritabanı oluşturun.az cosmosdb gremlin database create \ --resource-group $resourceGroupName \ --account-name $accountName \ --name "cosmicworks"
kullanarak
az cosmosdb gremlin graph create
bir grafik oluşturun. Grafıproducts
adlandırın, ardından aktarım hızını olarak400
ayarlayın ve son olarak bölüm anahtarı yolunu olarak/category
ayarlayın.az cosmosdb gremlin graph create \ --resource-group $resourceGroupName \ --account-name $accountName \ --database-name "cosmicworks" \ --name "products" \ --partition-key-path "/category" \ --throughput 400
Yeni Node.js konsol uygulaması oluşturma
Tercih ettiğiniz terminali kullanarak boş bir klasörde Node.js konsol uygulaması oluşturun.
Terminalinizi boş bir klasörde açın.
Yeni bir modül başlatma
npm init es6 --yes
app.js dosyasını oluşturma
touch app.js
npm paketini yükleme
gremlin
npm paketini Node.js projesine ekleyin.
package.json dosyasını açın ve içeriğini bu JSON yapılandırmasıyla değiştirin.
{ "main": "app.js", "type": "module", "scripts": { "start": "node app.js" }, "dependencies": { "gremlin": "^3.*" } }
npm install
package.json dosyasında belirtilen tüm paketleri yüklemek için komutunu kullanın.npm install
Ortam değişkenlerini yapılandırma
Bu hızlı başlangıçta daha önce elde edilen AD ve URI değerlerini kullanmak için, bunları uygulamayı çalıştıran yerel makinedeki yeni ortam değişkenlerinde kalıcı hale getirin.
Ortam değişkenini ayarlamak için, değerleri sırasıyla ve
COSMOS_KEY
olarakCOSMOS_ENDPOINT
kalıcı hale getirmek için terminalinizi kullanın.export COSMOS_GREMLIN_ENDPOINT="<account-name>" export COSMOS_GREMLIN_KEY="<account-key>"
Ortam değişkenlerinin doğru ayarlandığını doğrulayın.
printenv COSMOS_GREMLIN_ENDPOINT printenv COSMOS_GREMLIN_KEY
Kod örnekleri
Bu makaledeki kod adlı bir veritabanına ve adlı cosmicworks
products
bir grafa bağlanır. Kod daha sonra eklenen öğeleri geçirmeden önce grafiğe köşeler ve kenarlar ekler.
İstemcinin kimliğini doğrulama
Çoğu Azure hizmeti için uygulama istekleri yetkilendirilmelidir. Gremlin API'sinde , bu hızlı başlangıçta daha önce elde edilen AD ve URI değerlerini kullanın.
app.js dosyasını açın.
Modülü içeri aktarın
gremlin
.import gremlin from 'gremlin'
ve
accountKey
değişkenleri oluşturunaccountName
.COSMOS_GREMLIN_ENDPOINT
veCOSMOS_GREMLIN_KEY
ortam değişkenlerini ilgili her değişkenin değerleri olarak depolayın.const accountName = process.env.COSMOS_GREMLIN_ENDPOINT const accountKey = process.env.COSMOS_GREMLIN_KEY
Hesabın kimlik bilgileri için yeni bir nesne oluşturmak için kullanın
PlainTextSaslAuthenticator
.const credentials = new gremlin.driver.auth.PlainTextSaslAuthenticator( '/dbs/cosmicworks/colls/products', `${accountKey}` )
Uzak sunucu kimlik bilgilerini ve GraphSON 2.0 seri hale getiricisini kullanarak bağlanmak için kullanın
Client
. Ardından, sunucuya yeni bir bağlantı oluşturmak için kullanınOpen
.const client = new gremlin.driver.Client( `wss://${accountName}.gremlin.cosmos.azure.com:443/`, { credentials, traversalsource: 'g', rejectUnauthorized: true, mimeType: 'application/vnd.gremlin-v2.0+json' } ) client.open()
Köşe oluşturma
Uygulama hesaba bağlı olduğuna göre köşe oluşturmak için standart Gremlin söz dizimini kullanın.
Gremlin hesabı için API'de sunucu tarafında bir komut çalıştırmak için kullanın
submit
. Aşağıdaki özelliklere sahip bir ürün köşesi oluşturun:Değer etiket product
id 68719518371
name
Kiama classic surfboard
price
285.55
category
surfboards
await client.submit( 'g.addV(\'product\').property(\'id\', prop_id).property(\'name\', prop_name).property(\'price\', prop_price).property(\'category\', prop_partition_key)', { prop_id: '68719518371', prop_name: 'Kiama classic surfboard', prop_price: 285.55, prop_partition_key: 'surfboards' } )
Şu özelliklere sahip ikinci bir ürün köşesi oluşturun:
Değer etiket product
id 68719518403
name
Montau Turtle Surfboard
price
600.00
category
surfboards
await client.submit( 'g.addV(\'product\').property(\'id\', prop_id).property(\'name\', prop_name).property(\'price\', prop_price).property(\'category\', prop_partition_key)', { prop_id: '68719518403', prop_name: 'Montau Turtle Surfboard', prop_price: 600.00, prop_partition_key: 'surfboards' } )
Şu özelliklere sahip üçüncü bir ürün köşesi oluşturun:
Değer etiket product
id 68719518409
name
Bondi Twin Surfboard
price
585.50
category
surfboards
await client.submit( 'g.addV(\'product\').property(\'id\', prop_id).property(\'name\', prop_name).property(\'price\', prop_price).property(\'category\', prop_partition_key)', { prop_id: '68719518409', prop_name: 'Bondi Twin Surfboard', prop_price: 585.50, prop_partition_key: 'surfboards' } )
Kenar oluşturma
Köşeler arasındaki ilişkileri tanımlamak için Gremlin söz dizimini kullanarak kenarlar oluşturun.
Yerine
Kiama classic surfboard
ürün olarakMontau Turtle Surfboard
adlandırılan üründen bir kenar oluşturun.await client.submit( 'g.V([prop_partition_key, prop_source_id]).addE(\'replaces\').to(g.V([prop_partition_key, prop_target_id]))', { prop_partition_key: 'surfboards', prop_source_id: '68719518403', prop_target_id: '68719518371' } )
İpucu
Bu kenar tanımlayıcısı söz dizimini
g.V(['<partition-key>', '<id>'])
kullanır. Alternatif olarak, kullanabilirsinizg.V('<id>').has('category', '<partition-key>')
.Başka bir oluşturma, aynı üründeki kenarı ile
Bondi Twin Surfboard
değiştirir.await client.submit( 'g.V([prop_partition_key, prop_source_id]).addE(\'replaces\').to(g.V([prop_partition_key, prop_target_id]))', { prop_partition_key: 'surfboards', prop_source_id: '68719518403', prop_target_id: '68719518409' } )
Sorgu köşeleri ve kenarlar
Grafta geçiş yapmak ve köşeler arasındaki ilişkileri bulmak için Gremlin söz dizimini kullanın.
Grafı çapraz geçin ve yerini alan
Montau Turtle Surfboard
tüm köşeleri bulun.const result = await client.submit( 'g.V().hasLabel(\'product\').has(\'category\', prop_partition_key).has(\'name\', prop_name).outE(\'replaces\').inV()', { prop_partition_key: 'surfboards', prop_name: 'Montau Turtle Surfboard' } )
Konsola bu geçişin sonucunu yazın.
console.dir(result)
Kodu çalıştırma
Uygulamayı çalıştırarak uygulamanızın beklendiği gibi çalıştığını doğrulayın. Uygulama hiçbir hata veya uyarı olmadan yürütülmelidir. Uygulamanın çıktısı, oluşturulan ve sorgulanan öğeler hakkındaki verileri içerir.
Node.js proje klasöründe terminali açın.
Uygulamayı çalıştırmak için kullanın
npm <script>
. Uygulamanın çıkışını gözlemleyin.npm start
Kaynakları temizleme
Gremlin hesabı için API'ye artık ihtiyacınız kalmadığında ilgili kaynak grubunu silin.
Henüz yoksa resourceGroupName için bir kabuk değişkeni oluşturun.
# Variable for resource group name resourceGroupName="msdocs-cosmos-gremlin-quickstart"
Kaynak grubunu silmek için kullanın
az group delete
.az group delete \ --name $resourceGroupName