Unit Permintaan di Azure Cosmos DB

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

Azure Cosmos DB mendukung banyak API, seperti SQL, MongoDB, Cassandra, Gremlin, dan Table. Setiap API memiliki set operasi database sendiri. Operasi ini berkisar dari titik baca dan tulis sederhana hingga kueri yang kompleks. Setiap operasi database mengonsumsi sumber daya sistem berdasarkan kompleksitas operasi.

Biaya semua operasi database dinormalisasi oleh Azure Cosmos DB, dan dinyatakan oleh Request Unit (atau disingkat RU). Unit permintaan adalah performa mata uang yang saat ini mengabstraksi sumber daya sistem seperti CPU, IOPS, dan memori yang diperlukan untuk melakukan operasi database yang didukung oleh Azure Cosmos DB.

Biaya untuk melakukan pembacaan titik (mengambil satu item dengan ID dan nilai kunci partisi) untuk item 1 KB adalah 1 Unit Permintaan (atau 1 RU). Semua operasi database lainnya juga dikenakan biaya menggunakan RU. API apa pun yang Anda gunakan untuk berinteraksi dengan kontainer Azure Cosmos Anda, biayanya selalu diukur oleh RUs. Terlepas dari operasi database berupa tulis, baca, atau kueri, biayanya selalu diukur dalam RU.

Citra berikut menunjukkan ide RU tingkat tinggi:

Operasi database menggunakan Unit Permintaan

Untuk mengelola dan merencanakan kapasitas, Azure Cosmos DB memastikan bahwa jumlah RU untuk operasi database tertentu melalui set data tertentu adalah deterministik. Anda dapat memeriksa header respons untuk melacak jumlah RU yang digunakan oleh operasi database. Jika Anda memahami faktor yang memengaruhi biaya RU dan persyaratan throughput aplikasi, Anda dapat menjalankan aplikasi yang hemat biaya.

Jenis akun Azure Cosmos yang Anda gunakan menentukan cara RU yang digunakan ditagih. Ada tiga mode di mana Anda dapat membuat akun:

  1. Mode throughput yang ditentukan: Dalam mode ini, Anda menentukan jumlah RU untuk aplikasi Anda pada basis per detik dalam penaikan 100 RU per detik. Untuk menskalakan throughput yang tersedia untuk aplikasi, Anda dapat menambah atau mengurangi jumlah RU kapan saja dalam penaikan atau penurunan 100 RU. Anda dapat membuat perubahan baik secara terprogram atau dengan menggunakan portal Microsoft Azure. Anda akan ditagih per jam untuk jumlah RU per detik yang telah Anda tentukan. Untuk mempelajari selengkapnya, lihat artikel Throughput yang ditentukan.

    Anda dapat menyediakan throughput pada dua granularitas yang berbeda:

  2. Mode tanpa server: Dalam mode ini, Anda tidak perlu menyediakan throughput apa pun saat membuat sumber daya di akun Azure Cosmos Anda. Pada akhir periode penagihan, Anda akan ditagih untuk jumlah Unit Permintaan yang telah digunakan oleh operasi database Anda. Untuk mempelajari selengkapnya, lihat artikel Throughput tanpa server.

  3. Mode skala otomatis: Dalam mode ini, Anda dapat menskalakan throughput secara otomatis dan langsung (RU/dtk) dari database atau kontainer Anda berdasarkan pada penggunaannya, tanpa memengaruhi ketersediaan, latensi, throughput, atau performa beban kerja. Mode ini sangat cocok untuk beban kerja misi-kritis yang memiliki pola lalu lintas variabel atau tidak dapat diprediksi, dan memerlukan SLA pada performa dan skala tinggi. Untuk mempelajari selengkapnya, lihat artikel throughput skala otomatis.

Pertimbangan Unit Permintaan

Meskipun Anda memperkirakan jumlah RU yang digunakan oleh beban kerja Anda, pertimbangkan faktor-faktor berikut:

  • Ukuran item: Seiring bertambahnya ukuran item, jumlah RU yang digunakan untuk membaca atau menulis item juga meningkat.

  • Pengindeksan item: Secara default, setiap item secara otomatis diindeks. Lebih sedikit RUs yang dikonsumsi jika Anda memilih untuk tidak mengindeks beberapa item Anda dalam kontainer.

  • Jumlah properti item: Dengan asumsi pengindeksan default ada di semua properti, jumlah RUs yang digunakan untuk menulis item meningkat saat jumlah properti item meningkat.

  • Properti terindeks: Kebijakan indeks pada setiap kontainer menentukan properti mana yang terindeks secara default. Untuk mengurangi konsumsi RU untuk operasi tulis, batasi jumlah properti terindeks.

  • Konsistensi data: Tingkat konsistensi kedaluwarsa yang kuat dan terikat menggunakan sekitar dua kali lebih banyak RU saat melakukan operasi baca jika dibandingkan dengan tingkat konsistensi santai lainnya.

  • Jenis bacaan: Titik baca secara signifikan memerlukan lebih sedikit RU daripada kueri.

  • Pola kueri: Kompleksitas kueri memengaruhi seberapa banyak RU yang dikonsumsi untuk operasi. Faktor-faktor yang mempengaruhi biaya operasi kueri meliputi:

    • Jumlah hasil kueri
    • Jumlah predikat
    • Sifat predikat
    • Jumlah fungsi yang ditentukan pengguna
    • Ukuran data sumber
    • Ukuran kumpulan hasil
    • Proyeksi

    Kueri yang sama pada data yang sama akan selalu dikenakan biaya jumlah RU yang sama pada eksekusi berulang.

  • Penggunaan skrip: Seperti halnya kueri, prosedur yang disimpan, dan pemicu menggunakan RU didasarkan pada kompleksitas operasi yang dilakukan. Saat mengembangkan aplikasi, periksa header biaya permintaan untuk memahami lebih baik berapa banya kapasitas RU yang dikonsumsi setiap operasi.

Unit permintaan dan beberapa wilayah

Jika Anda menyediakan RU 'R' pada kontainer Cosmos (atau database), Cosmos DB memastikan bahwa RU 'R' tersedia di setiap wilayah yang berkaitan dengan akun Cosmos Anda. Anda tidak dapat secara selektif menetapkan RU ke wilayah tertentu. RU yang disediakan pada kontainer Cosmos (atau database) disediakan di semua wilayah yang terkait dengan akun Cosmos Anda.

Dengan asumsi bahwa kontainer Cosmos dikonfigurasi dengan UR 'R' dan ada wilayah 'N' yang berkaitan dengan akun Cosmos, jumlah RU yang tersedia secara global pada kontainer = R x N.

Pilihan model konsistensi Anda juga memengaruhi throughput. Anda dapat memperoleh sekitar 2x throughput baca untuk tingkat konsistensi yang lebih santai (sesi, prefiks konsisten dan konsistensi peristiwa) dibandingkan dengan tingkat konsistensi yang lebih kuat (misalnya, kedaluwarsa terikat atau konsistensi kuat).

Langkah berikutnya