Share via


Hızlı Başlangıç: Node.js ve Azure Cosmos DB ile Tablo uygulaması için API oluşturma

ŞUNLAR IÇIN GEÇERLIDIR: Tablo

Bu hızlı başlangıçta Tablo için Azure Cosmos DB hesabı oluşturacak ve tablolar ve varlıklar oluşturmak için github'dan kopyalanmış Veri Gezgini ve Node.js uygulamasını kullanacaksınız. Azure Cosmos DB, genel dağıtım ve yatay ölçek özelliklerine sahip belge, tablo, anahtar-değer ve grafik veritabanlarını hızla oluşturmanıza ve sorgulamanıza olanak tanıyan çok modelli bir veritabanı hizmetidir.

Önkoşullar

Örnek uygulama

Bu öğretici için örnek uygulama depodan https://github.com/Azure-Samples/msdocs-azure-data-tables-sdk-jskopyalanabilir veya indirilebilir. Örnek depoya hem başlangıç hem de tamamlanan uygulama dahildir.

git clone https://github.com/Azure-Samples/msdocs-azure-data-tables-sdk-js

Örnek uygulama, Tablo api'sinin özelliklerini göstermek için örnek olarak hava durumu verilerini kullanır. Tablo için API'nin şemasız özelliklerini göstermek üzere ek özelliklere sahip nesneleri depolama da dahil olmak üzere, hava durumu gözlemlerini temsil eden nesneler Tablo API'si kullanılarak depolanır ve alınır.

Tablo API'sini kullanan bir Azure Cosmos DB tablosunda depolanan verileri gösteren tamamlanmış uygulamanın ekran görüntüsü.

1 - Azure Cosmos DB hesabı oluşturma

İlk olarak, uygulamanızda kullanılan tabloları içerecek bir Azure Cosmos DB Tabloları API hesabı oluşturmanız gerekir. Bu işlem Azure portal, Azure CLI veya Azure PowerShell kullanılarak yapılabilir.

Azure portal oturum açın ve bir Azure Cosmos DB hesabı oluşturmak için bu adımları izleyin.

Yönergeler Ekran görüntüsü
Azure portalında:
  1. Azure portal üst kısmındaki arama çubuğuna "cosmos db" yazın.
  2. Arama çubuğunun altında görüntülenen menüde, Hizmetler'in altında Azure Cosmos DB etiketli öğeyi seçin.
Azure'da Azure Cosmos DB hesaplarını bulmak için üst araç çubuğundaki arama kutusunun nasıl kullanılacağını gösteren ekran görüntüsü.
Azure Cosmos DB sayfasında +Oluştur'u seçin. Azure'da Azure Cosmos DB hesapları sayfasındaki Oluştur düğmesi konumunu gösteren ekran görüntüsü.
API seç seçeneği sayfasında Azure Tablosu seçeneğini belirleyin. Doğru seçenek olarak Azure Tablosu seçeneğini gösteren ekran görüntüsü.
Azure Cosmos DB Hesabı - Azure Tablosu Oluştur sayfasında, formu aşağıdaki gibi doldurun.
  1. Kaynak grubu altındaki Yeni oluştur bağlantısını seçerek adlı rg-msdocs-tables-sdk-demo depolama hesabı için yeni bir kaynak grubu oluşturun.
  2. Benzersiz bir hesap adı oluşturmak için depolama hesabınıza XYZ'nin cosmos-msdocs-tables-sdk-demo-XYZ rastgele üç karakter olduğu bir ad verin. Azure Cosmos DB hesap adlarının uzunluğu 3 ile 44 karakter arasında olmalıdır ve yalnızca küçük harf, sayı veya kısa çizgi (-) karakteri içerebilir.
  3. Depolama hesabınız için bölge seçin.
  4. Standart performans'ı seçin.
  5. Bu örnek için Kapasite modu altında Sağlanan aktarım hızı'nu seçin.
  6. Bu örnek için Ücretsiz Katman İndirimi Uygula'nın altında Uygula'yı seçin.
  7. Azure Cosmos DB hesabınızı oluşturmak için ekranın en altındaki Gözden Geçir + oluştur düğmesini ve ardından özet ekranında "Oluştur"u seçin. Bu işlem birkaç dakika sürebilir.
Azure Cosmos DB Hesabı oluşturma sayfasındaki alanların nasıl doldurulduğunu gösteren ekran görüntüsü.

2 - Tablo oluşturma

Ardından, uygulamanızın kullanabilmesi için Azure Cosmos DB hesabınızda bir tablo oluşturmanız gerekir. Geleneksel veritabanından farklı olarak, tablodaki özellikleri (sütunları) değil, yalnızca tablonun adını belirtmeniz gerekir. Tablonuza veri yüklendiğinde, özellikler (sütunlar) gerektiğinde otomatik olarak oluşturulur.

Azure portal, Azure Cosmos DB hesabınızın içinde bir tablo oluşturmak için aşağıdaki adımları tamamlayın.

Yönergeler Ekran görüntüsü
Azure portal Azure Cosmos DB hesabının genel bakış sayfasına gidin. Üstteki arama çubuğuna Azure Cosmos DB hesabınızın adını (cosmos-msdocs-tables-sdk-demo-XYZ) yazarak ve kaynaklar başlığının altına bakarak Azure Cosmos DB hesabınızın genel bakış sayfasına gidebilirsiniz. Genel bakış sayfasına gitmek için Azure Cosmos DB hesabınızın adını seçin. Azure Cosmos DB hesabınızı bulmak için üstteki araç çubuğundaki arama kutusunun nasıl kullanılacağını gösteren ekran görüntüsü.
Genel bakış sayfasında +Tablo Ekle'yi seçin. Yeni Tablo iletişim kutusu sayfanın sağ tarafından dışarı kaydırılır. Tablo Ekle düğmesinin konumunu gösteren ekran görüntüsü.
Yeni Tablo iletişim kutusunda formu aşağıdaki gibi doldurun.
  1. Tablo Kimliği için WeatherData adını girin. Bu, tablonun adıdır.
  2. Bu örnek için Tablo aktarım hızı (otomatik ölçeklendirme) altında El ile seçeneğini belirleyin.
  3. Tahmini RU/sn değerinizin altında varsayılan 400 değerini kullanın.
  4. Tabloyu oluşturmak için Tamam düğmesini seçin.
Azure Cosmos DB tablosu için Yeni Tablo iletişim kutusunun nasıl yapıldığını gösteren ekran görüntüsü.

3 - Azure Cosmos DB bağlantı dizesini alma

Azure Cosmos DB'deki tablolarınıza erişmek için uygulamanız CosmosDB Depolama hesabının tablo bağlantı dizesine ihtiyaç duyar. Bağlantı dizesi Azure portal, Azure CLI veya Azure PowerShell kullanılarak alınabilir.

Yönergeler Ekran görüntüsü
Azure Cosmos DB hesap sayfasının sol tarafında, Ayarlar üst bilgisinin altında Bağlantı Dizesi adlı menü öğesini bulun ve seçin. Azure Cosmos DB hesabının bağlantı dizesini alabildiğiniz bir sayfaya yönlendirilirsiniz. Azure Cosmos DB sayfasındaki bağlantı dizeleri bağlantısının konumunu gösteren ekran görüntüsü.
Uygulamanızda kullanmak için BİRİnCİl BAĞLANTI DIZESİ değerini kopyalayın. Uygulamanızda hangi bağlantı dizesinin seçilip kullanılacağını gösteren ekran görüntüsü.

4 - JS için Azure Veri Tabloları SDK'sını yükleme

Bir nodejs uygulamasından Tablo için Azure Cosmos DB'ye erişmek için Azure Veri Tabloları SDK paketini yükleyin.

  npm install @azure/data-tables

5 - tablo istemcisini env.js dosyasında yapılandırma

Azure Cosmos DB veya Depolama hesabı bağlantı dizenizi Azure portal kopyalayın ve kopyaladığınız bağlantı dizesini kullanarak bir TableServiceClient nesnesi oluşturun. veya klasörüne 1-strater-app2-completed-appgeçin. Ardından, dosyaya karşılık gelen ortam değişkenlerinin configure/env.js değerini ekleyin.

const env = {
  connectionString:"A connection string to an Azure Storage or Azure Cosmos DB account.",
  tableName: "WeatherData",
};

Azure SDK, Azure'a karşı farklı işlemler yürütmek için istemci nesnelerini kullanarak Azure ile iletişim kurar. TableClient sınıfı, Tablo için Azure Cosmos DB ile iletişim kurmak için kullanılan sınıftır. Bir uygulama genellikle uygulama genelinde kullanılacak tablo başına tek serviceClient bir nesne oluşturur.

const { TableClient } = require("@azure/data-tables");
const env = require("../configure/env");
const serviceClient = TableClient.fromConnectionString(
  env.connectionString,
  env.tableName
);

6 - Azure Cosmos DB tablo işlemlerini uygulama

Örnek uygulama için tüm Azure Cosmos DB tablo işlemleri, hizmet dizini altındaki dosyada serviceClient bulunan nesneye tableClient.js uygulanır.

const { TableClient } = require("@azure/data-tables");
const env = require("../configure/env");
const serviceClient = TableClient.fromConnectionString(
  env.connectionString,
  env.tableName
);

Tablodan satır alma

nesnesi, serviceClient tablodan satır seçmenize olanak tanıyan adlı listEntities bir yöntem içerir. Bu örnekte yönteme hiçbir parametre geçirilmediğinden tablodan tüm satırlar seçilir.

const allRowsEntities = serviceClient.listEntities();

Tablodan döndürülen satırları filtreleme

Tablodan döndürülen satırları filtrelemek için yöntemine listEntities bir OData stili filtre dizesi geçirebilirsiniz. Örneğin, 1 Temmuz 2021 ile 2 Temmuz 2021 (dahil) gece yarısı arasında Chicago için tüm hava durumu okumalarını almak isterseniz aşağıdaki filtre dizesini geçirirsiniz.

PartitionKey eq 'Chicago' and RowKey ge '2021-07-01 12:00' and RowKey le '2021-07-02 12:00'

Tüm OData filtre işleçlerini OData web sitesinde Sistem Sorgu Seçeneğini Filtrele bölümünde görüntüleyebilirsiniz.

sınıfındaki listEntitiesserviceClient yöntemine request.args parametresi geçirildiğinde, null olmayan her özellik değeri için bir filtre dizesi oluşturur. Ardından tüm değerleri bir "and" yan tümcesiyle birleştirerek birleştirilmiş bir filtre dizesi oluşturur. Bu birleştirilmiş filtre dizesi nesnedeki listEntitiesserviceClient yöntemine geçirilir ve yalnızca filtre dizesiyle eşleşen satırlar döndürülür. Uygulamanızın gerektirdiği şekilde uygun filtre dizeleri oluşturmak için kodunuzda benzer bir yöntem kullanabilirsiniz.

const filterEntities = async function (option) {
  /*
    You can query data according to existing fields
    option provides some conditions to query,eg partitionKey, rowKeyDateTimeStart, rowKeyDateTimeEnd
    minTemperature, maxTemperature, minPrecipitation, maxPrecipitation
  */
  const filterEntitiesArray = [];
  const filters = [];
  if (option.partitionKey) {
    filters.push(`PartitionKey eq '${option.partitionKey}'`);
  }
  if (option.rowKeyDateTimeStart) {
    filters.push(`RowKey ge '${option.rowKeyDateTimeStart}'`);
  }
  if (option.rowKeyDateTimeEnd) {
    filters.push(`RowKey le '${option.rowKeyDateTimeEnd}'`);
  }
  if (option.minTemperature !== null) {
    filters.push(`Temperature ge ${option.minTemperature}`);
  }
  if (option.maxTemperature !== null) {
    filters.push(`Temperature le ${option.maxTemperature}`);
  }
  if (option.minPrecipitation !== null) {
    filters.push(`Precipitation ge ${option.minPrecipitation}`);
  }
  if (option.maxPrecipitation !== null) {
    filters.push(`Precipitation le ${option.maxPrecipitation}`);
  }
  const res = serviceClient.listEntities({
    queryOptions: {
      filter: filters.join(" and "),
    },
  });
  for await (const entity of res) {
    filterEntitiesArray.push(entity);
  }

  return filterEntitiesArray;
};

