Jika Anda tertarik pada manfaat yang bisa Anda dapatkan dari ketidakmampuan dalam suatu basis data, atau setidaknya suatu basis data yang menawarkan ilusi ketidakmampuan, periksa Datomic.
Datomic adalah Basis Data yang ditemukan oleh Rich Hickey dalam aliansi dengan Think Relevance, ada banyak video yang menjelaskan arsitektur, tujuan, dan model data. Cari infoq, satu khususnya berjudul Datomic, Database as a Value . Dalam kebingungan Anda dapat menemukan keynote yang diberikan oleh Rich Hickey di konferensi euroclojure pada tahun 2012. confreaks.com/videos/2077-euroclojure2012-day-2-keynote-the-datomic-architecture-and-data-model
Ada pembicaraan di vimeo.com/53162418 yang lebih berorientasi pengembangan.
Ini ada satu lagi dari stuart halloway di.pscdn.net/008/00102/videoplatform/kv/121105techconf_close.html
- Datomic adalah basis data fakta dalam waktu, yang disebut datums, dalam 5-tupel [E, A, V, T, O]
- E Entity id
- Sebuah nama Atribut dalam entitas (dapat memiliki ruang nama)
- Nilai V atribut
- T ID Transaksi, dengan ini Anda memiliki gagasan tentang waktu.
- O Satu operasi penegasan (nilai sekarang atau saat ini), penolakan (nilai masa lalu);
- Menggunakan format data sendiri, yang disebut EDN (Extensible Data Notation)
- Transaksi adalah ASAM
- Menggunakan datalog sebagai bahasa kueri, yang bersifat deklaratif sebagai kueri SQL + rekursif. Kueri diwakili dengan struktur data, dan diperluas dengan bahasa jvm Anda, Anda tidak perlu menggunakan clojure.
- Basis data dipisahkan dalam 3 layanan terpisah (proses, mesin):
- Transaksi
- Penyimpanan
- Mesin Pertanyaan.
- Anda dapat secara terpisah, skala setiap layanan.
- Ini bukan open source, tetapi ada versi gratis (seperti dalam bir) dari Datomic.
- Anda dapat menyatakan skema yang fleksibel.
- set atribut terbuka
- tambahkan atribut baru kapan saja
- tidak ada kekakuan dalam definisi atau kueri
Sekarang, karena info disimpan sebagai fakta dalam waktu:
- semua yang Anda lakukan adalah menambahkan fakta ke basis data, Anda tidak pernah menghapusnya (kecuali jika diharuskan oleh hukum)
- Anda bisa menyimpan semuanya selamanya. Query Engine, tinggal di server aplikasi sebagai basis data dalam memori (untuk bahasa jvm, bahasa non-jvm memiliki akses melalui REST API.)
- Anda dapat meminta pada waktu di masa lalu.
Basis data adalah nilai, dan parameter ke mesin kueri, QE mengelola koneksi dan caching. Karena Anda dapat melihat db sebagai nilai, dan struktur data yang tidak dapat diubah dalam memori, Anda dapat menggabungkannya dengan struktur data lain yang dibuat dari nilai "di masa depan" dan meneruskannya ke QE & kueri dengan nilai masa depan, tanpa mengubah database aktual .
Ada proyek open source dari Rich Hickey, yang disebut codeq , Anda dapat menemukannya di github Datomic / codeq, yang memperluas model git, dan menyimpan referensi ke objek git dalam database bebas datomik, dan membuat kueri kode Anda, Anda dapat melihat contoh cara menggunakan datomic.
Anda dapat menganggap datomik sebagai ACID NoSQL, dengan datum Anda dapat memodelkan tabel atau dokumen atau Kv-store atau grafik.