Aracılığıyla paylaş


Azure Tables client library for JavaScript - version 13.3.2

Azure Tablolar, yapılandırılmış NoSQL verilerini depolayan ve şemasız bir tasarıma sahip bir anahtar/öznitelik deposu sağlayan bulut tabanlı bir hizmettir. Tablo depolama, geliştiricilere Azure bulutunun tüm en iyi parçalarıyla esneklik ve ölçeklenebilirlik sağlar.

İstemci kitaplığını kullanarak:

  • Tablo Oluşturma/Silme
  • Varlıkları Sorgulama/Oluşturma/Okuma/Güncelleştirme/Silme

Azure Cosmos DB, Azure Tablo depolama için yazılmış ve aşağıdaki gibi premium özelliklere ihtiyaç duyan uygulamalar için bir Tablo API'sini sağlar:

  • Anahtar teslimi genel dağıtım.
  • Dünya çapında ayrılmış aktarım hızı.
  • 99. yüzdebirlik dilimde tek basamaklı milisaniyelik gecikme süreleri.
  • Garantili yüksek kullanılabilirlik.
  • Otomatik ikincil dizin oluşturma.
  • Azure Tabloları istemci kitaplığı, kod değişikliği olmadan Azure tablo depolamayı veya Azure Cosmos DB tablo hizmeti uç noktalarını sorunsuz bir şekilde hedefleyebilir.

Önemli bağlantılar:

Başlarken

Önkoşullar

Şu anda desteklenen ortamlar:

  • Node.js LTS sürümleri
  • Safari, Chrome, Edge ve Firefox'un en son sürümleri

Bu paketi kullanmak için bir Azure aboneliği ve Depolama Hesabı veya Azure CosmosDB veritabanı sahip olmanız gerekir.

@azure/data-tables paketini yükleme

JavaScript için Azure Tabloları istemci kitaplığını yüklemenin tercih edilen yolu npm paket yöneticisini kullanmaktır. Terminal penceresine aşağıdakileri yazın:

npm install @azure/data-tables

TableServiceClient kimliğini doğrulama

Azure Tabloları kimlik doğrulaması için çeşitli yolları destekler. Azure Tablolar hizmetiyle etkileşim kurmak için bir Tablo istemcisi örneği oluşturmanız gerekir; örneğin TableServiceClient veya TableClient. Kimlik doğrulaması hakkında daha fazla bilgi edinmek için bkz. oluşturmak için örnekleri.

Not: Azure Active Directory (AAD) yalnızca Azure Depolama hesapları için desteklenir.

  • Paylaşılan Anahtar ile hizmet istemci
  • Paylaşılan erişim imzaları hizmet istemci
  • TokenCredential (AAD) ile hizmet istemci
  • Paylaşılan Anahtar ile Tablo istemcisi
  • Paylaşılan erişim imzaları tablo istemci
  • TokenCredential (AAD) ile Tablo istemcisi

Aşağıdaki özellikler, arabirimler, sınıflar veya işlevler yalnızca Node.js

  • Hesap adına ve hesap anahtarına göre Paylaşılan Anahtar Yetkilendirmesi
    • AzureNamedKeyCredential
    • Hesap bağlantı dizesi.

JavaScript Paketi

Bu istemci kitaplığını tarayıcıda kullanmak için önce bir paketleyici kullanmanız gerekir. Bunun nasıl yapılacağının ayrıntıları için lütfenpaketleme belgelerimize bakın.

Kaynaklar Arası Paylaşım (CORS)

Tarayıcılar için geliştirmeniz gerekiyorsa depolama hesabınız için Çıkış Noktaları Arası Kaynak Paylaşımı (CORS) kuralları ayarlamanız gerekir. Azure portalına ve Azure Depolama Gezgini'ne gidin, depolama hesabınızı bulun, blob/kuyruk/dosya/tablo hizmetleri için yeni CORS kuralları oluşturun.