TableEntity nesnesi kullanarak veri ekleme

Tabloya veri eklemenin en basit yolu nesne TableEntity kullanmaktır. Bu örnekte veriler bir giriş modeli nesnesinden bir TableEntity nesneye eşlenir. Hava durumu istasyonu adını ve gözlem tarih/saatini temsil eden giriş nesnesindeki özellikler, tablodaki PartitionKey satır için benzersiz bir anahtar oluşturan ve RowKey özelliklerine sırasıyla eşlenir. Ardından giriş modeli nesnesinde ek özellikler TableEntity nesnesinde sözlük özellikleriyle eşlenir. Son olarak, tabloya createEntityserviceClient veri eklemek için nesnedeki yöntemi kullanılır.

insertEntity Örnek uygulamadaki işlevini aşağıdaki kodu içerecek şekilde değiştirin.

const insertEntity = async function (entity) {

  await serviceClient.createEntity(entity);

};

TableEntity nesnesi kullanarak verileri upsert

Bu tabloda zaten var olan bir bölüm anahtarı/satır anahtarı bileşimiyle tabloya satır eklemeye çalışırsanız bir hata alırsınız. Bu nedenle, genellikle tabloya upsertEntity satır eklerken yöntemi yerine createEntity kullanmak tercih edilir. Verilen bölüm anahtarı/satır anahtarı bileşimi tabloda zaten varsa, upsertEntity yöntemi mevcut satırı güncelleştirir. Aksi takdirde satır tabloya eklenir.

const upsertEntity = async function (entity) {

  await serviceClient.upsertEntity(entity, "Merge");

};

Değişken özellikleriyle veri ekleme veya ekleme

Tablo için Azure Cosmos DB kullanmanın avantajlarından biri, tabloya yüklenen bir nesne yeni özellikler içeriyorsa bu özelliklerin tabloya otomatik olarak eklenmesi ve Azure Cosmos DB'de depolanan değerlerdir. Geleneksel veritabanında olduğu gibi sütun eklemek için ALTER TABLE gibi DDL deyimlerini çalıştırmaya gerek yoktur.

Bu model, uygulamanıza zaman içinde hangi verilerin yakalanması gerektiğini ekleyebilecek veya değiştirebilecek veri kaynaklarıyla ilgilenirken veya farklı girişler uygulamanıza farklı veriler sağladığında esneklik sağlar. Örnek uygulamada, yalnızca temel hava durumu verilerini değil bazı ek değerleri de gönderen bir hava durumu istasyonunun benzetimini yapabiliriz. Bu yeni özelliklere sahip bir nesne tabloda ilk kez depolandığında, ilgili özellikler (sütunlar) tabloya otomatik olarak eklenir.

Tablo API'sini kullanarak böyle bir nesne eklemek veya eklemek için, genişletilebilir nesnenin özelliklerini bir TableEntity nesneye eşleyin ve nesnedeki serviceClient veya upsertEntity yöntemlerini uygun şekilde kullanıncreateEntity.

Örnek uygulamada işlev, upsertEntity değişken özellikleriyle veri ekleme veya yükseltme işlevini de uygulayabilir

const insertEntity = async function (entity) {
  await serviceClient.createEntity(entity);
};

const upsertEntity = async function (entity) {
  await serviceClient.upsertEntity(entity, "Merge");
};

Varlığı güncelleştirme

Varlıklar nesnesinde serviceClient yöntemi çağrılarak updateEntity güncelleştirilebilir.

Örnek uygulamada, bu nesne nesnedeki upsertEntity yöntemine serviceClient geçirilir. Bu varlık nesnesini güncelleştirir ve yöntemini kullanarak upsertEntity güncelleştirmeleri veritabanına kaydeder.

