Cara menggunakan Azure Table Storage dan Azure Cosmos DB for Table dengan Ruby

BERLAKU UNTUK: Tabel

Peringatan

Proyek ini berada dalam tahap dukungan komunitas dari siklus hidupnya. Akhirnya, semua pustaka klien terkait akan dihentikan secara permanen. Untuk informasi selengkapnya tentang penghentian dan alternatif untuk menggunakan proyek ini, lihat Pemberitahuan penghentian: Pustaka klien AZURE Storage PHP.

Tip

Konten dalam artikel ini berlaku untuk penyimpanan Azure Table dan Azure Cosmos DB for Table. API untuk Tabel adalah penawaran premium untuk penyimpanan tabel yang menawarkan tabel yang dioptimalkan throughput, distribusi global, dan indeks sekunder otomatis.

Artikel ini menunjukkan cara membuat tabel, menyimpan data Anda, dan melakukan operasi CRUD pada data. Pilih layanan Azure Table atau Azure Cosmos DB for Table. Sampel yang dijelaskan dalam artikel ini ditulis di Ruby dan menggunakan Pustaka Klien Tabel Azure Storage untuk Ruby. Skenario yang dibahas meliputi membuat tabel, menghapus tabel, menyisipkan entitas, dan entitas kueri dari tabel.

Membuat akun layanan Azure

Anda dapat bekerja dengan tabel menggunakan penyimpanan Azure Table atau Azure Cosmos DB. Untuk mempelajari selengkapnya tentang perbedaan antara penawaran tabel di kedua layanan ini, lihat gambaran umum API untuk Tabel. Anda perlu membuat akun untuk layanan yang akan Anda gunakan. Bagian berikut menunjukkan cara membuat penyimpanan Azure Table dan akun Azure Cosmos DB, tetapi Anda bisa menggunakan salah satunya.

Azure Table Storage

Cara termudah untuk membuat akun penyimpanan Azure adalah dengan menggunakan portal Azure. Untuk mempelajari lebih lanjut, lihat Membuat akun penyimpanan.

Anda juga bisa membuat akun penyimpanan Azure dengan menggunakan Azure PowerShell atau Azure CLI.

Jika Anda lebih suka tidak membuat akun penyimpanan saat ini, Anda juga dapat menggunakan Azure Storage emulator untuk menjalankan dan menguji kode Anda di lingkungan lokal. Untuk informasi selengkapnya, lihat Menggunakan Azure Storage Emulator untuk pengembangan dan pengujian.

Azure Cosmos DB for Table

Untuk instruksi tentang membuat akun Azure Cosmos DB for Table, lihat Membuat akun database.

Menambahkan akses ke penyimpanan Azure atau Azure Cosmos DB

Untuk menggunakan Azure Storage atau Azure Cosmos DB, unduh dan gunakan paket Ruby Azure. Paket ini mencakup sekumpulan pustaka kenyamanan yang berkomunikasi dengan layanan Table REST.

Menggunakan RubyGems untuk mendapat paket

  1. Gunakan antarmuka baris perintah seperti PowerShell (Windows), Terminal (Mac), atau Bash (Unix).
  2. Ketik permata pasang azure-storage-table di jendela perintah untuk memasang permata dan dependensi.

Mengimpor paket

Gunakan editor teks favorit Anda, tambahkan yang berikut ini ke bagian atas file Ruby tempat Anda ingin menggunakan penyimpanan:

require "azure/storage/table"

Menambahkan string koneksi Anda

Anda dapat menyambungkan ke akun penyimpanan Azure atau akun Azure Cosmos DB for Table. Dapatkan string koneksi berdasarkan jenis akun yang Anda gunakan.

Menambahkan sambungan Azure Storage

Modul Azure Storage membaca variabel lingkungan AZURE_STORAGE_ACCOUNT dan AZURE_STORAGE_ACCESS_KEY untuk informasi yang diperlukan untuk menyambungkan ke akun Azure Storage Anda. Jika variabel lingkungan ini tidak diatur, Anda harus menentukan informasi akun sebelum menggunakan Azure::Storage::Table::TableService dengan kode berikut:

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

Untuk mendapat nilai ini dari akun penyimpanan klasik atau Resource Manager di portal Microsoft Azure:

  1. Masuk ke portal Microsoft Azure.
  2. Navigasikan ke akun Azure Storage yang ingin Anda gunakan.
  3. Di halaman Pengaturan, pilih Kunci Akses.
  4. Di halaman Kunci akses, amati kunci akses 1 dan kunci akses 2. Anda dapat menggunakan salah satu kunci ini.
  5. Pilih ikon salin untuk menyalin kunci ke clipboard.

Menambahkan sambungan Azure Cosmos DB

Untuk menyambungkan ke Azure Cosmos DB, salin string koneksi utama Anda dari portal Microsoft Azure, dan buat objek Klien menggunakan string koneksi yang disalin. Anda dapat meneruskan objek Klien saat membuat objek TableService:

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)

Membuat tabel

Objek Azure::Storage::Table::TableService memungkinkan Anda bekerja dengan tabel dan entitas. Untuk membuat tabel, gunakan metode create_table() . Contoh berikut membuat tabel atau mencetak kesalahan jika ada.

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

Menambahkan entitas ke tabel

Untuk menambahkan entitas, pertama-tama buat objek hash yang menentukan properti entitas Anda. Untuk setiap entitas, Anda harus menentukan PartitionKey dan RowKey. Entitas ini adalah pengidentifikasi unik entitas Anda, dan merupakan nilai yang dapat dikueri lebih cepat daripada properti Anda yang lain. Azure Storage menggunakan PartitionKey untuk mendistribusikan entitas tabel secara otomatis pada banyak simpul penyimpanan. Entitas dengan PartitionKey yang sama disimpan pada simpul yang sama. RowKey adalah ID unik entitas dalam partisi miliknya.

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

Memperbarui entitas

Ada beberapa metode yang tersedia untuk memperbarui entitas yang sudah ada:

Deskripsi
update_entity() Perbarui entitas yang ada dengan menggantinya.
merge_entity() Updates entitas yang ada dengan menggabungkan nilai properti baru ke dalam entitas yang ada.
insert_or_merge_entity() Updates entitas yang ada dengan menggantinya. Jika tidak ada entitas, entitas baru akan disisipkan.
insert_or_replace_entity() Updates entitas yang ada dengan menggabungkan nilai properti baru ke dalam entitas yang ada. Jika tidak ada entitas, entitas baru akan disisipkan.

Contoh berikut menunjukkan memperbarui entitas menggunakan update_entity() :

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

Dengan update_entity() dan merge_entity(), jika entitas yang Anda perbarui tidak ada maka operasi pembaruan gagal. Oleh karena itu, jika Anda ingin menyimpan entitas terlepas dari apakah sudah ada, Anda harus menggunakan insert_or_replace_entity() atau insert_or_merge_entity() .

Bekerja dengan grup entitas

Terkadang masuk akal untuk mengirimkan beberapa operasi bersama-sama dalam batch untuk memastikan pemrosesan atom oleh server. Untuk mencapainya, terlebih dahulu Anda membuat objek Batch lalu menggunakan metode execute_batch() pada TableService. Contoh berikut menunjukkan mengirimkan dua entitas dengan RowKey 2 dan 3 dalam batch. Perhatikan bahwa itu hanya berfungsi untuk entitas dengan PartitionKey yang sama.

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)

Mengkueri untuk entitas

Untuk mengkueri entitas dalam tabel, gunakan metode get_entity(), dengan meneruskan nama tabel, PartitionKey danRowKey.

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

Mengkueri set entitas

Untuk mengkueri set entitas dalam tabel, buat objek hash kueri dan gunakan metode query_entities() . Contoh berikut menunjukkan mendapatkan semua entitas dengan PartitionKey yang sama:

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

Catatan

Jika kumpulan hasil terlalu besar untuk dikembalikan oleh satu kueri, token kelanjutan dikembalikan yang bisa Anda gunakan untuk mengambil halaman berikutnya.

Mengkueri subset properti entitas

Kueri ke tabel bisa mengambil hanya beberapa properti dari entitas. Teknik "proyeksi" ini mengurangi bandwidth dan dapat meningkatkan performa kueri, terutama untuk entitas besar. Gunakan klausul pemilihan dan berikan nama properti yang ingin Anda bawa ke klien.

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

Menghapus entitas

Untuk menghapus entitas, gunakan metode delete_entity() . Teruskan nama tabel yang berisi entitas, PartitionKey, dan RowKey entitas.

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

Menghapus tabel

Untuk menghapus tabel, gunakan metode delete_table() dan berikan nama tabel yang ingin Anda hapus.

azure_table_service.delete_table("testtable")