Örneğin, hata ayıklama için aşağıdaki CORS ayarlarını oluşturabilirsiniz. Ancak lütfen üretim ortamındaki gereksinimlerinize göre ayarları dikkatli bir şekilde özelleştirin.

  • İzin verilen çıkış noktaları: *
  • İzin verilen fiiller: DELETE,GET,HEAD,MERGE,POST,OPTIONS,PUT
  • İzin verilen üst bilgiler: *
  • Kullanıma sunulan üst bilgiler: *
  • Maksimum yaş (saniye): 86400

Temel kavramlar

  • TableServiceClient - Tablo oluşturma, listeleme ve silme gibi Tablo Hizmeti düzeyinde etkileşime geçmek için işlevler sağlayan istemci

  • TableClient - Tablo içindeki varlıkları oluşturma, listeleme ve silme gibi varlık düzeyinde etkileşime geçmek için işlevler sağlayan istemci.

  • Table - Tablolar verileri varlık koleksiyonları olarak depolar.

  • Entity - Varlıklar satırlara benzer. Bir varlığın birincil anahtarı ve bir özellik kümesi vardır. Özellik, sütuna benzer bir ad, türlenmiş değer çiftidir.

Tablo hizmetinin yaygın kullanımları şunlardır:

  • Web ölçeği uygulamalarına hizmet verebilen yapılandırılmış verilerin TB'lerini depolama
  • Karmaşık birleşimler, yabancı anahtarlar veya saklı yordamlar gerektirmeyen ve hızlı erişim için normalleştirilebilen veri kümelerini depolama
  • Kümelenmiş dizin kullanarak verileri hızla sorgulama
  • OData protokolü filtre ifadelerini kullanarak verilere erişme

Örnekler

Paketi içeri aktarma

İstemcileri kullanmak için paketi dosyanıza aktarın:

import * as azureTables from "@azure/data-tables";

Alternatif olarak, yalnızca ihtiyacınız olan türleri seçmeli olarak içeri aktarın:

import { TableServiceClient, AzureNamedKeyCredential } from "@azure/data-tables";

Tablo hizmeti istemcisini oluşturma

TableServiceClient, tablo hizmetinin URL'sini ve erişim kimlik bilgilerini gerektirir. ayrıca isteğe bağlı olarak options parametresindeki bazı ayarları kabul eder.

AzureNamedKeyCredential ile TableServiceClient

Hesap adını ve hesap anahtarını bağımsız değişken olarak geçirerek TableServiceClient ile bir AzureNamedKeyCredential örneği oluşturabilirsiniz. (Hesap adı ve hesap anahtarı azure portaldan alınabilir.) [YALNıZCA NODE.JS ÇALıŞMA ZAMANıNDA KULLANıLABILIR]

import { AzureNamedKeyCredential, TableServiceClient } from "@azure/data-tables";

const account = "<account>";
const accountKey = "<accountkey>";

const credential = new AzureNamedKeyCredential(account, accountKey);
const serviceClient = new TableServiceClient(
  `https://${account}.table.core.windows.net`,
  credential,
);

TokenCredential (AAD) ile TableServiceClient

Azure Tabloları, Depolama uç noktasını hedeflerken Tablo hizmetine yönelik isteklerin kimlik tabanlı kimlik doğrulaması için Azure Active Directory (Azure AD) ile tümleştirme sağlar. Azure AD ile rol tabanlı erişim denetimini (RBAC) kullanarak Azure Tablo kaynaklarınıza kullanıcılara, gruplara veya uygulamalara erişim verebilirim.

TokenCredentialolan bir tablo kaynağına erişmek için, kimliği doğrulanmış kimlik "Depolama Tablosu Veri Katkıda Bulunanı" veya "Depolama Tablosu Veri Okuyucusu" rolüne sahip olmalıdır.

@azure/identity paketiyle hem geliştirme hem de üretim ortamlarındaki istekleri sorunsuz bir şekilde yetkilendirebilirsiniz. Azure Depolama'da Azure AD tümleştirmesi hakkında daha fazla bilgi edinmek için bkz. Azure.Identity README

import { DefaultAzureCredential } from "@azure/identity";
import { TableServiceClient } from "@azure/data-tables";

const credential = new DefaultAzureCredential();
const account = "<account name>";

const clientWithAAD = new TableServiceClient(
  `https://${account}.table.core.windows.net`,
  credential,
);

SAS Belirteci ile TableServiceClient

Ayrıca, paylaşılan erişim imzalarıyla (SAS) bir TableServiceClient örneği oluşturabilirsiniz. SAS belirtecini Azure Portal'dan alabilirsiniz.

import { TableServiceClient, AzureSASCredential } from "@azure/data-tables";

const account = "<account name>";
const sas = "<service Shared Access Signature Token>";

const serviceClientWithSAS = new TableServiceClient(
  `https://${account}.table.core.windows.net`,
  new AzureSASCredential(sas),
);

Hesaptaki tabloları listeleme

hesaptaki tabloları, TableServiceClient işlevini çağıran bir listTables örneği aracılığıyla listeleyebilirsiniz. Bu işlev, PageableAsyncIterator kullanarak kullanabileceğiniz bir for-await-of döndürür

import { DefaultAzureCredential } from "@azure/identity";
import { TableServiceClient } from "@azure/data-tables";

const account = "<account>";
const accountKey = "<accountkey>";

const credential = new DefaultAzureCredential();
const serviceClient = new TableServiceClient(
  `https://${account}.table.core.windows.net`,
  credential,
);

let i = 0;
const tables = serviceClient.listTables();
for await (const table of tables) {
  console.log(`Table${++i}: ${table.name}`);
}

Yeni tablo oluşturma

TableServiceClient işlevini çağıran bir createTable örneği aracılığıyla tablo oluşturabilirsiniz. Bu işlev, parametre olarak oluşturulacak tablonun adını alır. tablo zaten mevcut olduğunda createTable hata oluşturmayacağını unutmayın.

import { DefaultAzureCredential } from "@azure/identity";
import { TableServiceClient } from "@azure/data-tables";

const account = "<account>";
const accountKey = "<accountkey>";

const credential = new DefaultAzureCredential();
const serviceClient = new TableServiceClient(
  `https://${account}.table.core.windows.net`,
  credential,
);

const tableName = "newtable";
// If the table 'newTable' already exists, createTable doesn't throw
await serviceClient.createTable(tableName);

Aşağıda, tablo oluşturulmaya çalışılırken tablonun zaten var olup olmadığını test etme işlemini gösteren bir örnek verilmiştir:

import { DefaultAzureCredential } from "@azure/identity";
import { TableServiceClient } from "@azure/data-tables";

const account = "<account>";
const accountKey = "<accountkey>";

const credential = new DefaultAzureCredential();
const serviceClient = new TableServiceClient(
  `https://${account}.table.core.windows.net`,
  credential,
);

const tableName = `newtable${+new Date()}`;
await serviceClient.createTable(tableName, {
  onResponse: (response) => {
    if (response.status === 409) {
      console.log(`Table ${tableName} already exists`);
    }
  },
});

Tablo istemcisini oluşturma

TableClient, TableServiceClient tablo adını parametre olarak aldığı farkla TableClient benzer bir şekilde oluşturulur

TableClient ile AzureNamedKeyCredential

Hesap adını ve hesap anahtarını bağımsız değişken olarak geçirerek TableClient ile bir AzureNamedKeyCredential örneği oluşturabilirsiniz. (Hesap adı ve hesap anahtarı azure portaldan alınabilir.) [YALNıZCA NODE.JS ÇALıŞMA ZAMANıNDA KULLANıLABILIR]

import { AzureNamedKeyCredential, TableClient } from "@azure/data-tables";

// Enter your storage account name and shared key
const account = "<account>";
const accountKey = "<accountkey>";
const tableName = "<tableName>";

// Use AzureNamedKeyCredential with storage account and account key
// AzureNamedKeyCredential is only available in Node.js runtime, not in browsers
const credential = new AzureNamedKeyCredential(account, accountKey);
const client = new TableClient(`https://${account}.table.core.windows.net`, tableName, credential);

TableClient ile TokenCredential (Azure Active Directory)

Azure Tabloları, Depolama uç noktasını hedeflerken Tablo hizmetine yönelik isteklerin kimlik tabanlı kimlik doğrulaması için Azure Active Directory (Azure AD) ile tümleştirme sağlar. Azure AD ile rol tabanlı erişim denetimini (RBAC) kullanarak Azure Tablo kaynaklarınıza kullanıcılara, gruplara veya uygulamalara erişim verebilirim.

TokenCredentialolan bir tablo kaynağına erişmek için, kimliği doğrulanmış kimlik "Depolama Tablosu Veri Katkıda Bulunanı" veya "Depolama Tablosu Veri Okuyucusu" rolüne sahip olmalıdır.

@azure/identity paketiyle hem geliştirme hem de üretim ortamlarındaki istekleri sorunsuz bir şekilde yetkilendirebilirsiniz. Azure Depolama'da Azure AD tümleştirmesi hakkında daha fazla bilgi edinmek için bkz. Azure.Identity README

import { DefaultAzureCredential } from "@azure/identity";
import { TableClient } from "@azure/data-tables";

const credential = new DefaultAzureCredential();
const account = "<account name>";
const tableName = "<tableName>";

const clientWithAAD = new TableClient(
  `https://${account}.table.core.windows.net`,
  tableName,
  credential,
);

SAS Belirteci ile TableClient

Paylaşılan erişim imzalarıyla (SAS) bir TableClient örneği oluşturabilirsiniz. SAS belirtecini Azure Portal'dan alabilirsiniz.

import { TableClient, AzureSASCredential } from "@azure/data-tables";

const account = "<account name>";
const sas = "<service Shared Access Signature Token>";
const tableName = "<tableName>";

const clientWithSAS = new TableClient(
  `https://${account}.table.core.windows.net`,
  tableName,
  new AzureSASCredential(sas),
);

Tablodaki Varlıkları Listeleme

TableClient işlevini çağıran bir listEntities örneği aracılığıyla tablo içindeki varlıkları listeleyebilirsiniz. Bu işlev, PageableAsyncIterator kullanarak kullanabileceğiniz bir for-await-of döndürür

import { DefaultAzureCredential } from "@azure/identity";
import { TableClient } from "@azure/data-tables";

const account = "<account>";
const accountKey = "<accountkey>";
const tableName = "<tableName>";

const credential = new DefaultAzureCredential();
const client = new TableClient(`https://${account}.table.core.windows.net`, tableName, credential);

let i = 0;
const entities = client.listEntities();
for await (const entity of entities) {
  console.log(`Entity${++i}: PartitionKey: ${entity.partitionKey} RowKey: ${entity.rowKey}`);
}

Yeni varlık oluşturma ve tabloya ekleme

TableClient işlevini çağıran bir createEntity örneği aracılığıyla tabloda yeni bir Varlık oluşturabilirsiniz. Bu işlev, parametre olarak eklemek için varlığı alır. Varlık partitionKey ve rowKeyiçermelidir.

import { DefaultAzureCredential } from "@azure/identity";
import { TableClient } from "@azure/data-tables";

const account = "<account>";
const accountKey = "<accountkey>";
const tableName = "<tableName>";

const credential = new DefaultAzureCredential();
const client = new TableClient(`https://${account}.table.core.windows.net`, tableName, credential);

const testEntity = {
  partitionKey: "P1",
  rowKey: "R1",
  foo: "foo",
  bar: 123,
};
await client.createEntity(testEntity);

Azurite ve Depolama Öykünücüsü

Azure Tablolar İstemci SDK'sı, Azure Depolama ve Tablolar API'siyle uyumlu bir sunucu öykünücüsü olan Azurite ile de çalışır. Kullanmaya başlama hakkında lütfen (Azurite deposu) bölümüne bakın.

Bağlantı Dizesi kısayoluyla Azurite'ye bağlanma

Uygulamanızdan Azurite'e bağlanmanın en kolay yolu, UseDevelopmentStorage=truekısayola başvuran bir bağlantı dizesi yapılandırmaktır. Kısayol, öykünücünün tam bağlantı dizesiyle eşdeğerdir; bu dize, Azure Depolama hizmetlerinin her biri için hesap adını, hesap anahtarını ve öykünücü uç noktalarını belirtir: (daha fazla). Azure Tabloları İstemci SDK'sı bu kısayolu kullanarak varsayılan bağlantı dizesini ayarlar ve istemci seçeneklerinde allowInsecureConnection.

import { TableClient } from "@azure/data-tables";

const connectionString = "UseDevelopmentStorage=true";
const client = TableClient.fromConnectionString(connectionString, "myTable");

Bağlantı Dizesi kısayolu olmadan Azurite'ye bağlanma

Hizmet URL'sini ve AzureNamedKeyCredential veya özel bir bağlantı dizesini belirterek bağlantı dizesi kısayolunu kullanmadan azurite'ye el ile bağlanabilirsiniz. Ancak Azurite'nin allowInsecureConnection uç noktasında çalışması durumunda http el ile ayarlanması gerekir.

import { TableClient, AzureNamedKeyCredential } from "@azure/data-tables";

const client = new TableClient(
  "<Azurite-http-table-endpoint>",
  "myTable",
  new AzureNamedKeyCredential("<Azurite-account-name>", "<Azurite-account-key>"),
  { allowInsecureConnection: true },
);

Sorun giderme

Genel

Javascript/Typescript SDK'sını kullanarak Tablolar hizmetiyle etkileşimde olduğunuzda, hizmet tarafından döndürülen hatalar REST API istekleri için döndürülen HTTP durum kodlarıyla aynı olur: Depolama Tablo Hizmeti Hata Kodları

Günlük tutmak

Günlüğe kaydetmeyi etkinleştirmek, hatalarla ilgili yararlı bilgilerin ortaya çıkmasına yardımcı olabilir. HTTP isteklerinin ve yanıtlarının günlüğünü görmek için AZURE_LOG_LEVEL ortam değişkenini infoolarak ayarlayın. Alternatif olarak, setLogLevel@azure/logger çağrılarak günlükler çalışma zamanında etkinleştirilebilir:

import { setLogLevel } from "@azure/logger";

setLogLevel("info");

Katkıda

Bu proje katkıları ve önerileri memnuniyetle karşılar. Çoğu katkı, Katkıda Bulunan Lisans Sözleşmesi'ni (CLA) kabul ederek bize katkınızı kullanma hakları verme hakkına sahip olduğunuzu bildirmenizi gerektirir. Ayrıntılar için https://cla.microsoft.comadresini ziyaret edin.

Çekme isteği gönderdiğinizde, CLA botu otomatik olarak CLA sağlamanız gerekip gerekmediğini belirler ve çekme isteğini uygun şekilde süsler (örneğin, etiket, açıklama). Bot tarafından sağlanan yönergeleri izlemeniz yeterlidir. Cla'mızı kullanarak bunu tüm depolarda yalnızca bir kez yapmanız gerekir.

Bu proje, Microsoft Açık Kaynak Kullanım Kurallarıbenimsemiştir. Daha fazla bilgi için bkz. Davranış Kuralları SSS veya ek sorularınız veya yorumlarınızla opencode@microsoft.com iletişime geçin.

Bu kitaplığa katkıda bulunmak istiyorsanız kodu oluşturma ve test etme hakkında daha fazla bilgi edinmek için lütfen katkıda bulunma kılavuzu okuyun.