Ruby ile Tablo için Azure Tablo Depolama ve Azure Cosmos DB kullanma

UYGULANANLAR: Tablo

Uyarı

Bu proje, yaşam döngüsünün topluluk destek aşamasındadır. Sonunda, ilişkili tüm istemci kitaplıkları kalıcı olarak kullanımdan kaldırılacaktır. Kullanımdan kaldırma ve bu projeyi kullanmanın alternatifleri hakkında daha fazla bilgi için bkz . Kullanımdan kaldırma bildirimi: Azure Depolama PHP istemci kitaplıkları.

İpucu

Bu makaledeki içerik, Azure Tablo depolama ve Tablo için Azure Cosmos DB için geçerlidir. Tablo API'si, aktarım hızı için iyileştirilmiş tablolar, genel dağıtım ve otomatik ikincil dizinler sunan bir tablo depolama için premium bir tekliftir.

Bu makalede tablo oluşturma, verilerinizi depolama ve veriler üzerinde CRUD işlemleri gerçekleştirme işlemleri gösterilir. Azure Tablo hizmetini veya Tablo için Azure Cosmos DB'yi seçin. Bu makalede açıklanan örnekler Ruby dilinde yazılmıştır ve Ruby için Azure Depolama Tablosu İstemci Kitaplığı'nı kullanır. Ele alınan senaryolar arasında tablo oluşturma, tablo silme, varlık ekleme ve tablodan varlıkları sorgulama sayılabilir.

Azure hizmet hesabı oluşturma

Azure Tablo depolama alanını veya Azure Cosmos DB'yi kullanarak tablolarla çalışabilirsiniz. Bu iki hizmetteki tablo teklifleri arasındaki farklar hakkında daha fazla bilgi edinmek için bkz. Tabloya genel bakış API'sine. Kullanacağınız hizmet için bir hesap oluşturmanız gerekir. Aşağıdaki bölümlerde hem Azure Tablo depolamanın hem de Azure Cosmos DB hesabının nasıl oluşturulacağı gösterilmektedir, ancak bunlardan yalnızca birini kullanabilirsiniz.

Azure Table Storage

Azure depolama hesabı oluşturmanın en kolay yolu Azure portal kullanmaktır. Daha fazla bilgi için bkz. Depolama hesabı oluşturma.

Azure PowerShell veya Azure CLI kullanarak da bir Azure depolama hesabı oluşturabilirsiniz.

Şu anda bir depolama hesabı oluşturmamayı tercih ediyorsanız, kodunuzu yerel bir ortamda çalıştırmak ve test etmek için Azure Depolama Öykünücüsü'ni de kullanabilirsiniz. Daha fazla bilgi için bkz. Geliştirme ve test için Azure Depolama Öykünücüsü'ni kullanma.

Tablo için Azure Cosmos DB

Tablo hesabı için Azure Cosmos DB oluşturma yönergeleri için bkz. Veritabanı hesabı oluşturma.

Azure depolamaya veya Azure Cosmos DB'ye erişim ekleme

Azure Depolama'yı veya Azure Cosmos DB'yi kullanmak için Ruby Azure paketini indirin ve kullanın. Bu paket, Tablo REST hizmetleriyle iletişim kuran bir dizi kolaylık kitaplığı içerir.

Paketi edinmek için RubyGems kullanma

  1. PowerShell (Windows), Terminal (Mac) veya Bash (Unix) gibi bir komut satırı arabirimi kullanın.
  2. Gem'i ve bağımlılıklarını yüklemek için komut satırı penceresine gem install azure-storage-table yazın.

Paketi içeri aktarma

Sık kullandığınız metin düzenleyiciyi kullanarak aşağıdakileri Storage kullanmak istediğiniz Ruby dosyasının en üstüne ekleyin:

require "azure/storage/table"

bağlantı dizesi ekleme

Azure depolama hesabına veya Tablo için Azure Cosmos DB hesabına bağlanabilirsiniz. Kullandığınız hesabın türüne göre bağlantı dizesi alın.

Azure Depolama bağlantısı ekleme

Azure Depolama modülü, Azure Depolama hesabınıza bağlanırken gereken bilgiler için AZURE_STORAGE_ACCOUNT ve AZURE_STORAGE_ACCESS_KEY ortam değişkenlerini okur. Bu ortam değişkenleri ayarlanmadıysa, Azure::Storage::Table::TableService'i aşağıdaki kodla kullanmadan önce hesap bilgilerini belirtmeniz gerekir:

Azure.config.storage_account_name = "<your Azure Storage account>"
Azure.config.storage_access_key = "<your Azure Storage access key>"

Bu değerleri Azure portalında bir klasik veya Kaynak Yöneticisi depolama hesabından edinmek için:

  1. Azure portalında oturum açın.
  2. Kullanmak istediğiniz depolama hesabına gidin.
  3. Ayarlar sayfasında Erişim Anahtarları'nı seçin.
  4. Erişim anahtarları sayfasında erişim anahtarı 1'e ve erişim anahtarı 2'ye bakın. Bu anahtarlardan birini kullanabilirsiniz.
  5. Anahtarı panoya kopyalamak için kopyala simgesini seçin.

Azure Cosmos DB bağlantısını ekleme

Azure Cosmos DB'ye bağlanmak için, Azure portalından birincil bağlantı dizenizi kopyalayın ve kopyaladığınız bağlantı dizesini kullanarak bir Client nesnesi oluşturun. Client nesnesini bir TableService nesnesi oluştururken geçebilirsiniz:

