Tanya jawab umum tentang Azure Cosmos DB for Table

BERLAKU UNTUK: Meja

Membandingkan Azure Cosmos DB untuk Table dan Azure Table Storage

Di mana API untuk Tabel tidak identik dengan perilaku penyimpanan Azure Table?

Ada beberapa perbedaan perilaku yang harus diperhatikan pengguna yang berasal dari penyimpanan Azure Table yang ingin membuat tabel dengan Azure Cosmos DB for Table:

  • Azure Cosmos DB for Table menggunakan model kapasitas yang dipesan untuk memastikan performa yang dijamin tetapi ini berarti bahwa seseorang membayar kapasitas segera setelah tabel dibuat, bahkan jika kapasitas tidak digunakan. Dengan penyimpanan Azure Table, Anda hanya membayar kapasitas yang digunakan. Ini membantu menjelaskan mengapa API untuk Tabel dapat menawarkan SLA baca 10 md dan tulis 15 ms pada persentil ke-99 sementara penyimpanan Azure Table menawarkan SLA 10 detik. Tetapi sebagai konsekuensinya, dengan API untuk tabel Tabel, bahkan tabel kosong tanpa permintaan apa pun, biaya uang untuk memastikan kapasitas tersedia untuk menangani permintaan apa pun kepada mereka di SLA yang ditawarkan oleh Azure Cosmos DB.

  • Hasil kueri yang dikembalikan oleh API untuk Tabel tidak diurutkan dalam urutan kunci partisi/baris karena berada di penyimpanan Azure Table.

  • Kunci baris hanya bisa berukuran hingga 255 byte.

  • Batch hanya bisa berukuran hingga 2 MB.

  • CORS saat ini tidak didukung.

  • Nama tabel di penyimpanan Azure Table tidak peka huruf besar/kecil, tetapi berada di Azure Cosmos DB untuk Tabel.

  • Beberapa format internal Azure Cosmos DB untuk informasi pengodean, seperti bidang biner, saat ini tidak seefisien yang diinginkan. Maka ini dapat menyebabkan keterbatasan tak terduga pada ukuran data. Misalnya, saat ini seseorang tidak dapat menggunakan satu Meg penuh dari entitas tabel untuk menyimpan data biner karena pengodeannya meningkatkan ukuran data.

  • Azure Cosmos DB mencadangkan nama IDproperti entitas , , etagrid, dan ResourceId saat ini tidak didukung.

  • TableQuery TakeCount tidak terbatas pada 1000.

  • Dalam hal REST API, penyimpanan Azure Table (tetapi bukan Azure Cosmos DB for Table) mendukung opsi titik akhir/kueri berikut:

    Metode Istirahat Opsi Istirahat Titik Akhir/Kueri URL Dokumen Penjelasan Didukung pada Tabel Storage Didukung dalam API untuk Tabel
    GET, PUT /?Restype=service@comp=properties Atur Properti Layanan Tabel dan Dapatkan Properti Layanan Tabel Titik akhir ini digunakan untuk mengatur aturan CORS, konfigurasi analitik penyimpanan, dan pengaturan pengelogan. CORS saat ini tidak didukung dan analitik serta pengelogan ditangani secara berbeda di Azure Cosmos DB daripada Azure Storage Tables Ya Tidak
    OPTIONS /<table-resource-name> Permintaan tabel CORS preflight Ini adalah bagian dari CORS yang saat ini tidak didukung oleh Azure Cosmos DB. Ya Tidak
    GET /?Restype=service@comp=stats Dapatkan Statistik Layanan Tabel Menyediakan informasi seberapa cepat data mereplikasi antara primer dan sekunder. Ini tidak diperlukan di Azure Cosmos DB karena replikasi adalah bagian dari penulisan. Ya Tidak
    GET, PUT /mytable?comp=acl Dapatkan ACL Tabel dan Atur ACL Tabel Ini mendapatkan dan menetapkan kebijakan akses tersimpan yang digunakan untuk mengelola Tanda Tangan Akses Bersama (SAS). Ya Tidak
  • Azure Cosmos DB for Table hanya mendukung format JSON, bukan ATOM.

  • Untuk .NET SDK khususnya, ada beberapa kelas dan metode yang saat ini tidak didukung oleh Azure Cosmos DB.

    • Kelas CloudTableClient
      • \ServiceProperties
      • \ServiceStats
    • Kelas CloudTable
      • SetPermissions
      • GetPermissions

Tanya Jawab Umum Lainnya

Apakah saya memerlukan SDK baru untuk menggunakan API untuk Tabel?

