Model sumber daya Azure Cosmos DB

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

Azure Cosmos DB adalah platform-as-a-service (PaaS) yang terkelola sepenuhnya. Untuk mulai menggunakan Azure Cosmos DB, buat akun Azure Cosmos DB di grup sumber daya Azure di langganan Anda. Anda kemudian membuat database dan kontainer dalam akun.

Akun Azure Cosmos DB Anda berisi nama DNS unik dan dapat dikelola menggunakan templat portal Microsoft Azure, ARM, atau Bicep, Azure PowerShell, Azure CLI, atau Azure Management SDK atau REST API apa pun. Untuk informasi selengkapnya, lihat cara mengelola akun Azure Cosmos DB. Untuk mendistribusikan data dan throughput Anda secara global ke beberapa wilayah Azure, Anda dapat menambahkan dan menghapus wilayah Azure ke akun Anda kapan saja. Anda dapat mengonfigurasi akun Anda untuk memiliki satu wilayah atau beberapa wilayah tulis. Untuk informasi selengkapnya, lihat cara menambah dan menghapus wilayah Azure ke akun Anda. Anda dapat mengonfigurasi tingkat konsistensi default di akun.

Elemen dalam akun Azure Cosmos DB

Saat ini, Anda dapat membuat maksimal 50 akun Azure Cosmos DB di bawah langganan Azure (ini adalah batas lunak yang dapat ditingkatkan melalui permintaan dukungan). Satu akun Azure Cosmos DB secara virtual dapat mengelola data dalam jumlah tak terbatas dan throughput yang disediakan. Untuk mengelola data Anda dan throughput yang disediakan, Anda bisa membuat satu atau beberapa database dalam akun Anda di bawah lalu satu atau beberapa kontainer untuk menyimpan data Anda. Gambar berikut menunjukkan hierarki elemen di akun Azure Cosmos DB:

Hierarki akun Azure Cosmos DB

Gambar berikut menunjukkan hierarki entitas yang berbeda di akun Azure Cosmos DB:

Entitas akun Azure Cosmos DB

Database Azure Cosmos DB

Di Azure Cosmos DB, database serupa dengan namespace layanan. Database hanyalah sekelompok kontainer. Tabel berikut menunjukkan bagaimana database dipetakan ke berbagai entitas khusus API:

Entitas Azure Cosmos DB API SQL Cassandra API Azure Cosmos DB API untuk MongoDB Gremlin API API Tabel
Database Azure Cosmos Database Keyspace Database Database NA

Catatan

Dengan akun Table API, untuk mempertahankan kompatibilitas dengan Azure Storage Tables, tabel di Azure Cosmos DB dibuat di tingkat akun.

Kontainer Azure Cosmos DB

Kontainer Azure Cosmos DB adalah tempat data disimpan. Tidak seperti kebanyakan database relasional yang ditingkatkan dengan ukuran VM yang lebih besar, Azure Cosmos DB memperluas skala. Data disimpan di satu atau beberapa server, yang disebut partisi. Untuk meningkatkan throughput atau penyimpanan, lebih banyak partisi ditambahkan. Ini menyediakan jumlah throughput dan penyimpanan yang hampir tidak terbatas untuk kontainer. Saat kontainer dibuat, Anda perlu menyediakan kunci partisi. Ini adalah properti yang Anda pilih dari dokumen Anda untuk disimpan. Nilai properti tersebut kemudian digunakan untuk merutekan data ke partisi yang akan ditulis, diperbarui, atau dihapus. Ini juga dapat digunakan dalam klausa WHERE dalam kueri untuk pengambilan data yang efisien.

Mekanisme penyimpanan yang mendasar untuk data di Azure Cosmos DB disebut partisi fisik. Ini dapat memiliki jumlah throughput hingga 10.000 RU/dtk dan menyimpan hingga 50 GB data. Azure Cosmos DB mengabstraksi ini dengan partisi logis yang dapat menyimpan hingga 20 GB data. Partisi logis memungkinkan layanan untuk memberikan elastisitas yang lebih besar dan pengelolaan data yang lebih baik pada partisi fisik yang mendasar karena lebih banyak partisi ditambahkan. Untuk mempelajari lebih lanjut tentang partisi dan kunci partisi, lihat Data partisi.

