Что это?
Распределенная БД с поддержкой:
- ACID-транзакций;
- Join'ов;
- Datalog как языка запросов.
Данные
- Иммутабельны;
- Хранятся как коллекция фактов;
- Представлены в виде Datom.
Datom
- entity/attribute/value/timestamp
- Datom никогда не изменяется;
- Datom'ы можно добавлять и удалять.
[entity attribute value t ]
...
[ 100 :person/name "Alexandr" 102 ]
[ 101 :lecture/title "Datomic" 102 ]
[ 101 :lecture/year 2013 102 ]
[ 101 :lecture/author 100 102 ]
...
Транзакции
Используется Datalog
[:find ?e
:where
[?e :person/name "Alexandr" _]]
[:find ?title
:where
[?e :lecture/year 2013]
[?e :lecture/title ?title]]
http://learndatalogtoday.org/
[:find ?title
:in $ [?director ?actor]
:where
[?d :person/name ?director]
[?a :person/name ?actor]
[?m :movie/director ?d]
[?m :movie/cast ?a]
[?m :movie/title ?title]]
[:find ?name
:where
[?p :person/name ?name]
[(.startsWith ?name "M")]]
Data storage
- В памяти;
- SQL Database;
- Dynamo DB;
- Infinispan.
+
- Простое описание схемы;
- Отсутствие необходимости в миграциях;
- Удобная консоль для новичков;
- С недавнего времени Pro Starter бесплатно.
К слову о ценах
- Pro Starter (2 peers, без memcached): бесплатно;
- Pro 5 processes: 3000 долларов/год;
- ...
- Pro 30 processes: 16000 долларов/год;