Pengantar throughput yang tersedia di Azure Cosmos DB

BERLAKU UNTUK: SQL API Cassandra API Gremlin API Table API Azure Cosmos DB API untuk MongoDB

Azure Cosmos DB memungkinkan Anda mengatur throughput yang tersedia pada database dan kontainer. Ada dua jenis throughput yang tersedia, standar (manual) atau skala otomatis. Artikel ini memberikan gambaran umum cara kerja throughput yang tersedia.

Database Azure Cosmos adalah unit manajemen untuk sekumpulan kontainer. Database terdiri dari sekumpulan kontainer skema agnostik. Kontainer Azure Cosmos adalah unit skalabilitas untuk throughput dan penyimpanan. Kontainer dipartisi secara horizontal di serangkaian mesin dalam wilayah Azure dan didistribusikan ke semua wilayah Azure yang terkait dengan akun Azure Cosmos Anda.

Dengan Azure Cosmos DB, Anda dapat menyediakan throughput menurut dua detail:

  • Kontainer Azure Cosmos
  • Database Azure Cosmos

Mengatur throughput pada kontainer

Throughput yang tersedia pada kontainer Azure Cosmos secara eksklusif disediakan untuk kontainer tersebut. Kontainer menerima throughput yang tersedia sepanjang waktu. Throughput yang tersedia pada kontainer didukung secara finansial oleh SLA. Untuk mempelajari cara mengonfigurasikan throughput standar (manual) pada kontainer, lihat Penyediaan throughput pada kontainer Azure Cosmos. Untuk mempelajari cara mengonfigurasikan throughput skala otomatis pada kontainer, lihat Penyediaan throughput skala otomatis.

Pengaturan throughput yang tersedia pada kontainer adalah opsi yang paling sering digunakan. Anda dapat menskalakan throughput secara elastis untuk kontainer dengan menyediakan jumlah throughput tertentu dengan menggunakan Unit Permintaan (RU).

Throughput yang tersedia untuk kontainer didistribusikan secara merata di antara partisi fisiknya, dan dengan asumsi kunci partisi yang bagus yang mendistribusikan partisi logis secara merata di antara partisi fisik, throughput juga didistribusikan secara merata di semua partisi logis kontainer. Anda tidak dapat secara selektif menentukan throughput untuk partisi logika. Karena satu atau lebih partisi logis dari kontainer dihosting oleh partisi fisik, partisi fisik secara eksklusif termasuk ke kontainer dan mendukung throughput yang tersedia pada kontainer.

Jika beban kerja yang berjalan pada partisi logis menggunakan lebih dari throughput yang dialokasikan ke partisi fisik yang mendasarinya, ada kemungkinan bahwa operasi Anda akan terbatas pada kecepatan. Apa yang dikenal sebagai partisi panas ketika satu partisi logis memiliki permintaan yang tidak proporsional dari nilai kunci partisi lainnya.

Ketika pembatasan kecepatan terjadi, Anda dapat meningkatkan throughput yang tersedia untuk seluruh kontainer atau mencoba kembali operasi. Anda juga harus memastikan telah memilih kunci partisi yang mendistribusikan penyimpanan dan volume permintaan secara merata. Untuk informasi selengkapnya tentang data partisi, lihat Partisi dan penskalaan horizontal di Azure Cosmos DB.

Sebaiknya konfigurasikan throughput pada detail kontainer apabila Anda menginginkan kinerja yang dapat diprediksi untuk kontainer.

Gambar berikut menunjukkan cara partisi fisik menghosting satu atau beberapa partisi logis dari kontainer:

Partisi fisik yang menghosting satu atau lebih partisi logika kontainer

Mengatur throughput pada database

Ketika Anda menyediakan throughput pada database Azure Cosmos, throughput dibagikan di semua kontainer (disebut kontainer database bersama) dalam database. Terdapat satu pengecualian, yaitu jika Anda menentukan throughput yang tersedia pada kontainer tertentu dalam database. Berbagi throughput tersedia tingkat database di antara kontainernya sama dengan menghosting database pada sebuah kluster mesin. Karena semua kontainer dalam database berbagi sumber daya yang tersedia di mesin, secara alami Anda tidak mendapatkan kinerja yang dapat diprediksi pada kontainer tertentu. Untuk mempelajari cara mengonfigurasikan throughput yang tersedia di database, lihat Mengonfigurasikan throughput yang tersedia pada database Azure Cosmos. Untuk mempelajari cara mengonfigurasikan throughput skala otomatis pada kontainer, lihat Penyediaan throughput skala otomatis.

Karena semua kontainer dalam database berbagi throughput yang tersedia, Azure Cosmos DB tidak memberikan jaminan atas throughput yang dapat diprediksi untuk kontainer tertentu dalam database tersebut. Bagian throughput yang dapat diterima kontainer tertentu tergantung pada:

  • Jumlah kontainer.
  • Pilihan kunci partisi untuk berbagai kontainer.
  • Distribusi beban kerja di berbagai partisi logis kontainer.

Sebaiknya konfigurasikan throughput pada database apabila Anda ingin berbagi throughput di beberapa kontainer tetapi tidak ingin mengkhususkan throughput ke kontainer tertentu.

Contoh berikut menunjukkan preferensi penyediaan throughput di tingkat database:

  • Berbagi throughput database yang tersedia di sekumpulan kontainer berguna untuk aplikasi multipenyewa. Setiap pengguna dapat diwakili oleh kontainer Azure Cosmos yang berbeda.

  • Berbagi throughput database yang tersedia di sekumpulan kontainer berguna saat Anda memigrasikan database NoSQL, seperti MongoDB atau Cassandra, yang dihosting di kluster VM atau dari server fisik lokal ke Azure Cosmos DB. Anggap throughput yang tersedia dan dikonfigurasikan pada database Azure Cosmos Anda sebagai padanan logis, tetapi lebih hemat biaya dan elastis, terhadap kapasitas komputasi kluster MongoDB atau Cassandra.

Semua kontainer yang dibuat di dalam database dengan throughput yang tersedia harus dibuat dengan kunci partisi. Pada titik waktu tertentu, throughput yang dialokasikan untuk kontainer dalam database didistribusikan di semua partisi logis dari kontainer tersebut. Jika memiliki kontainer yang berbagi throughput yang tersedia dan dikonfigurasikan pada database, Anda tidak dapat secara selektif menerapkan throughput ke kontainer tertentu atau partisi logika.

Jika beban kerja pada partisi logika menggunakan lebih dari throughput yang dialokasikan ke partisi logis tertentu, operasi Anda akan dibatasi kecepatan. Ketika pembatasan kecepatan terjadi, Anda dapat meningkatkan throughput yang tersedia untuk seluruh kontainer atau mencoba kembali operasi. Untuk informasi selengkapnya tentang partisi, lihat Partisi logika.

Kontainer di database throughput bersama berbagi throughput (RU/detik) yang dialokasikan ke database tersebut. Dengan throughput standar (manual) yang tersedia, Anda dapat memiliki hingga 25 kontainer dengan minimal 400 RU/detik pada database. Dengan throughput yang tersedia skala otomatis, Anda dapat memiliki hingga 25 kontainer dalam database dengan skala otomatis maksimal 4000 RU/detik (skala antara 400 - 4000 RU/detik).

Catatan

Pada bulan Februari 2020, kami memperkenalkan perubahan yang memungkinkan Anda memiliki maksimum 25 kontainer dalam database throughput bersama, yang lebih memungkinkan untuk berbagi throughput di seluruh kontainer. Setelah 25 kontainer pertama, Anda dapat menambahkan lebih banyak kontainer ke database hanya jika ada throughput yang tersedia khusus dan terpisah dari throughput database bersama.
Jika akun Azure Cosmos DB Anda telah berisi database throughput bersama dengan >=25 kontainer, akun dan semua akun lainnya dalam langganan Azure yang sama dikecualikan dari perubahan ini. Silakan hubungi dukungan produk jika memiliki umpan balik atau pertanyaan.

Jika beban kerja melibatkan penghapusan dan pembuatan ulang semua kumpulan dalam database, sebaiknya hapus database yang kosong dan buat ulang database baru sebelum pembuatan kumpulan. Gambar berikut menunjukkan bagaimana partisi fisik dapat menghosting satu atau beberapa partisi logis yang termasuk dalam kontainer yang berbeda dalam database:

Partisi fisik yang menghosting satu atau lebih partisi logis yang termasuk dalam kontainer yang berbeda

Mengatur throughput pada database dan kontainer

Anda dapat menggabungkan dua model. Penyediaan throughput pada database dan kontainer diperbolehkan. Contoh berikut menunjukkan cara menyediakan throughput standar (manual) yang tersedia pada database Azure Cosmos dan kontainer:

  • Anda dapat membuat database Azure Cosmos bernama Z dengan throughput standar (manual) yang tersedia dari RU"K".

  • Selanjutnya, buat lima kontainer bernama A, B,C, D, dan E dalam database. Saat membuat kontainer B, pastikan untuk mengaktifkan Penyediaan throughput khusus untuk opsi kontainer ini dan secara eksplisit mengonfigurasikan RU "P" dari throughput yang tersedia pada kontainer ini. Anda dapat mengonfigurasikan throughput bersama dan khusus hanya saat membuat database dan kontainer.

    Mengatur throughput di tingkat kontainer

  • Throughput RU "K" dibagikan di empat kontainer A,C,D,dan E. Jumlah throughput yang tersedia untuk A,C,D,atau E bervariasi. Tidak ada SLA untuk setiap throughput kontainer individu.

  • Kontainer bernama B dijamin akan mendapatkan throughput RU "P" sepanjang waktu. Hal ini didukung oleh SLA.

Catatan

Kontainer dengan throughput yang tersedia tidak dapat dikonversi ke kontainer database bersama. Sebaliknya, kontainer database bersama tidak dapat dikonversi ke throughput khusus.

Memperbarui throughput pada database atau kontainer

Setelah membuat kontainer atau database Azure Cosmos, Anda dapat memperbarui throughput yang tersedia. Tidak ada batasan pada maksimum throughput yang tersedia yang dapat dikonfigurasikan pada database atau kontainer.

Throughput yang tersedia saat ini

Anda dapat mengambil kontainer atau database throughput yang tersedia di portal Azure atau dengan menggunakan SDK:

Respons metode tersebut juga berisi minimum throughput yang tersedia untuk kontainer atau database:

RU/detik minimum aktual dapat bervariasi tergantung pada konfigurasi akun Anda. Tetapi umumnya maksimum:

Mengubah throughput yang tersedia

Anda dapat menskalakan kontainer atau database throughput yang tersedia di portal Azure atau dengan menggunakan SDK:

Jika mengurangi throughput yang tersedia, Anda dapat melakukannya hingga minimum.

Jika meningkatkan throughput yang tersedia, biasanya operasinya berjalan secara langsung. Namun, ada beberapa kasus di mana operasi dapat memakan waktu lebih lama karena tugas sistem untuk menyediakan sumber daya yang diperlukan. Dalam hal ini, upaya untuk memodifikasi throughput yang tersedia saat operasi ini sedang berlangsung akan menghasilkan respons HTTP 423 dengan pesan kesalahan yang menjelaskan bahwa operasi penskalaan lain sedang berlangsung.

Pelajari lebih lanjut dalam praktik terbaik untuk menskalakan artikel throughput (RU) yang disediakan.

Catatan

Jika Anda merencanakan beban kerja penggunaan yang sangat besar dan membutuhkan peningkatan besar throughput yang disediakan, perlu diingat bahwa operasi penskalaan tidak memiliki SLA, dan seperti yang disebutkan dalam paragraf sebelumnya, dapat memakan waktu lama ketika peningkatannya besar. Anda mungkin ingin merencanakan di awal dan memulai penskalaan sebelum beban kerja dimulai dan menggunakan metode di bawah ini untuk melihat progres.

Anda dapat memeriksa progres penskalaan secara terprogram dengan membaca throughput yang disediakan saat ini dan menggunakan:

Anda dapat menggunakan metrik Azure Monitor untuk melihat riwayat throughput yang tersedia (RU/detik) dan penyimpanan pada sumber daya.

Penyimpanan tinggi / rendah program throughput

Seperti yang dijelaskan di bagian Throughput yang tersedia saat ini di atas, minimum throughput yang dapat Anda cantumkan pada kontainer atau database tergantung pada sejumlah faktor. Salah satunya adalah jumlah data yang saat ini disimpan, karena Azure Cosmos DB memberlakukan minimum throughput 10 RU/detik per GB penyimpanan.

Hal ini dapat menimbulkan masalah apabila Anda perlu menyimpan data dalam jumlah besar, tetapi memiliki persyaratan throughput yang rendah. Untuk mengakomodasi skenario ini dengan lebih baik, Azure Cosmos DB telah memperkenalkan program "penyimpanan throughput tinggi / rendah" yang mengurangi batasan RU/detik per GB pada akun yang memenuhi syarat.

Untuk bergabung dengan program ini dan menilai kelayakan penuh Anda, silakan selesaikan survei ini. Tim Azure Cosmos DB kemudian akan menindaklanjuti dan melanjutkan dengan onboarding Anda.

Perbandingan model

Tabel ini memperlihatkan perbandingan antara penyediaan throughput standar (manual) pada database vs. pada kontainer.

Parameter Throughput standar (manual) pada database Throughput standar (manual) pada kontainer Throughput skala otomatis pada database Throughput skala otomatis pada kontainer
Titik masuk (minimum RU/detik) 400 RU/detik. Dapat memiliki hingga 25 kontainer tanpa minimum RU/detik per kontainer. 400 Skala otomatis antara 400 - 4000 RU/detik. Dapat memiliki hingga 25 kontainer tanpa minimum RU/detik per kontainer. Skala otomatis antara 400 - 4000 RU/detik.
Minimum RU per kontainer -- 400 -- Skala otomatis antara 400 - 4000 RU/detik
Maksimum RU Tidak terbatas, di database. Tidak terbatas, di kontainer. Tidak terbatas, di database. Tidak terbatas, di kontainer.
RU ditetapkan atau tersedia untuk kontainer tertentu Tidak ada jaminan. RU yang ditetapkan ke kontainer tertentu bergantung pada properti. Properti dapat menjadi pilihan kunci partisi kontainer yang berbagi throughput, distribusi beban kerja, dan jumlah kontainer. Semua RU yang dikonfigurasi pada kontainer secara eksklusif disediakan untuk kontainer. Tidak ada jaminan. RU yang ditetapkan ke kontainer tertentu bergantung pada properti. Properti dapat menjadi pilihan kunci partisi kontainer yang berbagi throughput, distribusi beban kerja, dan jumlah kontainer. Semua RU yang dikonfigurasi pada kontainer secara eksklusif disediakan untuk kontainer.
Penyimpanan maksimum untuk kontainer Tidak Terbatas. Tidak Terbatas Tidak Terbatas Tidak Terbatas
Maksimum throughput per partisi logika kontainer 10K RU/detik 10K RU/detik 10K RU/detik 10K RU/detik
Maksimum penyimpanan (data + indeks) per partisi logika kontainer 20 GB 20 GB 20 GB 20 GB

Langkah berikutnya