Database, kontainer, dan item di Azure Cosmos DB

BERLAKU UNTUK: Nosql MongoDB Cassandra Gremlin Meja

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
  • Templat Azure Resource Manager
  • Templat Bicep
  • Azure PowerShell
  • Azure CLI
  • Azure Management SDK
  • REST API Azure

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 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 50 akun Azure Cosmos DB di bawah langganan Azure. Anda dapat meningkatkan batas ini dengan membuat permintaan dukungan.

Anda dapat mengelola data dalam jumlah yang hampir tidak 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 of the hierarchy of an Azure Cosmos DB account, including an account, database, and container.

Gambar berikut menunjukkan hierarki entitas di akun Azure Cosmos DB.

Diagram of the relationship between a container and items, including sibling entities such as stored procedures, user-defined functions, and triggers.

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 untuk NoSQL API untuk Apache Cassandra API untuk MongoDB API untuk Apache Gremlin API untuk Tabel
Database Microsoft Azure Cosmos DB Database Keyspace Database Database Tidak berlaku

Catatan

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

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 jumlah throughput dan penyimpanan yang hampir tidak 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 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.

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

  • Throughput khusus: Throughput pada kontainer secara eksklusif dicadangkan untuk kontainer tersebut. Ada dua jenis throughput khusus: standar dan skala otomatis. Untuk mempelajari selengkapnya, lihat Menyediakan throughput standar (manual) pada kontainer Azure Cosmos DB.

  • Throughput bersama: Throughput ditentukan pada tingkat database lalu dibagikan dengan hingga 25 kontainer dalam database. Berbagi throughput mengecualikan kontainer yang dikonfigurasi dengan throughput khusus 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 Menyediakan throughput standar (manual) pada database di Azure Cosmos DB.

Catatan

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 bersifat agnostik skema. Item dalam kontainer dapat memiliki skema arbitrer atau entitas yang berbeda, selama mereka berbagi kunci partisi yang sama. Misalnya, kontainer dapat berisi item atau dokumen yang memiliki informasi profil pelanggan, bersama dengan satu atau beberapa item atau dokumen yang mewakili semua pesanan penjualan pelanggan. 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 mengubah pengambilan data yang disebut umpan perubahan. 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 Tabel Koleksi Grafik Tabel

Catatan

Pastikan Anda tidak membuat dua kontainer yang memiliki nama yang sama tetapi casing yang berbeda. Beberapa bagian platform Azure tidak peka huruf besar/kecil, dan penamaan semacam ini dapat mengakibatkan kebingungan atau tabrakan data dan 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 Tujuan API untuk NoSQL API untuk Cassandra API untuk MongoDB API untuk Gremlin API untuk Tabel
_rid Sistem yang dibuat Pengidentifikasi unik kontainer. Ya No No No Tidak
_etag Sistem yang dibuat Tag entitas yang digunakan untuk kontrol konkurensi optimis. Ya No No No Tidak
_ts Sistem yang dibuat Stempel waktu terakhir yang diperbarui dari kontainer. Ya No No No Tidak
_self Sistem yang dibuat URI kontainer yang dapat diatasi. Ya No No No Tidak
id Dapat dikonfigurasi pengguna Nama kontainer. Ya Ya Ya Ya Ya
indexingPolicy Dapat dikonfigurasi pengguna Kebijakan untuk membangun indeks untuk kontainer. Ya No Ya Ya Ya
TimeToLive Dapat dikonfigurasi pengguna Penghapusan otomatis item dari kontainer setelah periode waktu yang ditetapkan. Untuk detailnya, lihat Waktu hidup. Ya No No No Ya
changeFeedPolicy Dapat dikonfigurasi pengguna Kebijakan untuk membaca perubahan yang dilakukan pada item dalam kontainer. Untuk detailnya, lihat Umpan perubahan. Ya No No No Ya
uniqueKeyPolicy Dapat dikonfigurasi pengguna Kebijakan untuk memastikan keunikan satu atau beberapa nilai dalam partisi logis. Untuk informasi selengkapnya, lihat Batasan kunci unik. Ya No No No Ya
AnalyticalTimeToLive Dapat dikonfigurasi pengguna Penghapusan otomatis item dari kontainer setelah periode waktu yang ditetapkan, dalam konteks penyimpanan analitis. Untuk detailnya, lihat Penyimpanan analitik. Ya No Ya No Tidak

Item 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
Azure Cosmos DB item Item Baris Dokumen Node atau tepi Item

Properti item

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 Tujuan API untuk NoSQL API untuk Cassandra API DB untuk MongoDB API untuk Gremlin API untuk Tabel
_rid Sistem yang dibuat Pengidentifikasi unik item Ya No No No Tidak
_etag Sistem yang dibuat Tag entitas yang digunakan untuk kontrol konkurensi optimis Ya No No No Tidak
_ts Sistem yang dibuat Stempel waktu pembaruan terakhir item Ya No No No Tidak
_self Sistem yang dibuat URI item yang dapat diatasi Ya No No No Tidak
id Baik Nama unik yang ditentukan pengguna dalam partisi logis Ya Ya Ya Ya Ya
Properti yang ditentukan pengguna arbitrer Ditetapkan pengguna Properti yang ditentukan pengguna 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 nilai properti yang sama id dengan nilai kunci partisi yang berbeda.

Operasi pada item

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

Operasi API untuk NoSQL API untuk Cassandra API untuk MongoDB API untuk Gremlin API untuk Tabel
Sisipkan, ganti, hapus, upsert, baca Ya Ya Ya Ya Ya

Langkah berikutnya

Pelajari tentang cara mengelola akun Azure Cosmos DB Anda dan konsep lainnya: