Database, kontainer, dan item di Azure Cosmos DB

Azure Cosmos DB adalah platform yang dikelola sepenuhnya sebagai layanan (PaaS). Untuk mulai menggunakan Azure Cosmos DB, buat akun Azure Cosmos DB di grup sumber daya Azure di langganan Anda. Kemudian, buat database dan kontainer dalam akun.

Akun Azure Cosmos DB Anda berisi nama Domain Name System (DNS) yang unik. Anda bisa mengelola nama DNS dengan menggunakan banyak alat, termasuk:

  • portal Azure
  • Template Manajer Sumber Daya Azure
  • Templat Bicep
  • Azure PowerShell
  • Azure CLI
  • Kit pengembangan perangkat lunak (SDK) Azure Management
  • Azure REST API

Untuk mereplikasi data dan throughput Anda ke beberapa wilayah Azure, Anda dapat menambahkan dan menghapus wilayah Azure dari akun Anda kapan saja. Anda dapat mengonfigurasi akun Anda untuk memiliki satu wilayah atau beberapa wilayah penulisan. Untuk informasi selengkapnya, lihat Mengelola akun Azure Cosmos DB dengan menggunakan portal Azure. Anda juga dapat mengonfigurasi tingkat konsistensi default pada akun.

Elemen dalam akun Azure Cosmos DB

Saat ini, Anda dapat membuat maksimal 250 akun Azure Cosmos DB di bawah langganan Azure. Anda dapat meningkatkan batas ini dengan membuat permintaan dukungan.

Anda dapat mengelola data dalam jumlah tak terbatas dan throughput yang disediakan dengan menggunakan satu akun Azure Cosmos DB. Untuk mengelola data dan throughput yang disediakan, Anda membuat satu atau beberapa database dalam akun Anda lalu membuat satu atau beberapa kontainer untuk menyimpan data Anda.

Gambar berikut menunjukkan hierarki elemen di akun Azure Cosmos DB.

Diagram hierarki akun Azure Cosmos DB, termasuk akun, database, dan kontainer.

Gambar berikut menunjukkan hierarki entitas di akun Azure Cosmos DB.

Diagram hubungan antara kontainer dan item, termasuk entitas saudara seperti prosedur tersimpan, fungsi yang ditentukan pengguna, dan pemicu.

Database Azure Cosmos DB

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

Entitas Azure Cosmos DB API untuk NoSQL API untuk Apache Cassandra API untuk MongoDB API untuk Apache Gremlin API untuk Tabel
Database Azure Cosmos DB dari Microsoft Database Keyspace Database Database Tidak berlaku

Nota

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

Kontainer Azure Cosmos DB

Kontainer Azure Cosmos DB adalah tempat data disimpan. Tidak seperti kebanyakan database relasional, yang meningkatkan skala dengan ukuran komputer virtual yang lebih besar, Azure Cosmos DB memperluas skala.

Data disimpan di satu atau beberapa server yang disebut partisi. Untuk meningkatkan partisi, Anda meningkatkan throughput, atau mereka tumbuh secara otomatis saat penyimpanan meningkat. Hubungan ini menyediakan throughput dan penyimpanan dalam jumlah tak terbatas untuk kontainer.

Saat membuat kontainer, Anda perlu menyediakan kunci partisi. Kunci partisi adalah properti yang Anda pilih dari item Anda untuk membantu Azure Cosmos DB mendistribusikan data secara efisien di seluruh partisi. Azure Cosmos DB menggunakan nilai properti ini untuk merutekan data ke partisi yang sesuai untuk ditulis, diperbarui, atau dihapus. Anda juga dapat menggunakan kunci partisi dalam WHERE klausa dalam kueri untuk pengambilan data yang efisien.

Mekanisme penyimpanan yang mendasar untuk data di Azure Cosmos DB disebut sebagai partisi fisik. Partisi fisik dapat memiliki jumlah throughput hingga 10.000 Unit Permintaan per detik, dan mereka dapat menyimpan hingga 50 GB data. Azure Cosmos DB mengabstraksi konsep partisi 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 saat Anda menambahkan lebih banyak partisi. Untuk mempelajari selengkapnya tentang pemartisian dan kunci partisi, lihat Pemartisian dan penskalaan horizontal di Azure Cosmos DB.

Jika Anda memiliki skenario di mana kunci partisi dapat melebihi 20 GB data, menggunakan kunci partisi hierarkis dapat membantu. Jika Anda menggunakan fitur ini, Anda dapat mengonfigurasi hingga hierarki tiga tingkat untuk kunci partisi Anda untuk lebih mengoptimalkan distribusi data dan untuk tingkat penskalaan yang lebih tinggi. Lihatgambaran umum kunci partisi hierarkis.

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

  • Throughput khusus: Throughput pada kontainer secara eksklusif dikhususkan untuk kontainer tersebut. Ada dua jenis throughput khusus: standar dan skala otomatis. Untuk mempelajari selengkapnya, lihat mengonfigurasi throughput standar (manual) pada kontainer Azure Cosmos DB.
  • Throughput yang Dibagikan: Throughput ditentukan pada tingkat database kemudian dapat digunakan bersama hingga 25 kontainer dalam database. Pembagian throughput mengecualikan kontainer yang dikonfigurasi dengan throughput dedikasi mereka sendiri.

Throughput bersama dapat 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 selengkapnya, lihat mengonfigurasi throughput standar (manual) pada database di Azure Cosmos DB.

Nota

Anda tidak dapat beralih antara throughput khusus dan bersama. Kontainer yang Anda buat dalam database throughput bersama tidak dapat diperbarui untuk memiliki throughput khusus. Untuk mengubah kontainer dari throughput bersama ke khusus, Anda harus membuat kontainer baru dan menyalin data ke dalamnya. Fitur salinan kontainer di Azure Cosmos DB dapat mempermudah proses ini.

Kontainer agnostik terhadap skema. Item dalam kontainer dapat memiliki skema arbitrer atau entitas yang berbeda, selama mereka berbagi kunci partisi yang sama. Misalnya, kontainer dapat menyimpan profil pelanggan. Ini juga dapat menyimpan item terpisah untuk setiap pesanan penjualan yang dibuat oleh pelanggan tersebut. Anda dapat menempatkan informasi serupa untuk semua pelanggan dalam kontainer yang sama.

Secara default, semua data yang Anda tambahkan ke kontainer secara otomatis diindeks tanpa memerlukan pengindeksan eksplisit. Anda dapat menyesuaikan pengindeksan untuk kontainer dengan mengonfigurasi kebijakan pengindeksannya.

Untuk menghindari mempengaruhi performa, Anda dapat mengatur time to live (TTL) pada item yang dipilih dalam kontainer atau di seluruh kontainer untuk menghapus item tersebut secara otomatis di latar belakang dengan throughput yang tidak digunakan. Namun, bahkan jika data kedaluwarsa tidak dihapus, data tersebut tidak muncul dalam operasi baca apa pun. Untuk mempelajari selengkapnya, lihat Mengonfigurasi waktu hidup di Azure Cosmos DB.

Azure Cosmos DB menyediakan kemampuan bawaan untuk pengambilan data perubahan yang dinamai "change feed". Anda dapat menggunakannya untuk berlangganan semua perubahan pada data dalam kontainer Anda.

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

Setiap dokumen dalam kontainer harus memiliki id properti yang unik dalam nilai properti kunci logis untuk kontainer tersebut. Anda dapat menggunakan kombinasi properti ini untuk memberikan batasan unik dalam kontainer, tanpa harus menentukannya secara eksplisit.

Anda juga dapat menentukan batasan kunci unik pada kontainer Azure Cosmos DB yang menggunakan satu atau beberapa properti. Batasan kunci unik memastikan keunikan satu atau beberapa nilai per kunci partisi logis. Jika Anda membuat kontainer dengan menggunakan kebijakan kunci unik, Anda tidak dapat membuat item baru atau yang diperbarui dengan nilai yang menduplikasi nilai yang ditentukan batasan kunci unik.

Kontainer dikhususkan ke dalam entitas khusus API, seperti yang ditunjukkan dalam tabel berikut:

Entitas Azure Cosmos DB API untuk NoSQL API untuk Cassandra API untuk MongoDB API untuk Gremlin API untuk Tabel
Kontainer Azure Cosmos DB Kontainer Table Collection Graph Table

Nota

Pastikan Anda tidak membuat dua kontainer yang memiliki nama yang sama tetapi casing yang berbeda. Beberapa bagian dari platform Azure tidak sensitif terhadap huruf besar/kecil, dan penamaan jenis ini dapat menyebabkan kebingungan atau tabrakan data atau tindakan diagnostik pada kontainer.

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 properti yang ditentukan sistem:

Properti yang ditentukan sistem Sistem yang dihasilkan atau dapat dikonfigurasi pengguna Kegunaan API untuk NoSQL API untuk Cassandra API untuk MongoDB API untuk Gremlin API untuk Tabel
_rid Dihasilkan oleh sistem Pengidentifikasi unik wadah. Yes Tidak. Tidak. Tidak. Tidak.
_etag Dihasilkan oleh sistem Tag entitas yang digunakan untuk kontrol konkurensi optimis. Yes Tidak. Tidak. Tidak. Tidak.
_ts Dihasilkan oleh sistem Stempel waktu terakhir yang diperbarui dari kontainer. Yes Tidak. Tidak. Tidak. Tidak.
_self Dihasilkan oleh sistem URI kontainer yang dapat diakses. Yes Tidak. Tidak. Tidak. Tidak.
id Dapat dikonfigurasi pengguna Nama kontainer. Yes Yes Yes Yes Yes
indexingPolicy Dapat dikonfigurasi pengguna Kebijakan membangun indeks untuk kontainer. Yes Tidak. Yes Yes Yes
TimeToLive Dapat dikonfigurasi pengguna Penghapusan otomatis item dari kontainer setelah periode waktu yang ditetapkan. Untuk detailnya, lihat Waktu hidup. Yes Tidak. Tidak. Tidak. Yes
changeFeedPolicy Dapat dikonfigurasi pengguna Kebijakan untuk membaca perubahan yang dilakukan pada item dalam kontainer. Untuk detailnya, lihat Umpan perubahan. Yes Tidak. Tidak. Tidak. Yes
uniqueKeyPolicy Dapat dikonfigurasi pengguna Kebijakan untuk memastikan keunikan satu atau beberapa nilai dalam partisi logis. Untuk informasi selengkapnya, lihat Batasan kunci unik. Yes Tidak. Tidak. Tidak. Yes
AnalyticalTimeToLive Dapat dikonfigurasi pengguna Penghapusan otomatis item dari kontainer setelah periode waktu yang ditetapkan, dalam konteks penyimpanan analitis. Fitur ini tidak digunakan lagi. Yes Tidak. Yes Tidak. Tidak.

Item-item pada Azure Cosmos DB

Bergantung pada API mana yang Anda gunakan, entitas data individual dapat diwakili dengan berbagai cara:

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

Properti barang

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

Properti yang ditentukan sistem Sistem yang dihasilkan atau ditentukan pengguna Kegunaan API untuk NoSQL API untuk Cassandra API untuk MongoDB API untuk Gremlin API untuk Tabel
_rid Dihasilkan oleh sistem Pengidentifikasi unik barang Yes Tidak. Tidak. Tidak. Tidak.
_etag Dihasilkan oleh sistem Tag entitas yang digunakan untuk kontrol konkurensi optimis Yes Tidak. Tidak. Tidak. Tidak.
_ts Dihasilkan oleh sistem Stempel waktu pembaruan terakhir item Yes Tidak. Tidak. Tidak. Tidak.
_self Dihasilkan oleh sistem URI item yang dapat diakses Yes Tidak. Tidak. Tidak. Tidak.
_lsn Dihasilkan oleh sistem Nomor urutan log yang digunakan untuk memantau posisi urutan aliran perubahan suatu item. Tersedia pada muatan umpan perubahan saja; tidak dikembalikan pada pembacaan item standar. Yes Tidak. Tidak. Tidak. Tidak.
id Salah satu Nama unik yang ditentukan pengguna dalam partisi logis Yes Yes Yes Yes Yes
Properti yang ditentukan pengguna secara sembarang Didefinisikan oleh pengguna Properti yang ditentukan pengguna dalam representasi API-native termasuk JSON, biner JSON (BSON), dan Cassandra Query Language (CQL) Yes Yes Yes Yes Yes

Nota

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

Operasi terhadap objek

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

Pengoperasian API untuk NoSQL API untuk Cassandra API untuk MongoDB API untuk Gremlin API untuk Tabel
Sisipkan, ganti, hapus, upsert, baca Yes Yes Yes Yes Yes