Aracılığıyla paylaş


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

ŞUNLAR IÇIN GEÇERLIDIR: Masa

Bu hızlı başlangıçta Tablo için Azure Cosmos DB hesabı oluşturacak, tablo ve varlık 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 özellikleriyle belge, tablo, anahtar-değer ve grafik veritabanlarını hızlı bir şekilde oluşturup 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 tamamlanmış uygulama eklenir.

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

Örnek uygulama, Tablo için API'nin ö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 kullanarak 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ında 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ının ü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. Seçecek doğru seçenek olarak Azure Tablo 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 harfler, sayılar 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 altında Uygula'yı seçin.
  7. Azure Cosmos DB hesabınızı oluşturmak için ekranın alt kısmı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 bir veritabanından farklı olarak, tablodaki özellikleri (sütunları) değil, yalnızca tablonun adını belirtmeniz gerekir. Veriler tablonuza yüklendikçe, özellikler (sütunlar) gerektiğinde otomatik olarak oluşturulur.

Azure portalında aşağıdaki adımları tamamlayarak Azure Cosmos DB hesabınızın içinde bir tablo oluşturun.

Yönergeler Ekran görüntüsü
Azure portalında Azure Cosmos DB hesabının genel bakış sayfasına gidin. Üst 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 üst 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 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'yi seçin.
  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ı dizesi alma

Azure Cosmos DB'deki tablolarınıza erişmek için uygulamanız CosmosDB Depolama hesabı için tablo bağlantı dizesi gerekir. 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ındaki Bağlantı Dizesi adlı menü öğesini bulun ve seçin. Azure Cosmos DB hesabı için bağlantı dizesi alabildiğiniz bir sayfaya yönlendirilirsiniz. Azure Cosmos DB sayfasındaki bağlantı dizesi 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ı dizesi seçilip kullanılacağını gösteren ekran görüntüsü.

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

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 portalından Azure Cosmos DB veya Depolama hesabınızı bağlantı dizesi kopyalayın ve kopyaladığınız bağlantı dizesi kullanarak bir TableServiceClient nesnesi oluşturun. klasörüne veya 2-completed-appklasörüne 1-strater-app geç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

serviceClient nesnesi, 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 istiyorsanız 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'

OData web sitesindeki tüm OData filtre işleçlerini 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 "ve" yan tümcesiyle birleştirerek birleştirilmiş bir filtre dizesi oluşturur. Bu birleşik 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 sırasıyla ve özellikleriyle PartitionKey eşlenir ve RowKey bu özellikler birlikte tablodaki satır için benzersiz bir anahtar oluşturur. Ardından giriş modeli nesnesinde ek özellikler TableEntity nesnesinde sözlük özellikleriyle eşlenir. Son olarak, createEntity nesnedeki serviceClient yöntemi tabloya veri eklemek için kullanılır.

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

const insertEntity = async function (entity) {

  await serviceClient.createEntity(entity);

};

TableEntity nesnesi kullanarak verileri yukarı ekleme

Bir tabloya, o tabloda zaten var olan bölüm anahtarı/satır anahtarı bileşimiyle bir satır eklemeye çalışırsanız bir hata alırsınız. Bu nedenle, genellikle tabloya satır eklerken yöntemi yerine createEntity öğesinin kullanılması upsertEntity 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ırmanız gerekmez.

Bu model, zaman içinde yakalanması gereken verileri ekleyebilen veya değiştirebilen veri kaynaklarıyla ilgilenirken veya farklı girişler uygulamanıza farklı veriler sağladığında uygulamanıza esneklik sağlar. Örnek uygulamada, yalnızca temel hava durumu verilerini değil bazı ek değerleri de gönderen bir hava durumu istasyonu benzetimi yapabilir. 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 nesneyle 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 yukarı ekleme 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 güncelleştirmeleri upsertEntity veritabanına kaydetme yöntemini kullanır.

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üğmesinin seçilmesi, nesne kullanarak yeni satır eklemenize veya eklemenize olanak sağlayan bir TableEntity iletişim kutusu açar.

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

Genişletilebilir Veri Kullanarak Ekle düğmesinin seçilmesi, özel özelliklere sahip bir nesne eklemenize olanak tanıyan bir iletişim kutusu getirir ve Tablo için Azure Cosmos DB'nin gerektiğinde tabloya otomatik olarak özellikler (sütunlar) eklendiğ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, bir 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 uygulamayla işiniz bittiğinde, bu makaleyle ilgili tüm Azure kaynaklarını Azure hesabınızdan kaldırmanız gerekir. Kaynak grubunu silerek bunu yapabilirsiniz.

Aşağıdakiler yapılarak Azure portalı kullanılarak bir kaynak grubu 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ğı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.