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.
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.
Gambar berikut menunjukkan hierarki entitas di akun 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 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.
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 |
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 |
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.
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 |