Saat membuat container, Anda mengonfigurasi throughput dalam salah satu mode berikut:

  • Throughput khusus: Throughput yang tersedia pada kontainer secara eksklusif disediakan untuk kontainer tersebut. Ada dua jenis throughput yang tersedia, standar atau skala otomatis. Untuk mempelajari lebih lanjut, lihat Cara menyediakan throughput pada penampung.

  • Throughput bersama: Di sini throughput ditentukan pada tingkat database, lalu dibagikan dengan hingga 25 kontainer dalam database, (tidak termasuk kontainer yang telah dikonfigurasi dengan throughput khusus). Ini bisa menjadi opsi yang baik ketika semua kontainer dalam database memiliki permintaan dan kebutuhan penyimpanan yang sama atau ketika Anda tidak memerlukan performa yang dapat diprediksi pada data. Untuk mempelajari lebih lanjut, lihat Cara menyediakan throughput pada database.

Catatan

Anda tidak dapat menggunakan throughput khusus dan bersama. Kontainer yang dibuat dalam database throughput bersama, tidak dapat diperbarui untuk memiliki throughput khusus. Untuk mengubah kontainer dari throughput bersama ke khusus, kontainer baru harus dibuat dan data disalin ke kontainer tersebut.

Kontainer bersifat skema-agnostik. Item dalam kontainer dapat memiliki skema arbitrer atau entitas yang berbeda selama mereka berbagi kunci partisi yang sama. Misalnya, item yang mewakili pelanggan dan satu atau beberapa item yang mewakili semua pesanan mereka, dapat ditempatkan dalam kontainer yang sama. Secara default, semua data yang ditambahkan ke kontainer secara otomatis diindeks tanpa memerlukan pengindeksan eksplisit. Anda dapat menyesuaikan pengindeksan untuk kontainer dengan mengonfigurasi kebijakan pengindeksannya.

Anda dapat mengatur Time to Live (TTL) pada item yang dipilih dalam kontainer atau untuk seluruh kontainer dengan secara diam-diam menghapus item tersebut secara otomatis di latar belakang dengan throughput yang tidak digunakan untuk menghindari performa yang berdampak. Namun, bahkan jika tidak dihapus, data apa pun yang telah kedaluwarsa tidak akan muncul dalam bacaan apa pun yang dibuat. Untuk mempelajari selengkapnya, lihat Mengonfigurasi TTL di kontainer Anda.

Azure Cosmos DB menyediakan kemampuan pengambilan data perubahan bawaan yang disebut, umpan perubahan yang dapat digunakan untuk berlangganan semua perubahan pada data dalam kontainer Anda. Untuk informasi selengkapnya, lihat Ubah umpan di Azure Cosmos DB.

Anda dapat mendaftarkan prosedur, pemicu, fungsi yang ditentukan pengguna (UDF)yang disimpan, dan menggabungkan prosedur untuk kontainer Anda.

Data dalam kontainer harus memiliki nilai properti unik id untuk setiap nilai kunci partisi logis. Ini dapat berguna ketika Anda ingin memiliki batasan unik dalam kontainer Anda. Anda juga dapat menentukan batasan kunci unik pada kontainer Azure Cosmos DB yang menggunakan satu atau beberapa properti berbeda dan memastikan keunikan satu atau beberapa nilai per kunci partisi logis. Jika Anda membuat kontainer dengan menggunakan kebijakan kunci unik, tidak ada item baru atau yang diperbarui dengan nilai yang menduplikasi nilai yang ditentukan oleh batasan kunci unik yang dapat dibuat. Untuk mempelajari lebih lengkap, lihat Batasan kunci unik.

Kontainer dikhususkan untuk entitas khusus API seperti yang ditampilkan dalam tabel berikut:

Entitas Azure Cosmos API SQL Cassandra API Azure Cosmos DB API untuk MongoDB Gremlin API API Tabel
Kontainer Azure Cosmos Kontainer Tabel Koleksi Graph Tabel

Catatan

Saat membuat kontainer, pastikan Anda tidak membuat dua kontainer dengan nama yang sama tetapi casing yang berbeda. Beberapa bagian dari platform Azure tidak peka huruf besar/kecil, dan ini dapat mengakibatkan kebingungan/tabrakan telemetri dan tindakan pada kontainer dengan nama tersebut.

Properti kontainer Azure Cosmos DB

Kontainer Azure Cosmos DB memiliki sekumpulan properti yang ditentukan sistem. Bergantung pada API mana yang Anda gunakan, beberapa properti mungkin tidak langsung terekspos. Tabel berikut ini menjelaskan daftar properti yang ditentukan sistem:

Properti yang ditentukan sistem Sistem yang dihasilkan atau dapat dikonfigurasi pengguna Tujuan API SQL Cassandra API Azure Cosmos DB API untuk MongoDB Gremlin API API Tabel
_rid Sistem yang dihasilkan Pengidentifikasi kontainer yang unik Ya Tidak Tidak Tidak Tidak
_etag Sistem yang dihasilkan Tag entitas yang digunakan untuk kontrol konkurensi optimis Ya Tidak Tidak Tidak Tidak
_ts Sistem yang dihasilkan tanda waktu terakhir yang diperbarui dari kontainer Ya Tidak Tidak Tidak Tidak
_self Sistem yang dihasilkan URI kontainer yang dapat diatasi Ya Tidak Tidak Tidak Tidak
id Dapat dikonfigurasi pengguna Nama kontainer Ya Ya Ya Ya Ya
indexingPolicy Dapat dikonfigurasi pengguna Menyediakan kemampuan untuk mengubah indeks Ya Tidak Ya Ya Ya
TimeToLive Dapat dikonfigurasi pengguna Menyediakan kemampuan untuk menghapus item secara otomatis dari kontainer setelah periode waktu yang ditetapkan. Untuk detailnya, lihat Time to Live. Ya Tidak Tidak Tidak Ya
changeFeedPolicy Dapat dikonfigurasi pengguna Digunakan untuk membaca perubahan yang dibuat pada item dalam kontainer. Untuk detailnya, lihat Umpan perubahan. Ya Tidak Tidak Tidak Ya
uniqueKeyPolicy Dapat dikonfigurasi pengguna Digunakan untuk memastikan keunikan satu atau beberapa nilai dalam partisi logis. Untuk informasi selengkapnya, lihat Batasan kunci unik. Ya Tidak Tidak Tidak Ya
AnalyticalTimeToLive Dapat dikonfigurasi pengguna Menyediakan kemampuan untuk menghapus item secara otomatis dari kontainer setelah periode waktu yang ditetapkan. Untuk detailnya, lihat Time to Live. Ya Tidak Ya Tidak Tidak

Item Azure Cosmos DB

Bergantung pada API yang Anda gunakan, data dapat mewakili item dalam kontainer, dokumen dalam koleksi, baris dalam tabel, atau node atau tepi dalam grafik. Tabel berikut menampilkan pemetaan entitas khusus API ke item Azure Cosmos:

Entitas cosmos API SQL Cassandra API Azure Cosmos DB API untuk MongoDB Gremlin API API Tabel
Azure Cosmos DB item Item Baris Dokumen Node atau tepi Item

Properti item

Setiap item Azure Cosmos memiliki properti yang ditentukan sistem berikut ini. Bergantung pada API mana yang Anda gunakan, beberapa di antaranya mungkin tidak langsung terekspos.

Properti yang ditentukan sistem Dibuat sistem atau ditentukan pengguna Tujuan API SQL Cassandra API Azure Cosmos DB API untuk MongoDB Gremlin API API Tabel
_rid Sistem yang dihasilkan Pengidentifikasi unik item Ya Tidak Tidak Tidak Tidak
_etag Sistem yang dihasilkan Tag entitas yang digunakan untuk kontrol konkurensi optimis Ya Tidak Tidak Tidak Tidak
_ts Sistem yang dihasilkan Tanda waktu pembaruan terakhir item Ya Tidak Tidak Tidak Tidak
_self Sistem yang dihasilkan URI item yang dapat diatasi Ya Tidak Tidak Tidak Tidak
id Baik Nama unik yang ditentukan pengguna dalam partisi logis. Ya Ya Ya Ya Ya
Properti yang ditentukan pengguna arbitrer Ditentukan pengguna Properti yang ditentukan pengguna diwakili dalam representasi API-native (termasuk JSON, BSON, dan CQL) Ya Ya Ya Ya Ya

Catatan

Keunikan properti id hanya diberlakukan dalam setiap partisi logis. Beberapa dokumen dapat memiliki properti yang id sama dengan nilai kunci partisi yang berbeda.

Operasi pada item

Item Azure Cosmos mendukung operasi berikut. Anda dapat menggunakan salah satu Azure Cosmos API untuk melakukan operasi.

Operasi API SQL Cassandra API Azure Cosmos DB API untuk MongoDB Gremlin API API Tabel
Sisipkan, Ganti, Hapus, Upsert, Baca Ya Ya Ya Ya Ya

Langkah berikutnya

Pelajari cara mengelola akun Azure Cosmos dan konsep lainnya: