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
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz bir tane oluşturun.
- Node.js 0.10.29+ .
- Git.
Ö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.
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.
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.
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.
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-app
klasö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 listEntities
serviceClient
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 listEntities
serviceClient
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 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.
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.
Azure Cosmos DB Tablonuza örnek veriler yüklemek için Örnek Veri Ekle düğmesini kullanın.
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.
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.
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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin