Persyaratan Layanan Penyimpanan
Layanan penyimpanan Datomic umumnya harus memenuhi 3 persyaratan:
- Terapkan semantik penyimpanan nilai kunci :akses baca/tulis yang efisien menggunakan nilai kunci yang diindeks
- Mendukung pembacaan yang konsisten . misalnya membaca tulisan Anda sendiri. Idealnya, bacaan tanpa pertengkaran/bebas kunci.
- Mendukung penempatan bersyarat . misalnya penguncian optimis + isolasi snapshot.
Datomic menggunakan layanan penyimpanan untuk menyimpan blok datom yang diurutkan dan dikompresi, mirip dengan cara sistem basis data tradisional menggunakan sistem file dan persyaratan di atas cukup banyak merupakan API antara layanan penyimpanan yang mendasarinya dan Datomic. Jadi pilihan dalam layanan penyimpanan bergantung pada seberapa baik layanan tersebut mendukung ketiga persyaratan tersebut .
Menulis Skalabilitas
Datomic biasanya tidak memberikan banyak tekanan tulis pada layanan penyimpanan yang mendasarinya karena hanya ada satu komponen yang menulisnya, Transactor. Selain itu, Datomic menggunakan pekerjaan pengindeksan latar belakang untuk mengintegrasikan kebaruan ke dalam penyimpanan setelah cukup banyak terakumulasi (secara default ~32MB tetapi dapat dikonfigurasi) yang selanjutnya mengurangi beban tulis konstan. Satu-satunya hal yang segera ditulis oleh Datomic adalah log transaksi.
Baca Skalabilitas
Datomic menggunakan beberapa lapisan caching yaitu memcached dan peer cache sehingga dalam keadaan ideal yaitu ketika working set cocok di memori, sistem juga tidak akan memberikan banyak tekanan baca.
Pemuatan Sistem
Jika sistem Anda tidak memerlukan besar skalabilitas tulis dan data aplikasi Anda cenderung muat di memori, maka pilihan layanan penyimpanan tertentu tidak relevan kecuali, tentu saja, untuk kemampuan operasionalnya (cadangan, alat admin, dll.) yang tidak ada hubungannya dengan Datomic.
Jika, di sisi lain, sistem Anda memang membutuhkan besar menulis skalabilitas atau Anda memiliki banyak rekan, masing-masing bekerja dengan lebih banyak data daripada yang dapat ditampung dalam memori mereka (memaksa banyak segmen data dibawa dari penyimpanan), Anda akan memerlukan sistem penyimpanan yang dapat menskalakan secara horizontal mis. DinamoDB. Seperti yang disebutkan di salah satu komentar, jika Anda membutuhkan skalabilitas penulisan yang berubah-ubah, Datomic bukanlah sistem yang tepat untuk Anda.