Sunday, July 1, 2018

Spring boot + Cassandra



Pengenalan Cassandra

Cassandra atau lengkapnya Apache Cassandra adalah salah satu produk open source yang dirancang untuk menangani jumlah data yang sangat besar yang tersebar di banyak, Cassandra merupakan salah satu implementasi dari NoSQL, sedangkan NoSQL merupakan  konsep penyimpanan database dinamis yang tidak terikat pada relasi-relasi tabel yang kaku seperti RDBMS.

Sejarah Cassandra
1. Cassandra dikembangkan di Facebook untuk daya fitur Inbox Pencarian ( Jeff Hammerbacher).
2. Opensource oleh Facebook pada tahun 2008.
3. Menjadi Apache incubator proyek di tahun 2009
4. Dan Facebook ditinggalkan Cassandra pada akhir 2010 ketika mereka membangun Facebook platform Messaging pada HBase.

Nah mungkin saat ini banyak NoSQL yang opensourc sama juga seperti Cassandra berikut ini adalah beberapa fitur database Cassandra :
1. Elastic Scalability
2. Penyimpanan data yang fleksibel 
3. Distribusi data yang mudah
4. Menulis cepat

Makin bingung kan ? kapan kita menggunkan cassandra dan kapan kita menggunakan MongoDB . nah mungkin beberapa perbandingannya bisa kita cek di bawah ini :
Menurut saya cassandra lebih mudah jika kita terbiasa menggunakan database SQL karna query database cassandra yang di sebut CQL itu querynya hampir sama dengan query SQL, waah hehe .... berbeda dengan query MongoDB yang sangat berbeda dengan query SQL.

Kembali ke tema kita yaitu spring boot + cassandra, nah skrng kita mulai project spring bootnya .
1. Siapkan project spring-boot
2. Instal Cassandra, bisa melalui datastax
Tambahkan dependency cassandra di project Spring kita :

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-cassandra</artifactId>
</dependency>

kemudian buka datastaxnya kita buat keyspace(bisa di sebut juga sebagai nama databasenya/schema) dan buka cassandra CQL Shell


Kita buat Keyspacenya :
CREATE KEYSPACE toko WITH replication = {‘class’:’SimpleStrategy’,’replication_factor’:1};
Configurasi di project spring : application.properties

spring.data.cassandra.keyspace-name=test_cassandra
spring.data.cassandra.contact-points=localhost
spring.data.cassandra.port=9042

nah untuk kali ini kita mencoba fitur MAP di cassandra, buat domain seperti berikut:


kita buat attribute imageurl sebagai MAP

kemudian untuk repositorynya kita gunakan CQL ,
query CQL insert :
INSERT INTO produk(kode,description,imageurl,price) values(:kode,:description,:imageurl,:price)

Dan ini query CQL update :
UPDATE produk SET description = :description,price = :price,imageurl = imageurl + :imageurl where kode=:kode



berikut payload untuk insert data :


Nah jadi atribute imageurl yang berisi map1 dan map2 bisa lebih flexible.
Sekarang kita get datanya :


Dari gambar diatas yang kita get melalu postman dapat terlihat perbedaan data di atribute imageurl data pertama memiliki 1(satu) atribute, dan data kedua memiliki 2(dua) atribute. dan kita cek data yg telah kita insert tadi melalui cql shell 


*describe keyspaces = untuk menampilkan keyspace yang ada


Kesimpulan

jadi NoSQL mungkin lebih flexible tapi perlu di ingat data seperti ini kurang baik untuk sistem sistem yang mempunyai banyak transaksi yang berelasi karna data kurang terstruktur, ya mungkin harus di lihat sejauh mana kebutuhan dalam penggunaan NoSQL.


No comments:

Post a Comment