common_client = Azure::Storage::Common::Client.create(storage_account_name:'myaccount', storage_access_key:'mykey', storage_table_host:'mycosmosdb_endpoint')
table_client = Azure::Storage::Table::TableService.new(client: common_client)

Bir tablo oluşturma

Azure::Storage::Table::TableService nesnesi tablolar ve varlıklar ile çalışmanızı sağlar. Bir tablo oluşturmak için create_table() yöntemini kullanın. Aşağıdaki örnek bir tablo oluşturur veya varsa hatayı yazdırır.

azure_table_service = Azure::Storage::Table::TableService.new
begin
    azure_table_service.create_table("testtable")
rescue
    puts $!
end

Tabloya bir varlık ekleme

Bir varlık eklemek için ilk olarak varlık özelliklerinizi tanımlayan bir karma değer nesnesi oluşturun. Her varlık için bir PartitionKey ve RowKey belirtmeniz gerekir. Bu varlıklar varlıklarınızın benzersiz tanımlayıcılarıdır ve diğer özelliklerinizden daha hızlı sorgulanabilen değerlerdir. Azure Depolama, tablonun varlıklarını çok sayıda depolama düğümüne otomatik olarak dağıtmak için PartitionKey değerini kullanır. Aynı PartitionKey değerine sahip varlıklar aynı düğüme depolanır. RowKey, varlığın ait olduğu bölümdeki benzersiz kimliğidir.

entity = { "content" => "test entity",
    :PartitionKey => "test-partition-key", :RowKey => "1" }
azure_table_service.insert_entity("testtable", entity)

Varlığı güncelleştirme

Mevcut bir varlığı güncelleştirmenin birçok yolu vardır:

Description
update_entity() Varolan bir varlığı değiştirerek güncelleştirin.
merge_entity() Yeni özellik değerlerini var olan varlığa birleştirerek var olan bir varlığı Güncelleştirmeler.
insert_or_merge_entity() Varolan bir varlığı değiştirerek Güncelleştirmeler. Varlık yoksa yeni bir varlık eklenir.
insert_or_replace_entity() Yeni özellik değerlerini var olan varlığa birleştirerek var olan bir varlığı Güncelleştirmeler. Varlık yoksa yeni bir varlık eklenir.

Aşağıdaki örnekte update_entity() kullanılarak bir varlığın güncelleştirilmesi gösterilmektedir:

entity = { "content" => "test entity with updated content",
    :PartitionKey => "test-partition-key", :RowKey => "1" }
azure_table_service.update_entity("testtable", entity)

update_entity() ve merge_entity() ile, güncelleştirdiğiniz varlık yoksa güncelleştirme işlemi başarısız olur. Bu nedenle bir varlığı daha önceden mevcut olup olmadığına bakmaksızın depolamak istiyorsanız, insert_or_replace_entity() veya insert_or_merge_entity() kullanmalısınız.

Varlık gruplarıyla çalışma

Bazen sunucu tarafından atomik işleme sağlamak için bir toplu işte birden fazla işlemin bir arada gönderilmesi mantıklıdır. Bunun için önce bir Batch nesnesi oluşturmalı, sonra TableService üzerinde execute_batch() yöntemini kullanmalısınız. Aşağıdaki örnekte, iki varlığın RowKey 2 ve 3 ile toplu bir işte gönderilmesi gösterilmektedir. Bunun yalnızca aynı PartitionKey değerine sahip varlıklar için sonuç vereceğini unutmayın.

azure_table_service = Azure::TableService.new
batch = Azure::Storage::Table::Batch.new("testtable",
    "test-partition-key") do
    insert "2", { "content" => "new content 2" }
    insert "3", { "content" => "new content 3" }
end
results = azure_table_service.execute_batch(batch)

Varlık sorgulama

Bir tablodaki bir varlığı sorgulamak için, tablo adını ve PartitionKey ve RowKey değerlerini geçerek get_entity() yöntemini kullanın.

result = azure_table_service.get_entity("testtable", "test-partition-key",
    "1")

Varlık kümesini sorgulama

Bir tablodaki bir varlık kümesini sorgulamak için, bir sorgu karma değer nesnesi oluşturun ve query_entities() yöntemini kullanın. Aşağıdaki örnekte aynı PartitionKey değerine sahip tüm nesnelerin alınması gösterilmektedir:

query = { :filter => "PartitionKey eq 'test-partition-key'" }
result, token = azure_table_service.query_entities("testtable", query)

Not

Sonuç kümesi tek bir sorgunun döndüremeyeceği kadar büyükse, sonraki sayfaları almak üzere kullanabileceğiniz bir devam belirteci döndürülür.

Giriş özellikleri alt kümesi sorgulama

Tabloya gönderilen bir sorgu, bir varlıktan yalnızca birkaç özellik alabilir. Bu "projeksiyon" tekniği bant genişliğini azaltır ve özellikle büyük varlıklar için sorgu performansını geliştirebilir. Select yan tümcesini kullanın ve istemciye getirmek istediğiniz özelliklerin adlarını geçin.

query = { :filter => "PartitionKey eq 'test-partition-key'",
    :select => ["content"] }
result, token = azure_table_service.query_entities("testtable", query)

Bir varlığı silme

Bir varlığı silmek için delete_entity() yöntemini kullanın. Varlığı içeren tablonun adını ve varlığın PartitionKey ve RowKey değerlerini geçin.

azure_table_service.delete_entity("testtable", "test-partition-key", "1")

Bir tablo silme

Bir tablo silmek için delete_table() yöntemini kullanın ve silmek istediğiniz tablonun adını geçin.

azure_table_service.delete_table("testtable")