const updateEntity = async function (entity) {
  await serviceClient.updateEntity(entity, "Replace");
};

7 - Kodu çalıştırma

Tablo için Azure Cosmos DB ile etkileşime geçmek için örnek uygulamayı çalıştırın. Uygulamayı ilk kez çalıştırdığınızda, tablo boş olduğundan veri olmaz. Tabloya veri eklemek için uygulamanın üst kısmındaki düğmelerden herhangi birini kullanın.

Tablo API'sini kullanarak Azure Cosmos DB'ye veri eklemek için kullanılan düğmelerin konumunu gösteren uygulamanın ekran görüntüsü.

Tablo Varlığını Kullanarak Ekle düğmesini seçtiğinizde, nesne kullanarak yeni bir satır eklemenize veya eklemenize olanak sağlayan bir TableEntity iletişim kutusu açılır.

TableEntity nesnesi kullanarak veri eklemek için kullanılan iletişim kutusunu gösteren uygulamanın ekran görüntüsü.

Genişletilebilir Verileri Kullanarak Ekle düğmesini seçtiğinizde özel özelliklere sahip bir nesne eklemenize olanak tanıyan bir iletişim kutusu açılır ve Tablo için Azure Cosmos DB'nin gerektiğinde tabloya özellikleri (sütunları) otomatik olarak nasıl eklediğini gösterir. Bir veya daha fazla yeni özellik eklemek ve bu özelliği göstermek için Özel Alan Ekle düğmesini kullanın.

Özel alanlara sahip bir nesne kullanarak veri eklemek için kullanılan iletişim kutusunu gösteren uygulamanın ekran görüntüsü.

Azure Cosmos DB Tablonuza örnek veriler yüklemek için Örnek Veri Ekle düğmesini kullanın.

Örnek veri ekleme düğmesinin konumunu gösteren uygulamanın ekran görüntüsü.

Sonuçları Filtrele sayfasına gitmek için üstteki menüden Sonuçları Filtrele öğesini seçin. Bu sayfada, filtre yan tümcesinin nasıl derlenip Tablo için Azure Cosmos DB'ye geçirilebileceğini göstermek için filtre ölçütlerini doldurun.

Filtre sonuçları sayfasını gösteren ve sayfaya gitmek için kullanılan menü öğesini vurgulayan uygulamanın ekran görüntüsü.

Kaynakları temizleme

Örnek uygulamayı tamamladığınızda, bu makaleyle ilgili tüm Azure kaynaklarını Azure hesabınızdan kaldırmanız gerekir. Bunu yapmak için kaynak grubunu silebilirsiniz.

Kaynak grubu, aşağıdakiler yapılarak Azure portal kullanılarak silinebilir.

Yönergeler Ekran görüntüsü
Kaynak grubuna gitmek için, arama çubuğuna kaynak grubunun adını yazın. Ardından Kaynak Grupları sekmesinde kaynak grubunun adını seçin. Kaynak grubu arama işlemini gösteren ekran görüntüsü.
Kaynak grubu sayfasının üst kısmındaki araç çubuğundan Kaynak grubunu sil'i seçin. Kaynak grubunu sil düğmesinin konumunu gösteren ekran görüntüsü.
Ekranın sağ tarafından kaynak grubunun silinmesini onaylamanızı isteyen bir iletişim kutusu açılır.
  1. Silme işleminin açıklandığı gibi onaylanması için metin kutusuna kaynak grubunun tam adını yazın.
  2. Sayfanın en altındaki Sil düğmesini seçin.
Kaynak grubunu silmeye yönelik onay iletişim kutusunu gösteren ekran görüntüsü.

Sonraki adımlar

Bu hızlı başlangıçta Azure Cosmos DB hesabı oluşturmayı, Veri Gezgini'ni kullanarak tablo oluşturmayı ve bir uygulamayı çalıştırmayı öğrendiniz. Artık Tablo API'sini kullanarak verilerinizi sorgulayabilirsiniz.