BERLAKU UNTUK: Cassandra
Berikut adalah beberapa perbedaan utama antara API untuk layanan Cassandra dan Apache Cassandra:
- Apache Cassandra merekomendasikan batas 100 MB pada ukuran kunci partisi. API untuk Cassandra untuk Azure Cosmos DB memungkinkan hingga 20 GB per partisi.
- Apache Cassandra memungkinkan Anda untuk menonaktifkan penerapan tahan lama. Anda dapat melewati penulisan ke log penerapan dan langsung masuk ke struktur data dalam memori. Ini dapat menyebabkan kehilangan data jika simpul tidak berfungsi sebelum struktur data dalam memori dihapus ke SSTable pada disk. Azure Cosmos DB selalu melakukan penerapan tahan lama untuk membantu mencegah kehilangan data.
- Apache Cassandra dapat melihat performa yang berkurang jika beban kerja melibatkan banyak penggantian atau penghapusan. Alasannya adalah penanda yang perlu dilewati beban kerja baca untuk mengambil data terbaru. API untuk Cassandra tidak akan melihat performa baca yang berkurang ketika beban kerja memiliki banyak penggantian atau penghapusan.
- Selama skenario beban kerja pengganti tinggi, pemadatan perlu dijalankan untuk menggabungkan SSTable pada disk. (Penggabungan diperlukan karena penulisan Apache Cassandra hanya tambahan. Beberapa pembaruan disimpan sebagai entri SSTable individual yang perlu digabungkan secara berkala). Situasi ini juga dapat menyebabkan penurunan performa baca selama pemadatan. Dampak performa ini tidak terjadi di API untuk Cassandra karena API tidak menerapkan pemadatan.
- Menetapkan faktor replikasi dari 1 memungkinkan dengan Apache Cassandra. Namun, cara ini membuat ketersediaan menjadi rendah jika satu-satunya node yang berisi data menurun. Ini bukan masalah dengan API untuk Cassandra untuk Azure Cosmos DB karena selalu ada faktor replikasi 4 (kuorum 3).
- Menambahkan atau menghapus node di Apache Cassandra memerlukan intervensi manual, serta penggunaan CPU yang tinggi pada node baru sementara node yang ada memindahkan beberapa rentang token mereka ke node baru. Situasi ini sama ketika Anda menonaktifkan node yang ada. Namun, API untuk Cassandra memperluas skala tanpa masalah yang diamati dalam layanan atau aplikasi.
- Tidak perlu mengatur num_tokens pada setiap simpul dalam kluster seperti di Apache Cassandra. Azure Cosmos DB sepenuhnya mengelola node dan rentang token.
- API untuk Cassandra dikelola sepenuhnya. Anda tidak memerlukan perintah, seperti perbaikan dan penonaktifan yang digunakan di Apache Cassandra.
API untuk Cassandra untuk Azure Cosmos DB mendukung Cassandra Query Language (CQL) m versi 3.x. Kompatibilitas CQL-nya didasarkan pada repositori Apache Cassandra GitHub publik. Jika Anda memiliki tanggapan terhadap dukungan protokol lain, kirim email ke askcosmosdbcassandra@microsoft.com.
Azure Cosmos DB mengatur throughput default untuk kontainer Anda berdasarkan tempat Anda membuat tabel dari: portal Azure atau CQL.
Azure Cosmos DB memberikan jaminan untuk performa dan latensi, dengan batas atas operasi. Jaminan ini dimungkinkan ketika mesin dapat menegakkan tata kelola pada operasi penyewa. Pengaturan throughput memastikan bahwa Anda mendapatkan throughput dan latensi yang dijamin, karena platform ini memesan kapasitas dan menjamin keberhasilan operasi. Anda dapat secara elastis mengubah throughput untuk mendapatkan manfaat dari musim aplikasi Anda dan menghemat biaya.
Konsep throughput dijelaskan dalam artikel Request Units in Azure Cosmos DB. Throughput untuk tabel didistribusikan secara merata di seluruh partisi fisik yang mendasarinya.
Azure Cosmos DB menggunakan Unit Permintaan per detik (RU/dtk) sebagai mata uang untuk menyediakan throughput. Tabel yang dibuat melalui CQL secara default memiliki 400 RU. Anda dapat mengubah RU dari portal Azure.
CQL
CREATE TABLE keyspaceName.tablename (user_id int PRIMARY KEY, lastname text) WITH cosmosdb_provisioned_throughput=1200
.NET
int provisionedThroughput = 400;
var simpleStatement = new SimpleStatement($"CREATE TABLE {keyspaceName}.{tableName} (user_id int PRIMARY KEY, lastname text)");
var outgoingPayload = new Dictionary<string, byte[]>();
outgoingPayload["cosmosdb_provisioned_throughput"] = Encoding.UTF8.GetBytes(provisionedThroughput.ToString());
simpleStatement.SetOutgoingPayload(outgoingPayload);
Azure Cosmos DB memberikan jaminan untuk performa dan latensi, dengan batas atas operasi. Jaminan ini dimungkinkan ketika mesin dapat menegakkan tata kelola pada operasi penyewa. Pengaturan throughput memastikan bahwa Anda mendapatkan throughput dan latensi yang dijamin, karena platform ini memesan kapasitas dan menjamin keberhasilan operasi.
Saat Anda melampaui kapasitas ini, Anda mendapatkan pesan kesalahan berikut yang menunjukkan kapasitas Anda habis:
0x1001 Kelebihan Beban: permintaan tidak dapat diproses karena "Tarif Permintaan besar"
Sangat penting untuk melihat operasi apa (dan volumenya) menyebabkan masalah ini. Anda bisa mendapatkan gambaran tentang kapasitas yang dikonsumsi melebihi kapasitas yang disediakan dengan metrik di portal Azure. Kemudian Anda perlu memastikan bahwa kapasitas dikonsumsi hampir sama di semua partisi yang mendasarinya. Jika Anda melihat bahwa satu partisi mengkonsumsi sebagian besar throughput, Anda memiliki ketidakseimbangan beban kerja.
Metrik tersedia yang menunjukkan kepada Anda bagaimana throughput digunakan selama berjam-jam, selama berhari-hari, dan per tujuh hari, di seluruh partisi atau secara agregat. Untuk informasi selengkapnya, lihat Memantau dan melakukan debug metrik di Azure Cosmos DB.
Log diagnostik dijelaskan dalam artikel pembuatan log diagnostik Azure Cosmos DB.
Ya, kunci partisi digunakan untuk menempatkan entitas di lokasi yang tepat. Di Azure Cosmos DB, digunakan untuk menemukan partisi logis yang tepat yang disimpan pada partisi fisik. Konsep partisi dijelaskan dengan baik dalam artikel Partisi dan skala dalam Azure Cosmos DB. Yang penting takeaway di sini adalah bahwa partisi logis tidak boleh melampaui batas 20 GB.
Azure Cosmos DB adalah sistem berdasarkan perjanjian tingkat layanan (SLA). Ini memberikan skala tak terbatas, dengan jaminan untuk latensi, throughput, ketersediaan, dan konsistensi. Penyimpanan tanpa batas ini didasarkan pada skala horizontal data, menggunakan partisi sebagai konsep kunci. Konsep partisi dijelaskan dengan baik dalam artikel Partisi dan skala dalam Azure Cosmos DB.
Anda harus mematuhi batas 20 GB pada jumlah entitas atau item per partisi logis. Untuk memastikan bahwa aplikasi Anda diskalakan dengan baik, kami sarankan agar Anda tidak membuat partisi panas dengan menyimpan semua informasi dalam satu partisi lalu mengkuerinya. Kesalahan ini terjadi hanya jika data Anda tidak seimbang: yaitu, Anda memiliki banyak data untuk satu kunci partisi (lebih dari 20 GB). Anda dapat menemukan distribusi data dengan menggunakan portal penyimpanan. Cara untuk memperbaiki kesalahan ini adalah dengan membuat ulang tabel dan memilih primer granular (kunci partisi), yang memungkinkan distribusi data yang lebih baik.
Dapatkah saya menggunakan API untuk Cassandra sebagai penyimpanan nilai kunci dengan jutaan atau miliaran kunci partisi?
Azure Cosmos DB dapat menyimpan data tanpa batas dengan menskalakan penyimpanan. Penyimpanan ini tidak independen dari throughput. Ya, Anda selalu dapat menggunakan API untuk Cassandra hanya untuk menyimpan dan mengambil kunci dan nilai dengan menentukan kunci primer/partisi yang tepat. Kunci individu ini mendapatkan partisi logis mereka sendiri dan duduk di atas partisi fisik tanpa masalah.
Ya, Anda dapat membuat lebih dari satu tabel dengan API untuk Cassandra. Setiap tabel diperlakukan sebagai unit untuk throughput dan penyimpanan.
Azure Cosmos DB adalah sistem yang diatur sumber daya untuk aktivitas data dan sarana kontrol. Kontainer, seperti koleksi dan tabel, adalah entitas runtime yang disediakan untuk kapasitas throughput yang diberikan. Pembuatan kontainer ini berturut-turut cepat bukanlah aktivitas yang diharapkan dan mungkin terbatas. Jika Anda memiliki pengujian yang menjatuhkan atau membuat tabel dengan segera, coba untuk memberinya ruang.
Tidak ada batasan fisik pada jumlah tabel. Jika Anda memiliki sejumlah besar tabel (di mana ukuran stabil total lebih dari 10 TB data) yang perlu dibuat, bukan puluhan atau ratusan biasa, kirim email ke askcosmosdbcassandra@microsoft.com.
Tidak ada batasan fisik pada jumlah ruang kunci karena mereka adalah kontainer metadata. Jika Anda memiliki banyak ruang kunci, kirim email ke askcosmosdbcassandra@microsoft.com.
Ya. Dengan asumsi partisi yang didistribusikan secara seragam, kapasitas penyimpanan dikelola secara otomatis dan meningkat saat Anda mendorong lebih banyak data. Jadi Anda dapat dengan percaya diri mengimpor data sebanyak yang Anda butuhkan tanpa mengelola dan menyediakan node dan banyak lagi. Tetapi jika Anda mengantisipasi banyak pertumbuhan data langsung, lebih masuk akal untuk secara langsung menyediakan throughput yang diantisipasi daripada mulai lebih rendah dan segera meningkatkannya.
API untuk Cassandra untuk Azure Cosmos DB menyediakan kompatibilitas tingkat protokol untuk menjalankan operasi. Ini menyembunyikan kompleksitas manajemen, pemantauan, dan konfigurasi. Sebagai pengembang/pengguna, Anda tidak perlu khawatir tentang ketersediaan, penanda, tembolok kunci, tembolok baris, filter bloom, dan banyak pengaturan lainnya. API untuk Cassandra berfokus pada penyediaan performa baca dan tulis yang Anda butuhkan tanpa overhead konfigurasi dan manajemen.
Apakah API untuk Cassandra akan mendukung perintah penambahan simpul, status kluster, dan status node?
API untuk Cassandra menyederhanakan perencanaan kapasitas dan menanggapi tuntutan elastisitas untuk throughput dan penyimpanan. Dengan Azure Cosmos DB, Anda menyediakan throughput yang Anda butuhkan. Kemudian Anda dapat meningkatkan dan menurunkannya setiap kali sepanjang hari, tanpa khawatir menambahkan, menghapus, atau mengelola node. Anda tidak perlu menggunakan alat untuk manajemen node dan kluster.
Apa yang terjadi dengan berbagai pengaturan konfigurasi untuk pembuatan keyspace seperti simple/network?
Azure Cosmos DB menyediakan distribusi global di luar kotak untuk alasan ketersediaan dan latensi rendah. Anda tidak perlu mengatur replika atau hal-hal lain. Menulis selalu awet kuorum berkomitmen di wilayah mana pun di mana Anda menulis, sambil memberikan jaminan performa.
Azure Cosmos DB memberikan jaminan performa untuk bacaan, tulisan, dan throughput. Jadi Anda tidak perlu khawatir menyentuh salah satu pengaturan konfigurasi dan secara tidak sengaja memanipulasinya. Pengaturan tersebut termasuk filter bloom, penembolokan, peluang perbaikan baca, gc_grace, dan memtable_flush_period.
Ya, TTL didukung.
Azure Cosmos DB adalah layanan platform yang membantu Anda meningkatkan produktivitas tanpa memerhatikan pengelolaan dan pemantauan infrastruktur. Misalnya, Anda tidak perlu memantau status node, status replika, gc, dan parameter OS terlebih dahulu dengan berbagai alat. Anda hanya perlu mengurus throughput yang tersedia dalam metrik portal untuk melihat apakah Anda dibatasi, lalu meningkatkan atau mengurangi throughput itu. Anda dapat:
- Memantau SLA
- Menggunakan metrik
- Menggunakan log diagnostik
Driver klien Apache Cassandra SDK yang menggunakan CQLv3 digunakan untuk program klien. Jika Anda memiliki driver lain yang Anda gunakan atau jika Anda menghadapi masalah, kirim email ke askcosmosdbcassandra@microsoft.com.
Ya, Anda dapat menggunakan sintaks reguler untuk membuat kunci partisi komposit.
Tidak, sstableloader tidak didukung.
Sekarang, Azure Cosmos DB memiliki pengalaman yang dioptimalkan untuk lingkungan cloud tanpa overhead operasi. Jika Anda memerlukan pemasangan, kirim email ke askcosmosdbcassandra@microsoft.com dengan deskripsi skenario Anda. Kami sedang mengerjakan penawaran untuk membantu memasangkan kluster Cassandra lokal atau cloud dengan API untuk Cassandra untuk Azure Cosmos DB.
Azure Cosmos DB menyediakan dua pencadangan penuh gratis yang diambil pada interval empat jam di semua API. Jadi Anda tidak perlu mengatur jadwal cadangan.
Anda dapat mengelola retensi dan frekuensi cadangan sendiri.
Jika Anda ingin memulihkan dari cadangan, kirim email ke askcosmosdbcassandra@microsoft.com atau ajukan kasus dukungan. Informasi tentang kemampuan pencadangan disediakan di artikel pencadangan dan pemulihan online secara otomatis dengan Azure Cosmos DB.
API untuk Cassandra meminjam dari platform Azure Cosmos DB yang didistribusikan secara global. Untuk memastikan bahwa aplikasi Anda dapat menoleransi penghentian pusat data, aktifkan setidaknya satu wilayah lagi untuk akun di portal Azure. Untuk informasi selengkapnya, lihat Ketersediaan tinggi dengan Azure Cosmos DB.
Anda dapat menambahkan wilayah sebanyak mungkin untuk akun dan mengontrol di mana bisa failover dengan memberikan prioritas failover. Untuk menggunakan database, Anda perlu menyediakan aplikasi di sana juga. Ketika melakukannya, pelanggan Anda tidak akan mengalami penghentian.
Tidak. API untuk Cassandra mendukung indeks sekunder, yang berulah dengan cara yang sama dengan Apache Cassandra. API tidak mengindeks setiap atribut secara default.
Ya, ini didukung. Anda dapat menemukan detail tentang cara mengaktifkannya di artikel Menggunakan Emulator Azure Cosmos DB untuk pengembangan dan pengujian lokal.
Anda dapat membaca tentang opsi migrasi dalam tutorial Memigrasikan data Anda ke API untuk Cassandra di Azure Cosmos DB .