Saturday, May 6, 2017

Resiko Menggunakan ElasticSearch Sebagai Database Utama

Halo gengs, kali ini saya akan sedikit membahas mengenai resiko ketika menggunakan elasticsearch sebagai database utama.

Bagi yang belum tau apa itu elasticsearch, berikut saya jelaskan secara singkat:
elasticsearch, merupakan open source "search and analytics engine", yang biasa digunakan untuk log analysis, real time application monitoring, click stream analytics, text search dll.

Perlu diketahui juga, elasticsearch menyimpan datanya dalam bentuk json (insert data pada elasticsearch disebut indexing).

Teman teman mungkin sudah tau performa elasticsearch dalam melakukan full text search sangatlah mumpuni, ditambah berbagai feature yang sangat membantu seperti tokenizing, stemming dll pun terdapat dalam elasticsearch.

Tapi, apakah menggunakan elasticsearch sebagai database utama adalah pilihan bijak?, untuk beberapa kasus ternyata jawabannya adalah tidak.

Beberapa forum diskusi seperti quora, stackoverflow dll menyarankan untuk tidak menggunakan elasticsearch sebagai database utama dikarenakan mungkinnya kelihangan data lebih tinggi dibanding database lain (misal mongodb). Berikut video yang menjelaskan mungkinnya kehilangan data pada elasticsearch (mulai pada 13:55): link

Berikut juga beberapa diskusi yang menjelaskan, mengapa sebaiknya anda tidak menggunakan elasticsearch sebagai database utama:
  • https://www.quora.com/Why-shouldnt-I-use-Elasticsearch-as-my-primary-datastore
  • https://www.quora.com/What-are-the-advantages-of-ElasticSearch-over-Database-I-know-its-fast-and-I-have-used-its-API-for-searching-but-why-should-I-completely-move-from-DB-to-ES
Jadi dapat disimpulkan sebaiknya penggunaan elasticsearch hanya sebatas searching, analytics dan indexing saja, untuk masalah CRUD sebaiknya menggunakan database lain karna sebenarnya elasticsearch bukanlah sebuah database, tetapi search and analytics engine. 

Salah satu solusi yang dapat dilakukan untuk mengatasi masalah ini adalah, kita melakukan insert data ke database kemudian melakukan replikasi data yang ada di database tadi ke elasticsearch.

Berikut ini merupakan contoh replikasi data dari mongoDB ke elasticsearch menggunakan mongo-connector yang dokumentasinya bisa dilihat di sini.
Data yang digunakan merupakan hasil scraping tari tribun jabar. Script nya dapat anda lihat di sini 
jumlah data yang ada di mongoDB
index yang ada di elasticsearch


tampilkan data di mongoDB

tampilan data di elasticsearch

Demikian artikel kali ini, terima kasih telah membaca tulisan saya sampai selesai. Mohon maaf jika ada kesalahan.  ...