Cara memanfaatkan tingkat gratis Azure Cosmos DB

Azure's Cosmos DB adalah salah satu fitur terbaiknya. Basis data terdistribusi multimodel, ini memberi Anda dasar untuk membangun aplikasi yang benar-benar berbasis cloud dengan serangkaian model konsistensi yang dapat dipetakan ke cara kerja aplikasi Anda. Namun tidak mudah untuk memulainya, dan aplikasi yang dikonfigurasi atau dirancang dengan buruk dapat menjadi mahal dengan cepat.

Senang rasanya melihat bahwa Cosmos DB sekarang memiliki tingkat gratis yang dapat membantu Anda mulai menerapkan aplikasi di luar lingkungan pengembangan yang terbatas. Tingkat baru tidak besar: ini didasarkan pada konfigurasi minimum untuk Cosmos DB, dan menawarkan 400 RU / s (unit permintaan per detik) dan penyimpanan 5GB, dengan sebanyak 25 kontainer dalam database throughput bersama. Itu lebih dari cukup untuk aplikasi kecil yang menawarkan lebih banyak baca daripada menulis, misalnya, dan tidak bergantung pada model konsistensi yang kuat.

Anda perlu menyadari bahwa meskipun Cosmos DB multiregion, Anda hanya dapat menjalankan satu database 400 RU / s di tingkat gratis. Dalam praktiknya, itu membatasi Anda ke satu wilayah, karena wilayah tambahan masing-masing memerlukan 400 RU / dtknya sendiri, dan itu akan dikenakan tarif standar untuk wilayah tersebut, per jam.

Memulai dengan Cosmos DB gratis

Anda perlu membuat akun baru untuk memanfaatkan tingkat gratis; itu tidak tersedia sebagai opsi penagihan pada aplikasi yang ada. 400 RU / s tingkat gratis adalah jumlah terkecil yang dapat disediakan dalam database Cosmos DB. Itu memberi Anda sekitar 1 miliar pembacaan setiap bulan, yang seharusnya cukup untuk menjalankan aplikasi Anda atau memungkinkan Anda menerapkan dan menjalankan database terdistribusi internal sebagai bagian dari proyek percontohan. Setelah Anda mencapai batas tunjangan RU / s gratis, Anda dapat menambahkan lebih banyak kapasitas dalam blok 100 RU / dtk, ditagih dengan tarif per jam.

Perlu dipahami apa itu database Cosmos RU. RU adalah unit permintaan, dan RU / s yang ditagih adalah ukuran dari throughput yang disediakan dari database Anda, yang mencakup semua operasinya. Itu termasuk membaca, menulis, memperbarui, menghapus, dan banyak lagi. Microsoft menyarankan bahwa 1 RU / s setara dengan satu yang akhirnya konsisten (tingkat konsistensi yang paling lambat dan paling tidak intensif pemrosesan yang tersedia di Cosmos DB) per detik dari item 1KB. Untuk menulis 1KB item yang sama per detik adalah 5 RU / s. Semakin kompleks operasinya, semakin banyak RU / s yang dikonsumsi.

Memahami konsumsi unit permintaan

Sulit untuk mengatakan dengan tepat berapa banyak RU / s yang akan dikonsumsi sebuah aplikasi. Namun, Anda dapat memikirkan batasan Cosmos DB yang dapat memengaruhi RU / s yang digunakan oleh database Anda. Pertama, Anda perlu mempertimbangkan ukuran barang Anda. Semakin besar itemnya, semakin banyak RU / s yang digunakannya untuk membaca atau menulis. Demikian pula, pengindeksan menghabiskan RU / s, dan jika Anda menggunakan model pengindeksan default, sumber daya yang diperlukan untuk menulis item akan naik saat Anda menambahkan lebih banyak ke database Anda. Lalu ada pilihan model konsistensi Anda, dengan kedaluwarsa yang kuat dan terbatas yang membutuhkan sekitar dua kali lebih banyak RU / s untuk dibaca sebagai model Cosmos DB lainnya yang kurang ketat.

Dengan jumlah RU / s terbatas yang tersedia di tingkat gratis, Anda mungkin ingin mengatasi kendala tersebut untuk meminimalkan konsumsi. Salah satu opsinya adalah menonaktifkan semua pengindeksan untuk database Anda, meskipun dalam praktiknya Anda mungkin lebih suka membatasi pengindeksan ke properti tertentu pada setiap dokumen JSON yang disimpan. Pada saat yang sama, Anda perlu mempertimbangkan bagaimana aplikasi Anda beroperasi dan apakah lebih baik menggunakan sesuatu seperti konsistensi sesi untuk meningkatkan persepsi pengguna tentang kinerja sambil mengurangi RU / s yang digunakan.

Karena RU / s berbasis aktivitas, Anda dapat menggunakan desain kueri untuk meminimalkan konsumsi. Itu mungkin memerlukan pembatasan jumlah hasil per kueri, mengontrol jumlah data yang Anda simpan, atau menggunakan sesedikit mungkin fungsi, prosedur tersimpan, dan pemicu yang ditentukan pengguna.

Menyiapkan database Anda cukup mudah. Di Azure Portal buat akun Cosmos DB baru, dan dari Azure Data Explorer buat database baru. Mulailah dengan memberinya ID dan kemudian sediakan throughputnya. Setel ini menjadi 400 RU / s. Jumlah yang lebih tinggi akan menunjukkan perkiraan biaya, tetapi saat Anda menyiapkan instance gratis, Anda tidak perlu mencobanya. Anda tidak terbatas pada Portal; Anda dapat menggunakan Azure CLI, PowerShell, atau bahkan secara terprogram dari dalam Cosmos DB SDK.

Membangun aplikasi di tingkat gratis Cosmos DB

Di Cosmos DB, basis data adalah sekumpulan wadah, yang digunakan untuk menangani partisi di wilayah Azure dan distribusi di seluruh wilayah tempat Anda menggunakan basis data. Setiap basis data dapat dikonfigurasi menjadi model tertentu: NoSQL (baik MongoDB maupun Cassandra), SQL, Gremlin, dan tabel. Sebagian besar aplikasi akan bekerja dengannya sebagai database dokumen NoSQL yang menyimpan data JSON.

Setelah Anda menyiapkan database dan memilih model, Anda dapat memikirkan container Cosmos DB sebagai cara skala database. Di luar tingkat gratis, Anda dapat mengatur throughput dalam RU / s pada basis kontainer; di tingkat gratis Anda membagikan throughput itu ke semua container di database Anda, jadi Anda tidak dapat memprediksi throughput untuk container tertentu. Instans berbayar memiliki SLA terkait, itulah sebabnya mereka memungkinkan Anda untuk mengatur throughput pada basis per kontainer.

Bekerja di seluruh container dengan cara ini sama dengan menggunakan cluster dalam database NoSQL dan berfungsi dengan baik untuk jenis beban kerja ini. Dengan menggunakan kunci partisi yang sama di semua container Anda, Cosmos DB akan secara otomatis membagikan throughput ke seluruh container Anda. Anda dapat menggunakan pendekatan ini dengan 25 kontainer tingkat gratis untuk mengurangi kemacetan bagi pengguna aplikasi Anda. Jika Anda memperlakukannya sebagai database NoSQL yang dikelompokkan dan dipecah, Anda akan merasa relatif mudah untuk memasukkannya ke dalam aplikasi Anda, menggunakannya untuk menghosting pointer ke konten lain daripada konten itu sendiri.

Bekerja dengan penawaran layanan gratis bisa jadi rumit, tetapi jika Anda melakukan tindakan pencegahan yang masuk akal, mungkin untuk menggunakan tingkat baru Cosmos DB sebagai bagian dari back end aplikasi. Anda mungkin harus mengorbankan beberapa fitur skalabilitas layanan, tetapi itu tidak akan memengaruhi aplikasi secara signifikan jika Anda membuat keputusan waktu desain yang cermat.

Penting untuk memikirkan tentang cara memanfaatkan database terdistribusi seperti Cosmos DB daripada hanya memindahkan beban kerja Anda yang ada ke database tersebut — kemungkinan besar tidak akan cocok. Sebaliknya, anggap ini sebagai kesempatan Anda untuk membangun aplikasi terdistribusi yang benar-benar cloud-native. Dalam hal ini 400 RU / s lebih dari cukup untuk mem-bootstrap aplikasi baru dan membuatnya bekerja dengan sejumlah pengguna yang wajar.