Why mongo?
Teknologi
akan terus berkembang, sampai kapan? Saya rasa tidak akan ada habisnya. Begitu
juga dengan teknologi “basis data”, MongoDB. Si mongo merupakan varian basis
data NoSQL yang lahir untuk menjawab kebutuhan teknologi big data. Beberapa fitur
unggulan yang ditawarkan mongoDB sebagai berikut:
- Big Data (untuk data volume besar, variatif dan proses set get yang sangat cepat)
- Fast feature development (high transaction rate dan scalability)
- Flexible deployment dan ready for cloud
Selain itu
fitur yag tidak disentuh oleh RDBMS yang kini dikembangkan NoSQL yaitu
kemampuan horizontal scalability tanpa kehilangan performa dan masih dalam
keluaga query language. Perbandingan antara RDBMS dan NoSQL khususnya mongoDB
antara lain:
- NoSQL membuat kita berfikir tidak hanya tentang table dan relasi, tetapi bagaimana keselurah struktur data tanpa sebuah relasi.
- NoSQL tidak untuk transaksi data yang kompleks.
- RDBMS mempunyai Functionality yang lengkap sedangkan NoSQL mempunyai Performa yang cepat.
- Tidak ada yang lebih baik antara RDBMS dan NoSQL
Beberapa point
diatas menimbulkan rasa penasaran bagaimana jika diimplementasikan pada
Spring-boot.
Gambar 1. Contoh JSON
Jenis-jenis basis data NoSQL ada 4 :
- Key-Value Store {key,value}
- Document-based Store {all}
- Column-based Store
- Graph-based
Gambar 1 ditunjukan menunjukan bagaimana
bagaimana merepresentasikan database pada NoSQL, pada object “key-value”, di
dalam nya terdapat variable key dan value dimana key harus unique supaya tidak
terjadi objek ganda. Untuk yang document based, merujuk pada object “document-based”
yang mirip dengan bagaimana sebuah dokumen disimpan. Sedangkan pada
“column-based”, baik “key-value” dan “document-based” dapat disimpan pada
column yang kita kehendaki. Graph based dijelaskan pada gambar 2, sebelah kiri merupakan skema
bagaimana struktur database RDBMS dan gambar 2 kanan adalah graph based pada
noSQL yang mengadopsi sifat graph dimana terdapat node dan edges untuk
menyimpan dan merepresentasikan data. Kita bebas menyimpan data dimanapun kita
mau bahkan kita dapat menyimpan D1 pada data D2.
Gambar 2. Graph based
Cukup jelas
kan? Sekarang kita akan masuk ke init eh maksud saya inti dari penulisan ini
yaitu bagaimana jika MongoDB digunakan pada Spring-boot….. langkah selanjutnya
yaitu memasang mongoDB nya dulu guys, untuk langkah dan penjelasan detailnya bisa
di-intip di website resminya mongo : https://docs.mongodb.com/manual/installation/ tetapi untuk yang nggak mau
ribet(khusus mac user) ada alternatifnya lhooo, cukup pasang “homebrew” dan
update, setelah itu jalankan command “brew install mongodb” maka si mongo akan terinstall.
Jangan lupa tambahken folder mkdir -p /data/db beserta permission read writenya.
Langkah
selanjutnya adalah
1.
Install
java IDE
2.
Install
maven
3.
Download
basic spring-boot project
Basic
project dapat di download di https://spring.io/guides/gs/rest-service kemudian tambahkan dependency di
file pomnya seperti dibawah:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
nah, untuk
mencoba apakah database sudah work fine, kita jalankan servernya dulu dengan
perintah mongod pada
terminal sampai mengeluarkan output seperti gambar 3a. Setelah itu
cek bahwa client juga work fine, via terminal kita eksekusi perintah mongo –host (gembar 3b), karena kita menjalankan client di localhost maka cukup masukan
perintah mongo.
Gambar 3a. Output server mongo
Gambar 3b. Client db mongoDB
Jika sudah
seperti diatas maka si mongo sudah aktif, selanjutnya , setting spring-boot.
Tambahkan di application.properties code dibawah:
# mongodb configuration
spring.data.mongodb.repositories.enabled=true
spring.data.mongodb.uri=mongodb://localhost/nostra
spring.data.mongodb.database=nostra
spring.data.mongodb.repositories.enabled=true
spring.data.mongodb.uri=mongodb://localhost/nostra
spring.data.mongodb.database=nostra
Dan jika
dijalankan tidak ada error, maka spring-boot sudah menggunakan mongoDB. untuk GUI mongoDB bisa menggunakan https://robomongo.org/
Gambar 4a. Implementasi tabel hibernate dengan mongoDB
Gambar 4b. Repository mongo
Gambar 4c. Tabel si mongoDB
Spring-boot
menggunakan hibernate untuk akses ke databasenya, anotasi @Document digunakan
untuk menbuat table(Gambar 5a) dan hasil pada database ditampilkan pada Gambar
5b. Anatosi @Id akan menghasilkan nilai unik 12 buah karacter hexadecimal(4
timestamp, 3 machine id, 2 proccess id, 3 simple increment). Untuk repository
yang digunakan(Gambar 5c) menggunakan mongorepository, sayangnya repository
belum lengkap, baru tersedia untuk insert dan select, sehingga untuk operasi
lain masih membutuhkan tenaga ekstra.
Kesimpulan
Spring-boot
bisa menggunakan mongoDB meskipun fitur-fitur yang tersedia di hibernate belum
lengkap diimplementasikan. Kekurangan lain yaitu, sifat mongoDB yang fleksibel dalam
penyimpanan, harus mematuhi sifat hibernate dimana setiap objek harus di-deklarasikan
secara lengkap, sehingga kelebihan si mongoDB tidak terbawa pada spring-boot.
Reference:
•https://www.3pillarglobal.com/insights/exploring-the-different-types-of-nosql-databases
•http://www.channelfutures.com/cloud-services/limitations-nosql-database-storage-why-nosqls-not-perfect
•https://www.mongodb.com/
•http://www.channelfutures.com/cloud-services/limitations-nosql-database-storage-why-nosqls-not-perfect
•https://www.mongodb.com/
No comments:
Post a Comment