Column-store Database Cassandra
Cassandra adalah salah satu produk open source untuk manajemen database yang didistribusikan oleh Apache. Database Cassandra atau lengkapnya Apache Cassandra adalah pilihan yang tepat ketika dibutuhkan database yang scalable dan mengelola data terstruktur yang berkapasitas sangat besar (Big Data).
Database Apache Cassandra merupakan salah satu implementasi dari database NoSQL seperti MongoDB.
Untuk memproses datanya, Cassandra menggunakan bahasa sendiri yang mirip dengan SQL yaitu Cassandra Query Language (CQL).
195410194-MARIO-IF4-STMIK AKAKOM Yogyakarta
Mengapa perlu mempelajari database Cassandra?
Database Cassandra merupakan database yang gratis, open source dan memiliki kemampuan dalam menyimpan data dengan jumlah yang sangat besar, juga puluhan perusahaan besar telah mempercayakan Cassandra sebagai salah satu penunjang kerja mereka diantaranya :
Cassandra juga memiliki keunggulan-keunggulan seperti berikut :
- Elastic Scalability, penambahan kapasitas penyimpanan dapat ditambah kapan saja dan tanpa terikat pada hardware dan lokasi yang sama. Jadi bisa saja data 1 disimpan di Indonesia, sedangkan data 2 disimpan di negara lain dengan server yang berbeda baik hardware maupun platformnya.
- Penyimpanan data yang fleksibel, Cassandra mengakomodasi semua format data yang ada, seperti data terstruktur, semi-terstruktur, dan tidak terstruktur. Secara dinamis dapat mengakomodasi perubahan struktur data sesuai dengan kebutuhan.
- Distribusi data yang mudah, Cassandra memberikan fleksibilitas untuk mendistribusikan data mana yang dibutuhkan dengan mereplikasi data di beberapa pusat data.
- Menulis cepat, Cassandra dirancang untuk berjalan pada hardware yang minimum (low end). Database melakukan fast write (menulis cepat) dan dapat menyimpan ratusan TeraByte data tanpa mengorbankan efisiensi read (membacanya).
Cassandra didesain awal untuk mengatasi data dengan ukuran yang sangat besar (Big Data) yang terdiri dari banyak titik (node) yang terpisah-pisah dan saling bekerjasama nyaris tanpa ada kesalahan.
Cassandra memiliki sistem terdistribusi peer-to-peer di seluruh node, dan data didistribusikan diantara semua node dalam sebuah cluster. Semua node pada sebuah cluster memainkan peran yang sama. Semua node independen dan pada saat yang sama saling berhubungan ke node lain. Setiap node dapat menerima permintaan membaca dan menulis, terlepas darimana data sebenarnya terletak di cluster. Ketika sebuah node performanya turun, permintaan membaca atau menulis dapat dilayani dari node lain dalam jaringan.
Replikasi data di Cassandra disebut dengan istilah Gossip Protocol dimana satu atau lebih node dalam sebuah cluster sebagai replika untuk bagian tertentu dari data. Jika terdeteksi bahwa beberapa node datanya out of date, Cassandra akan mengembalikan nilai terbaru untuk klien. Setelah mendapatkan nilai kembalian terbaru, Cassandra melakukan perbaikan membaca di latar belakang untuk memperbarui nilai-nilai yang out of date.
Komponen Utama Cassandra
- Node : Server tempat menyimpan data.
- Data Center : Kumpulan dari beberapa node.
- Cluster : Kumpulan dari beberapa data center.
- Commit Log : Log dari proses penulisan di Cassandra, yang berfungsi juga sebagai Crash Recovery Mechanism.
- Mem-Table : memory-resident data structure. Setelah menulis commit log, Cassandra melakukan penulisan disini.
- SS-Table : Disk file untuk data yang dikeluarkan dari mem-table ketika isinya mencapai nilai ambang batas.
- Bloom filter : Algoritma yang cepat, tidak determinik, untuk menguji apakah suatu elemen adalah anggota dari suatu set. Ini adalah jenis cache khusus. Filter Bloom diakses setelah setiap permintaan.
- CQL : Cassandra Query Language, adalah bahasa perintah query di Cassandra.
Kapan menggunakan database Cassandra?
Penggunaan database Apache Cassandra akan sangat efisien saat dipakai untuk menyimpan data dalam skala yang besar (Big Data) dan juga diterapkan pada aplikasi yang menggunakan sistem data terpusat (Data Center).
Kekurangan Cassandra
- Semakin banyak jumlah node yang digunakan serta banyak baris data yang dimasukkan akan menyebabkan proses transaksi data membutuhkan waktu yang semakin besar.
- Cassandra tidak segera menghapus data yang ditandai untuk dihapus dari disk, tapi penghapusan dilakukan saat pemadatan data (maintains data).
- Data yang terhapus dapat muncul kembali jika tidak dilakukan perbaikan secara rutin.
- Cassandra hanya dapat memulihkan data dari snapshot saat ada skema tabel, maka sebaiknya kita juga membuat cadangan skema.
Instalasi Apache Cassandra di Linux Ubuntu 20.04
Install Java OpenJDK 8
Install OpenJDK 8 dengan mengeksekusi perintah berikut di terminal
$ sudo apt install openjdk-8-jdk
Pastikan java telah terinstall dengan perintah berikut
$ java -version
Install Apache Cassandra
Pertama install package apt-transport-https untuk mengijinkan akses repositori dari protokol https
$ sudo apt install apt-transport-https
Import GPG key menggunakan perintah wget seperti berikut
$ wget -q -O - https://www.apache.org/dist/cassandra/KEYS | sudo apt-key add -
Tambahkan repositori Apache Cassandra kedalam file sources list system seperti berikut
$ sudo sh -c 'echo "deb http://www.apache.org/dist/cassandra/debian 311x main" > /etc/apt/sources.list.d/cassandra.list'
Update list package
$ sudo apt update
Install Cassandra
$ sudo apt install cassandra
Biasanya, Apache Cassandra akan otomatis memulai sendiri. Konfirmasi statusnya menggunakan perintah berikut
$ sudo systemctl status cassandra
Jika Apache Cassandra sedang running maka outputnya akan seperti berikut
Login ke Cassandra terminal
$ cqlsh
CREATE KEYSPACE
cqlsh> CREATE KEYSPACE kampus WITH REPLICATION = {'class':'SimpleStrategy','replication_factor':3};
cqlsh> USE kampus;
CREATE TABLE
cqlsh:kampus> create table mahasiswa(id_mahasiswa uuid,nim_mahasiswa int,nama_mahasiswa varchar,email list<text>,primary key(id_mahasiswa));
INSERT
cqlsh:kampus> insert into mahasiswa( id_mahasiswa, nim_mahasiswa, nama_mahasiswa, email) values( now(), 195410194, 'MARIO', ['ardamomo3@gmail.com','195410194@students.akakom.ac.id'] );
SELECT
cqlsh:kampus> select * from mahasiswa;