Perkembangan di era pengolahan data saat ini memunculkan paradigma baru untuk menjawab tantangan teknologi basis data. Beberapa contoh aplikasi berbasis web seperti Google, Facebook, Amazon, dan Youtube menyimpan dan mengolah data hingga gigabyte bahkan dapat mencapai hitungan petabyte setiap harinya. Ukuran data yang sangat besar selalu memunculkan permasalahan dari segi skalabilitasnya. Era inilah yang dimaksud dengan big data, yaitu  data yang melebihi proses kapasitas dari konvensi sistem basis data yang ada  (Dumbill, 2012). Karakteristik big data sendiri bisa beraneka ragam mulai dari jumlah massa data, keberagaman berbagai jenis data dalam satu sistem basis data, kecepatan data yang harus diproses agar dapat memenuhi permintaan pengguna, dan dapat juga berarti ketidakpastian data. Salah satu cara yang dapat menjawab permasalahan tersebut adalah dengan menggunakan NoSQL (Not Only SQL). NoSQL merupakan sebuah paradigma baru dalam sistem basis data yang merealisasikan aturan-aturan konsistensi yang terdapat pada basis data relasional. Secara umum, NoSQL dibagi menurut format penyimpanannya menjadi Document, Graph, Key-Value, dan berbagai tipe lain seperti tabular dan tuple store.

ArangoDB (https://www.arangodb.com/)

Kasus yang sering terjadi adalah ketika harus melakukan sinkronisasi data pada beberapa basis data yang berbeda-beda. Berbeda dalam arti dapat berbeda jenis basis data, IP server, dan berbeda instance dalam jenis server maupun basis data yang sama. Sistem basis data dengan multi-model tidak hanya mendukung antar model yang berbeda itu saling bertukar data akan tetapi juga mendukung ad hoc queries saat penyimpanannya. Contoh kasus yang ada ketika basis data yang telah kita buat adalah single-model basis data yang hanya mendukung format document, bagaimana jika aplikasi yang kita buat hanya mendukung data dengan format Graph? Maka akan menimbulkan permasalahan saat replikasi data. Solusinya adalah  menggunakan basis data kedua yang dapat mendukung format aplikasi kita yaitu Graph.   Padahal penambahan server baru untuk keperluan dukungan aplikasi membutuhkan biaya yang tidak sedikit dan sulit dalam pengelolaannya. Maka dari itu beberapa  format basis data telah dipersiapkan untuk menjawab permasalahan tersebut. Salah satu di antaranya adalah ArangoDB.

ArangoDB merupakan basis data yang melayani dokumen untuk klien. Dokumen-dokumen tersebut kemudian dikirimkan menggunakan JSON (Java Script Object Notation) melalui koneksi TCP, dengan menggunakan protokol HTTP. sedangkan antarmuka pada ArangoDB disebut dengan Aardvark, menyediakan GUI yang mudah digunakan. Selain itu, juga disediakan sebuah shell yang interaktif, disebut Arangosh. Kemudian ada juga yang disebut driver yang dapat mempermudah penggunaan sistem basis data di berbagai platform dan bahasa pemrograman.

Cara kerja dari ArangoDB tergolong mudah karena dapat dilakukan berbasis pada GUI (Graphic User Interface) selain pada shell dan HTTP API. Pemanfaatan GUI tentu akan memudahkan pengguna yang tergolong baru dalam penerapan basis data ini. Untuk koneksi ke ArangoDB dapat menggunakan Java, Phyton, Node.js, dan PHP. Selain itu, ArangoDB memiliki fitur yang dinamakan Foxx, yang mana memungkinkan pengguna untuk dapat membuat web services dengan sintaks node.js dan sudah terhubung langsung ke ArangoDB. Bahasa query yang digunakan pada ArangoDB dinamakan Arango Query Language (AQL). Ada beberapa kesamaan antara AQL dengan SQL (Structured Query Language), meskipun keduanya memiliki model data yang berbeda dalam sistem basis data. Perbedaaan yang paling menonjol adalah konsep loop (perulangan) di dalam AQL sehingga lebih mirip dengan bahasa pemrograman. Ini sesuai dengan model tanpa skema yang lebih natural, sehingga membuat pemrograman query tetap powerful serta tetap mudah dipelajari dan diingat.

ArangoDB mendukung tiga model data: key/value, dokumen, dan graf. Terdapat cara  yang berbeda juga untuk proses scale dari masing-masing model. Penyimpanan key/value lebih mudah daripada penyimpanan dokumen atau dokumen dengan join. Sedangkan penyimpanan dokumen lebih baik daripada graf. Implementasi dari penyimpanan key/value sebagai document collection selalu memiliki primary key. Index pada collection selalu bersifat seperti penyimpanan key/value yang sederhana. Hal ini adalah data model yang paling mudah untuk proses scale. Operasi yang paling rawan pada konteks ini adalah  pencarian, penyisipan, dan pembaharuan pasangan key/value. Jika atribut kunci adalah satu-satunya atribut sharding, maka sharding dilakukan dengan primary key dan akan diterapkan pada semua operasi dengan skala linear. Lalu bagaimana yang terjadi apabila sharding dilakukan dengan shard key yang berbeda-beda? Maka yang terjadi adalah pencarian pada single-key akan melibatkan semua shard key dan hal ini bukan termasuk scale linear.

Keunggulan-keunggulan yang dimiliki ArangoDB sebagai basis data multi-model dengan skalabilitas yang baik tentu tidak dimiliki jenis basis data single-model. Sebagai contoh untuk basis data single-model dengan penyimpanan dokumen pada MongoDB. Beberapa hal yang tidak dapat dilakukan MongoDB diantaranya: Multi model, joins, declarative query language, transaksi yang kompleks, ekstensi. Sebagai dokumen basis data single-model MongoDB tidak mendukung data model yang lain, contohnya scale joins pada collection dan instance yang berbeda-beda tidak didukung MongoDB sebab skalabilitas bergantung pada use case. Selain itu MongoDB menggunakan sintaks JSON untuk proses query, hal ini tidak mendukung declarative query languange. Berbeda dengan ArangoDB yang mengembangkan AQL untuk query yang kompleks. ArangoDB sangat tepat digunakan untuk skalabilitas dan performa yang tinggi.

Kapan saat yang tepat menggunakan ArangoDB?

  • Ketika ingin tetap fleksibel dalam mengembangkan ide yang baru Dalam mengembangkan produk atau layanan baru, kita mungkin belum memahami seluruh requirement (kebutuhan sistem) dari awal. Perubahan produk atau kebutuhan fitur dapat menyebabkan perubahan pada model data pada sistem. Dengan basis data multi-model, kita dapat dengan mudah bereaksi terhadap perubahan tersebut.
  • Ketika membangun perangkat lunak dalam sebuah tim ArangoDB memungkinkan tim untuk bekerja sama dalam suatu kasus. Misalnya, satu tim mulai mengerjakan aplikasi yang memerlukan dokumen. Dalam proses pengembangan, anggota tim ini mempelajari tip dan trik tentang penggunaan ArangoDB. Tim kedua mungkin dapat mengerjakan basis data graf. Kedua tim tersebut dapat daling bertukar pengalaman mereka dengan ArangoDB dan mengoptimalkan penggunaannya. Hal ini dapat memperpendek waktu belajar dan sekaligus dapat memperdalam kinerja tim serta dapat mempercepat waktu untuk mendapatkan suatu solusi permasalahan.
  • Ketika ingin menggabungkan model data yang berbeda dalam satu query ArangoDB didesain agar pengguna lebih mudah untuk mengembangkan aplikasi modular/ multi model. Sehingga kita tidak perlu membangun dua atau tiga basis data model tunggal yang berisiko menciptakan masalah koneksi antar basis data tersebut.