Pengantar throughput yang disediakan di Azure Cosmos DB

BERLAKU UNTUK: Nosql MongoDB Cassandra Gremlin Meja

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 DB adalah unit manajemen untuk sekumpulan kontainer. Database terdiri dari sekumpulan kontainer skema agnostik. Kontainer Azure Cosmos DB adalah unit skalabilitas untuk throughput dan penyimpanan. Kontainer dipartisi secara horizontal di sekumpulan komputer dalam wilayah Azure dan didistribusikan di semua wilayah Azure yang terkait dengan akun Azure Cosmos DB Anda.

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

  • Kontainer Azure Cosmos DB
  • Database Azure Cosmos DB

Mengatur throughput pada kontainer

Throughput yang disediakan pada kontainer Azure Cosmos DB secara eksklusif dicadangkan untuk kontainer tersebut. Kontainer menerima throughput yang tersedia sepanjang waktu. Throughput yang tersedia pada kontainer didukung secara finansial oleh SLA. Untuk mempelajari cara mengonfigurasi throughput standar (manual) pada kontainer, lihat Menyediakan throughput pada kontainer Azure Cosmos DB. 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 logis. 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:

Physical partition that hosts one or more logical partitions of a container

Mengatur throughput pada database

Saat Anda menyediakan throughput pada database Azure Cosmos DB, throughput dibagikan di semua kontainer (disebut kontainer database bersama) dalam database. Pengecualian jika Anda menentukan throughput yang disediakan 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 komputer, Anda secara alami tidak mendapatkan performa yang dapat diprediksi pada kontainer tertentu. Untuk mempelajari cara mengonfigurasi throughput yang disediakan pada database, lihat Mengonfigurasi throughput yang disediakan pada database Azure Cosmos DB. 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 DB 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. Pikirkan throughput yang disediakan yang dikonfigurasi pada database Azure Cosmos DB Anda sebagai yang setara logis, tetapi lebih hemat biaya dan elastis, hingga kapasitas komputasi kluster MongoDB atau Cassandra Anda.

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 dalam database throughput bersama berbagi throughput (RU/s) 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 1000 RU/detik (skala antara 100 - 1000 RU/detik).

Catatan

Pada bulan Februari 2020, kami memperkenalkan perubahan yang memungkinkan Anda memiliki maksimum 25 kontainer dalam database throughput bersama, untuk mengoptimalkan 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 Anda melibatkan penghapusan dan pembuatan ulang semua koleksi dalam database, disarankan agar Anda menghilangkan database kosong dan membuat ulang database baru sebelum pembuatan koleksi. Gambar berikut menunjukkan bagaimana partisi fisik dapat menghosting satu atau beberapa partisi logis yang termasuk dalam kontainer yang berbeda dalam database:

Physical partition that hosts one or more logical partitions that belong to different containers

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 disediakan pada database Azure Cosmos DB dan kontainer:

  • Anda dapat membuat database Azure Cosmos DB bernama Z dengan throughput standar (manual) yang disediakan 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.

    Setting the throughput at the container-level

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

  • Kontainer bernama B dijamin untuk mendapatkan throughput RU/dtk "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. Anda harus memindahkan data ke kontainer dengan pengaturan throughput yang diinginkan. (Pekerjaan salinan kontainer untuk API NoSQL, MongoDB, dan Cassandra membantu proses ini.)

Memperbarui throughput pada database atau kontainer

Setelah membuat kontainer Azure Cosmos DB atau database, Anda dapat memperbarui throughput yang disediakan. Tidak ada batasan pada throughput maksimum yang disediakan yang dapat Anda konfigurasikan 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/dtk minimum aktual mungkin bervariasi tergantung pada konfigurasi akun Anda. Untuk informasi selengkapnya, lihat FAQ skala otomatis.

Mengubah throughput yang tersedia

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

Jika Mengurangi throughput yang disediakan, Anda akan dapat melakukannya hingga minimum.

Jika Anda meningkatkan throughput yang disediakan, sebagian besar waktu, operasinya seketika. 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 disediakan saat operasi ini sedang berlangsung menghasilkan respons HTTP 423 dengan pesan kesalahan yang menjelaskan bahwa operasi penskalakan 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 disediakan (RU/dtk) dan penyimpanan pada sumber daya.

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 100 - 1000 RU/detik. Dapat memiliki hingga 25 kontainer tanpa minimum RU/detik per kontainer. Skala otomatis antara 100 - 1000 RU/detik.
Minimum RU per kontainer -- 400 -- Skala otomatis antara 100 - 1000 RU/deti
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