Apache Cassandra adalah basis data yang dapat diskalakan yang ditujukan untuk mengelola volume data yang sangat besar di banyak komputer komoditas sambil mempertahankan ketersediaan tinggi dan menghindari titik kegagalan yang unik. Ini memiliki kinerja tinggi, dan ini adalah database NO-SQL.
Sebelum memahami Apache Cassandra, mari kita pahami dulu apa itu database No-SQL. Database dibagi menjadi dua jenis: SQL Database dan No-SQL Database. Database SQL memiliki format yang ditetapkan. Di sisi lain, database SQL tidak memiliki format yang ditetapkan dan mengikuti metode penyimpanan data yang berbeda.
Database adalah kumpulan data yang telah diorganisasikan secara sistematis. Mereka memungkinkan penyimpanan dan manipulasi data elektronik, dan penanganan data disederhanakan berkat database.
NoSQL Database
NoSQL database merupakan singkatan dari non SQL atau non-relasional, adalah basis data yang menyediakan sistem untuk penyimpanan dan pengambilan data. Data ini direpresentasikan dengan cara selain hubungan tabular yang terlihat di database relasional.
Sistem NoSQL terkadang dikenal sebagai database non-relasional. Bukan hanya SQL yang disebutkan untuk menekankan bahwa mereka mungkin mendukung bahasa kueri yang mirip dengan SQL.
Kesederhanaan desain, penskalaan horizontal ke kelompok komputer, dan lebih banyak kontrol atas ketersediaan adalah keuntungan dari database NoSQL. Struktur data yang digunakan oleh database NoSQL berbeda dari yang digunakan oleh database relasional secara default, memungkinkan NoSQL melakukan beberapa operasi lebih cepat. Masalahnya menentukan penerapan database NoSQL yang seharusnya dijawab, dan desain data database NoSQL terkadang lebih fleksibel daripada tabel database relasional.
Banyak database NoSQL mengkompromikan konsistensi, ketersediaan, kinerja, dan toleransi partisi. Bahasa kueri tingkat rendah, kurangnya antarmuka standar, dan investasi besar di masa lalu dalam basis data relasional semuanya merupakan batu sandungan untuk adopsi penyimpanan NoSQL.
Manfaat Menggunakan Database No-SQL
- Untuk penskalaan horizontal, database NoSQL menggunakan sharding. Sharding adalah proses mempartisi data dan mendistribusikannya ke banyak mesin sambil mempertahankan urutan data. Penskalaan horizontal memerlukan penambahan perangkat baru untuk menangani data, dan penskalaan vertikal menambahkan lebih banyak sumber daya ke mesin saat ini.
- Penskalaan vertikal lebih sulit untuk dieksekusi, sedangkan penskalaan horizontal sangat mudah. MongoDB, Cassandra, dan database penskalaan datar lainnya adalah contohnya. Karena skalabilitasnya, NoSQL dapat mengelola data dalam jumlah besar, dan saat data diperluas, skala NoSQL untuk mengakomodasinya secara efisien.
- Karena mereka tidak menggunakan skema dan tidak relasional, database NoSQL pada dasarnya adalah bentuk bebas. Karakteristik NoSQL ini lebih terkait dengan desain daripada satu bahasa yang dimaksudkan untuk menangani administrasi basis data; oleh karena itu, tergantung pada kebutuhan Anda, Anda dapat menggunakan berbagai model data dengan NoSQL.
Jenis Database No-SQL
Ada empat jenis database NoSQL: key-value pair, berorientasi kolom, berbasis grafik, dan berorientasi dokumen. Setiap kategori memiliki karakteristik dan batasannya sendiri. Tak satu pun dari database yang tercantum di atas lebih unggul dalam menyelesaikan semua kesulitan. Pengguna harus memilih database yang memenuhi persyaratan produk mereka.
Baca Juga
Apa Itu Apache Cassandra?
Apache Cassandra adalah sistem penyimpanan (database) sumber terbuka, terdesentralisasi/terdistribusi untuk menangani volume besar data terstruktur yang tersebar di seluruh dunia. Tidak ada titik kegagalan tunggal, menjadikannya layanan yang sangat tersedia.
Cassandra adalah sistem basis data yang menonjol di antara yang lain dan memiliki beberapa keunggulan dibandingkan yang lain. Kapasitasnya untuk mengelola volume besar membuatnya sangat berguna untuk bisnis besar. Alhasil, beberapa perusahaan raksasa, termasuk Apple, Facebook, Instagram, Uber, Spotify, Twitter, Cisco, Rackspace, eBay, dan Netflix, kini menggunakannya.
Cassandra sangat penting dan digunakan di banyak perusahaan besar. Mengapa Cassandra begitu penting:
- Cassandra adalah database NoSQL yang efisien dan digunakan secara ekstensif. Salah satu keunggulan utama sistem ini adalah menyediakan layanan yang sangat tersedia tanpa titik kegagalan tunggal. Ini sangat penting bagi perusahaan yang tidak mampu kehilangan data atau sistemnya mati, dan menyediakan akses dan ketersediaan yang konstan karena tidak ada titik kegagalan tunggal.
- Fitur penting lainnya dari Cassandra adalah kemampuannya untuk mengelola data dalam jumlah besar. Itu dapat mengelola volume data yang sangat besar di beberapa server secara efektif dan efisien, dan juga dapat menulis data dalam jumlah besar dengan cepat tanpa mengurangi efisiensi pembacaan.
- Strukturnya memungkinkan pengguna untuk memenuhi peningkatan permintaan yang tiba-tiba, karena memungkinkan pengguna menambahkan lebih banyak perangkat keras untuk mengakomodasi pelanggan dan data tambahan. Hal ini memudahkan penskalaan tanpa perlu mematikan atau penyesuaian signifikan. Selain itu, skalabilitas liniernya adalah salah satu hal yang membantu mempertahankan waktu respons sistem yang cepat.
- Cassandra dapat menangani data terstruktur, semi-terstruktur, dan tidak terstruktur, memberi pengguna fleksibilitas dengan penyimpanan data. Cassandra menggunakan beberapa pusat data, memungkinkan distribusi data yang mudah dimanapun atau kapanpun dibutuhkan. Sifat ACID (atomisitas, konsistensi, isolasi, dan daya tahan) didukung oleh Cassandra.
Database Cassandra
Distribusi data di seluruh dunia dan persyaratannya dicatat dalam whitepaper Cassandra, dan kemampuan untuk menduplikasi dan mendistribusikan data antar pusat data sangat penting untuk menjaga latensi pencarian tetap rendah.
Penanganan kegagalan adalah salah satu asumsi desainnya. Kegagalan bukan hanya kebetulan. Itu adalah masalah permanen yang disebabkan oleh ekspansi yang sedang berlangsung: “Menangani kerusakan infrastruktur yang terdiri dari ribuan komponen adalah cara operasi kami yang biasa… Akibatnya, sistem perangkat lunak harus dibangun sehingga kegagalan diperlakukan sebagai standar daripada pengecualian.
Fitur desain Cassandra penting lainnya adalah kemampuan untuk mempartisi data secara otomatis untuk penskalaan progresif. Sistem akan dapat menambahkan node tambahan ke cluster dan menyeimbangkan kembali data secara keseluruhan.
Cassandra memperkenalkan replikasi peer-to-peer otomatis untuk membuat sistem tersedia secara luar biasa dan memastikan ketahanan data. Dengan banyak salinan dari data yang sama yang disimpan di seluruh node (duplikasi data), data akan tetap ada meskipun beberapa node hilang. Selain itu, tidak ada satu node pun yang dapat dimatikan karena sistemnya adalah peer-to-peer, membuat sistem tidak dapat digunakan. Tidak ada titik kegagalan karena setiap transaksi menggunakan node koordinator yang terpisah.
Kemampuan Cassandra untuk menyimpan data juga merupakan fitur penting. Sistem bergantung pada penulisan file ke disk dalam keadaan tidak berubah (tidak dapat diubah) daripada terus memperbarui file data monolitik besar yang dapat diubah (dapat diubah). Jika data untuk catatan database tertentu berubah, pembaruan akan ditulis ke file baru yang tidak dapat diubah. Pemadatan mengumpulkan sejumlah file yang tidak dapat diubah ini (masing-masing mungkin memiliki data yang berlebihan atau usang) dan menulis file tabel komposit tunggal baru dari data terbaru yang dipicu oleh tingkat periodik, ukuran, atau modifikasi file. Sorted Strings Tables, atau SSTables, adalah format file data yang tidak dapat diubah ini.
Cara Kerja Cassandra
Konsep arsitektur dasar untuk Cassandra adalah skalabilitas, kinerja, dan ketersediaan berkelanjutan. Cassandra memiliki arsitektur cincin tanpa tuan, yang tidak memiliki hubungan tuan-budak.
Semua node di Cassandra melayani tujuan yang sama. Tidak ada gagasan tentang node pengontrol, dan semua node berkomunikasi satu sama lain melalui protokol yang terdistribusi dan dapat diskalakan. Bacaan disalurkan ke node tertentu, dan penulisan tersebar di seluruh node menggunakan fungsi hash.
Cassandra menyimpan data dengan mendistribusikannya secara merata di antara kelompok node-nya. Setiap node bertanggung jawab atas sebagian data, dan partisi data adalah proses penyebaran data antar node.
Data Modelling di Cassandra
Cassandra adalah database penyimpanan kolom dengan sejumlah besar kolom. Ini menggunakan toko baris yang dipartisi dengan konsistensi yang dapat dikonfigurasi sebagai model datanya. Baris disusun menjadi tabel; kunci partisi adalah komponen pertama dari kunci utama tabel; baris dikelompokkan di dalam partisi dengan kolom kunci yang tersisa. Selain kunci utama, kolom lain dapat diindeks satu per satu. Tabel dapat dibuat, dibuang, dan diubah saat runtime tanpa memengaruhi pembaruan atau kueri.
Joins dan subquries tidak dimungkinkan di Cassandra. Di sisi lain, Cassandra mendorong denormalisasi dengan fitur seperti koleksi. Dalam RDBMS, keluarga kolom (bernama “tabel” dari CQL3) menyerupai tabel. Baris dan kolom dimuat dalam kelompok kolom, dan kunci baris mengidentifikasi setiap baris satu per satu. Ada banyak kolom di setiap baris, masing-masing dengan nama, nilai, dan stempel waktu. Baris berbeda dalam keluarga kolom yang sama tidak harus berbagi kumpulan kolom yang sama, dan kolom dapat ditambahkan ke satu atau banyak baris kapan saja, tidak seperti tabel di RDBMS.
Baca Juga
Cassandra CQL
Cassandra memiliki Cassandra query language shell (cqlsh) yang dapat digunakan pengguna untuk terhubung dengannya. Kami dapat menggunakan shell ini untuk menjalankan Cassandra Query Language (CQL). CQL adalah bahasa yang diketik yang mendukung berbagai tipe data, termasuk tipe data asli, koleksi, yang ditentukan pengguna, tuple, dan kustom.
CQL menyimpan data dalam tabel dengan baris dan kolom, seperti halnya SQL. Banyak interaksi dan implementasi serupa, seperti mendapatkan semua baris dalam database dan mengontrol hak dan sumber daya entitas. CQL seharusnya sederhana jika Anda tahu cara menggunakan perintah SQL seperti SELECT, INSERT, UPDATE, dan DELETE.
Namun, ada beberapa perbedaan. Dalam SQL, misalnya, sebuah kolom dapat digunakan dalam klausa WHERE, tetapi hanya kolom yang didefinisikan secara ketat dalam kunci utama yang dapat digunakan sebagai kolom pembatas dalam CQL. Selain itu, setiap kueri harus memiliki setidaknya satu kunci partisi yang dideklarasikan dalam CQL.