Tidak, SDK penyimpanan yang ada tetap bisa berfungsi. Namun, disarankan agar selalu mendapatkan SDK terbaru untuk dukungan terbaik dan performa yang unggul. Lihat daftar bahasa yang tersedia di Pengantar Azure Cosmos DB for Table.

Apa string koneksi yang perlu saya gunakan untuk menyambungkan ke API untuk Tabel?

String koneksinya adalah:

DefaultEndpointsProtocol=https;AccountName=<AccountNamefromCosmosDB;AccountKey=<FromKeysPaneofCosmosDB>;TableEndpoint=https://<AccountName>.table.cosmosdb.azure.com

Informasi string koneksi berasal dari halaman String Koneksi di portal Azure.

Bagaimana cara mengambil alih pengaturan konfigurasi untuk opsi permintaan di .NET SDK untuk API untuk Tabel?

Beberapa pengaturan ditangani pada metode CreateCloudTableClient dan lainnya melalui app.config di bagian appSettings di aplikasi klien. Untuk informasi tentang pengaturan konfigurasi, lihat kapabilitas Azure Cosmos DB.

Apakah ada perubahan untuk pelanggan yang menggunakan SDK penyimpanan Azure Table yang sudah ada?

Tidak ada. Tidak ada perubahan untuk pelanggan lama atau baru yang menggunakan SDK penyimpanan Azure Table yang sudah ada.

Bagaimana cara melihat data tabel yang disimpan di Azure Cosmos DB untuk digunakan dengan API untuk Tabel?

Anda dapat menggunakan portal Azure untuk menelusuri data. Anda juga dapat menggunakan API untuk kode Tabel atau alat yang disebutkan dalam jawaban berikutnya.

Alat mana yang berfungsi dengan API untuk Tabel?

Anda dapat menggunakan Azure Storage Explorer.

Alat dengan fleksibilitas untuk mengambil string koneksi dalam format yang ditentukan sebelumnya dapat mendukung API baru untuk Tabel. Daftar alat tabel disediakan di halaman Alat Klien Azure Storage.

Apakah konkurensi pada operasi dikendalikan?

Ya, konkurensi optimistik diberikan melalui penggunaan mekanisme ETag.

Apakah model kueri OData didukung untuk entitas?

Ya, API untuk Tabel mendukung kueri OData dan kueri LINQ.

Bisakah saya menyambungkan ke Azure Table Storage dan Azure Cosmos DB for Table secara berdampingan dalam aplikasi yang sama?

Ya, Anda dapat terhubung dengan membuat dua instans terpisah dari CloudTableClient, masing-masing menunjuk ke URI sendiri melalui string koneksi.

Bagaimana cara memigrasikan aplikasi penyimpanan Azure Table yang sudah ada ke penawaran ini?

AzCopy didukung.

Bagaimana perluasan ukuran penyimpanan yang dilakukan untuk layanan ini jika misalnya saya memulai dengan 'n' GB data dan data saya akan berkembang menjadi 1 TB seiring waktu?

Azure Cosmos DB dirancang untuk menyediakan penyimpanan tanpa batas melalui penggunaan penskalaan horizontal. Layanan ini dapat memantau dan secara efektif meningkatkan penyimpanan Anda.

Bagaimana cara memantau api untuk penawaran Table?

Anda dapat menggunakan panel API untuk Metrik Tabel untuk memantau permintaan dan penggunaan penyimpanan.

Bagaimana cara menghitung throughput yang saya perlukan?

Anda dapat menggunakan estimator kapasitas untuk menghitung TableThroughput yang diperlukan untuk operasi. Untuk informasi selengkapnya, lihat Perkirakan Unit Permintaan dan Penyimpanan Data. Secara umum, Anda dapat menunjukkan entitas sebagai JSON dan memberikan nomor untuk operasi Anda.

Dapatkah saya menggunakan API untuk Table SDK secara lokal dengan emulator?

Tidak untuk saat ini.

Dapatkah aplikasi saya yang ada berfungsi dengan API untuk Table?

Ya, API yang sama juga didukung.

Apakah saya perlu memigrasikan aplikasi penyimpanan Azure Table saya yang ada ke SDK jika saya tidak ingin menggunakan API untuk fitur Tabel?

Tidak, Anda dapat membuat dan menggunakan aset penyimpanan Azure Table yang ada tanpa gangguan dalam bentuk apa pun. Namun, jika Anda tidak menggunakan API untuk Tabel, Anda tidak dapat memperoleh manfaat dari indeks otomatis, opsi konsistensi tambahan, atau distribusi global.

Bagaimana cara menambahkan replikasi data di API untuk Tabel di lebih dari satu wilayah Azure?

Anda dapat menggunakan pengaturan replikasi global portal Azure Cosmos DB untuk menambahkan wilayah yang cocok bagi aplikasi Anda. Untuk mengembangkan aplikasi yang didistribusikan secara global, Anda juga harus menambahkan aplikasi dengan informasi PreferredLocation yang diatur ke wilayah setempat untuk memberikan latensi baca yang rendah.

Bagaimana cara mengubah wilayah tulis utama untuk akun di API untuk Tabel?

Anda dapat menggunakan panel portal replikasi global Azure Cosmos DB untuk menambahkan wilayah lalu fail over ke wilayah yang diperlukan. Untuk mengetahui petunjuknya, lihat Mengembangkan dengan akun Azure Cosmos DB multiwilayah.

Bagaimana cara mengonfigurasi wilayah baca pilihan saya untuk latensi rendah saat mendistribusikan data saya?

Untuk membantu membaca dari lokasi lokal, gunakan kunci PreferredLocation dalam file app.config. Untuk aplikasi yang ada, API untuk Tabel melemparkan kesalahan jika LocationMode diatur. Hapus kode tersebut, karena API untuk Tabel mengambil informasi ini dari file app.config.

Bagaimana cara memikirkan tingkat konsistensi di API untuk Tabel?

Azure Cosmos DB menyediakan keseimbangan dengan yang baik antara konsistensi, ketersediaan, dengan latensi. Azure Cosmos DB menawarkan lima tingkat konsistensi ke API untuk pengembang Tabel, sehingga Anda dapat memilih model konsistensi yang tepat di tingkat tabel dan membuat permintaan individual saat mengkueri data. Saat klien terhubung, ia dapat menentukan tingkat konsistensi. Anda dapat mengubah level melalui argumen consistencyLevel dari CreateCloudTableClient.

API untuk Tabel menyediakan bacaan latensi rendah dengan "Baca tulisan Anda sendiri", dengan konsistensi kedaluarsa terikat sebagai default. Untuk informasi selengkapnya, lihat Tingkat konsistensi.

Secara default, penyimpanan Azure Table memberikan konsistensi yang kuat dalam suatu wilayah dan konsistensi Eventual di lokasi sekunder.

Apakah Azure Cosmos DB for Table menawarkan tingkat konsistensi yang lebih besar daripada penyimpanan Azure Table?

Ya, untuk informasi tentang cara mendapatkan manfaat dari sifat terdistribusi Azure Cosmos DB, lihat Tingkat konsistensi. Karena jaminan disediakan untuk tingkat konsistensi, Anda dapat menggunakannya dengan keyakinan.

Ketika distribusi global diaktifkan, berapa lama waktu yang diperlukan untuk mereplikasi data?

Azure Cosmos DB menerapkan data secara tahan lama di wilayah lokal dan segera mendorong data ke wilayah lain dalam hitungan milidetik. Replikasi ini hanya bergantung pada waktu pulang pergi (RTT) pusat data. Untuk mempelajari selengkapnya tentang kemampuan distribusi global Azure Cosmos DB, lihat Azure Cosmos DB: Layanan database terdistribusi global di Azure.

Dapatkah tingkat konsistensi permintaan baca diubah?

Dengan Azure Cosmos DB, Anda dapat mengatur tingkat konsistensi pada tingkat kontainer (pada tabel). Dengan menggunakan .NET SDK, Anda dapat mengubah level dengan memberikan nilai untuk kunci TableConsistencyLevel dalam file app.config. Tingkat konsistensinya adalah: Strong, Bounded Staleness, Session, Consistent Prefix, dan Eventual. Pelajari selengkapnya dalam Tingkat konsistensi data yang dapat disetel di Azure Cosmos DB. Ide utamanya adalah Anda tidak dapat mengatur tingkat konsistensi permintaan di lebih dari pengaturan untuk tabel. Misalnya, Anda tidak dapat mengatur tingkat konsistensi untuk tabel di Eventual dan tingkat konsistensi permintaan di Strong.

Bagaimana API untuk Tabel menangani failover jika suatu wilayah tidak berfungsi?

API untuk Tabel menggunakan platform Azure Cosmos DB yang didistribusikan secara global. Untuk memastikan bahwa aplikasi Anda dapat menoleransi waktu henti pusat data, aktifkan setidaknya satu wilayah lagi untuk akun di portal Azure Cosmos DB Mengembangkan dengan akun Azure Cosmos DB multiwilayah. Anda dapat mengatur prioritas wilayah dengan menggunakan portal Mengembangkan dengan akun Azure Cosmos DB multiwilayah.

Anda dapat menambahkan wilayah sebanyak mungkin untuk akun dan mengontrol di mana bisa failover dengan memberikan prioritas failover. Untuk menggunakan database, Anda perlu menyediakan aplikasi di sana juga. Ketika melakukannya, pelanggan Anda tidak akan mengalami penghentian. SDK klien .NET terbaru bersifat auto homing tetapi SDK lainnya tidak. Artinya, dapat mendeteksi wilayah yang sedang down dan otomatis failover ke wilayah baru.

Apakah API untuk Tabel diaktifkan untuk cadangan?

Ya, API untuk Tabel menggunakan platform Azure Cosmos DB untuk pencadangan. Pencadangan dilakukan secara otomatis. Untuk informasi selengkapnya, lihat Pencadangan dan pemulihan online dengan Azure Cosmos DB.

Apakah API untuk Tabel mengindeks semua atribut entitas secara default?

Ya, semua atribut entitas diindeks secara default. Untuk informasi selengkapnya, lihat Azure Cosmos DB: Kebijakan pengindeksan.

Apakah ini berarti saya tidak perlu membuat lebih dari satu indeks untuk memenuhi kueri?

Ya, Azure Cosmos DB for Table menyediakan pengindeksan otomatis semua atribut tanpa definisi skema apa pun. Automasi ini membebaskan pengembang untuk fokus pada aplikasi alih-alih pembuatan dan manajemen indeks. Untuk informasi selengkapnya, lihat Azure Cosmos DB: Kebijakan pengindeksan.

Bisakah saya mengubah kebijakan pengindeksan?

Ya, Anda dapat mengubah kebijakan pengindeksan dengan memberikan definisi indeks. Anda perlu menyandikan dan meloloskan pengaturan dengan benar.

Kebijakan pengindeksan hanya dapat diatur di portal di Data Explorer, navigasikan ke tabel tertentu yang ingin Anda ubah lalu buka Kebijakan Skala &Pengaturan-Pengindeksan>, buat perubahan yang diinginkan lalu Simpan.

Azure Cosmos DB sebagai platform tampaknya memiliki banyak kemampuan, seperti pengurutan, agregat, hierarki, dan fungsionalitas lainnya. Apakah Anda akan menambahkan kemampuan ini ke API untuk Table?

API untuk Tabel menyediakan fungsionalitas kueri yang sama dengan penyimpanan Azure Table. Azure Cosmos DB juga mendukung pengurutan, agregat, kueri geospasial, hierarki, dan berbagai fungsi bawaan. Untuk informasi selengkapnya, lihat Kueri SQL.

Kapan saya harus mengubah TableThroughput untuk API untuk Tabel?

Anda harus mengubah TableThroughput saat salah satu kondisi berikut ini berlaku:

  • Anda melakukan ekstrak, transformasi, dan pemuatan (ETL) data, atau Anda ingin mengunggah banyak data dalam waktu singkat.
  • Anda memerlukan lebih banyak throughput dari kontainer atau dari satu set kontainer di back end. Misalnya, Anda melihat bahwa throughput yang digunakan lebih dari throughput yang disediakan, dan Anda pun dibatasi. Untuk informasi selengkapnya, lihat Mengatur throughput untuk kontainer Azure Cosmos DB.

Dapatkah saya meningkatkan atau menurunkan skala throughput API saya untuk tabel Table?

Ya, Anda dapat menggunakan panel skala portal Azure Cosmos DB untuk menskalakan throughput. Untuk informasi selengkapnya, lihat Atur throughput.

Apakah TableThroughput default diatur untuk tabel yang baru disediakan?

Ya, jika Anda tidak mengambil alih TableThroughput melalui app.config dan tidak menggunakan kontainer yang dibuat sebelumnya di Azure Cosmos DB, layanan akan membuat tabel dengan throughput 400.

Apakah ada perubahan harga untuk pelanggan yang sudah ada dari layanan penyimpanan Azure Table?

Tidak ada. Tidak ada perubahan harga untuk pelanggan penyimpanan Azure Table yang sudah ada.

Bagaimana harga dihitung untuk API untuk Tabel?

Harga tergantung pada TableThroughput yang dialokasikan.

Bagaimana cara menangani pembatasan tarif pada tabel dalam penawaran API for Table?

Jika tingkat permintaan lebih dari kapasitas throughput yang disediakan untuk kontainer yang mendasari atau sekumpulan kontainer, Anda mendapatkan galat, dan SDK mencoba kembali panggilan dengan menerapkan kebijakan coba lagi.

Mengapa saya perlu memilih throughput selain dari PartitionKey dan RowKey untuk memanfaatkan penawaran API untuk Tabel Azure Cosmos DB?

Azure Cosmos DB menetapkan throughput default untuk kontainer jika Anda tidak menyediakannya di file app.config atau melalui portal.

Azure Cosmos DB memberikan jaminan untuk performa dan latensi, dengan batas atas operasi. Jaminan ini dimungkinkan ketika mesin dapat menegakkan tata kelola pada operasi penyewa. Pengaturan TableThroughput memastikan bahwa Anda mendapatkan throughput dan latensi yang dijamin, karena platform ini memesan kapasitas dan menjamin keberhasilan operasional.

Dengan menggunakan spesifikasi throughput, Anda dapat mengubahnya secara elastis untuk memanfaatkan sifat musiman aplikasi Anda, memenuhi kebutuhan throughput, dan menghemat biaya.

Penyimpanan Tabel Azure memang murah bagi saya, karena saya hanya membayar untuk menyimpan data, dan kueri saya jarang. Penawaran Azure Cosmos DB for Table tampaknya menagih saya meskipun saya belum melakukan satu transaksi atau menyimpan apa pun. Bisa Anda jelaskan?

Azure Cosmos DB dirancang untuk menjadi sistem berbasis SLA yang didistribusikan secara global dengan jaminan ketersediaan, latensi, dan throughput. Ketika Anda memesan throughput di Azure Cosmos DB, itu dijamin, tidak seperti throughput sistem lain. Azure Cosmos DB menyediakan lebih banyak kemampuan yang diminta pelanggan, seperti indeks sekunder dan distribusi global.

Saya tidak pernah mendapatkan kuota pemberitahuan penuh" (menunjukkan bahwa partisinya penuh) ketika saya menelan data ke penyimpanan Azure Table. Dengan API untuk Tabel, saya mendapatkan pesan ini. Apakah penawaran ini membatasi dan memaksa saya untuk mengubah aplikasi yang ada?

Azure Cosmos DB adalah sistem berbasis SLA yang menyediakan skala tak terbatas, dengan jaminan latensi, throughput, ketersediaan, dan konsistensi. Untuk memastikan kinerja premium yang terjamin, pastikan ukuran dan indeks data Anda dapat dikelola dan dapat diskalakan. Batas 20-GB pada jumlah entitas atau item per kunci partisi adalah untuk memastikan bahwa kami memberikan pencarian dan performa kueri yang hebat. Untuk memastikan bahwa aplikasi Anda diskalakan dengan baik, bahkan untuk Azure Storage, kami sarankan agar Anda tidak membuat partisi panas dengan menyimpan semua informasi dalam satu partisi lalu membuat kuerinya.

Jadi PartitionKey dan RowKey masih diperlukan dengan API untuk Table?

Ya. Karena area permukaan API untuk Tabel mirip dengan SDK penyimpanan Azure Table, kunci partisi menyediakan cara yang efisien untuk mendistribusikan data. Kunci barisnya unik dalam partisi itu. Kunci baris harus ada dan tidak boleh nihil seperti dalam SDK standar. Panjang RowKey adalah 255 byte dan panjang PartitionKey adalah 1 KB.

Apa saja pesan kesalahan untuk API untuk Tabel?

Penyimpanan Azure Table dan Azure Cosmos DB for Table menggunakan SDK yang sama sehingga sebagian besar kesalahannya sama.

Mengapa saya dibatasi ketika saya mencoba membuat banyak tabel satu demi satu di API untuk Tabel?

Azure Cosmos DB adalah sistem berbasis SLA yang menyediakan skala tak terbatas, dengan jaminan latensi, throughput, ketersediaan, dan konsistensi. Karena ini adalah sistem yang disediakan, ia mencadangkan sumber daya untuk menjamin persyaratan ini. Laju pembuatan tabel yang cepat pun terdeteksi dan terbatasi. Kami sarankan Anda melihat tingkat pembuatan tabel dan menurunkannya menjadi kurang dari 5 per menit. Ingatlah bahwa API untuk Tabel adalah sistem yang disediakan. Saat Anda menyediakannya, Anda mulai membayar untuk itu.

Bagaimana cara memberikan umpan balik tentang SDK atau bug?

Anda bisa membagikan umpan balik dengan salah satu cara berikut: