Якщо вас цікавлять переваги, які ви можете отримати від незмінності в базі даних або, принаймні, в базі даних, яка пропонує ілюзію незмінності, перевірте Datomic.
Datomic - це база даних, придумана Річком Хікі в союзі з Think Relevant. Є багато відео, де вони пояснюють архітектуру, цілі, модель даних. Пошук infoq, один зокрема має назву Датомічний, база даних як цінність . У конференціях ви можете знайти основну інформацію, яку Річ Хікі дав на конференції euroclojure в 2012 році. Confreaks.com/videos/2077-euroclojure2012-day-2-keynote-the-datomic-architecture-and-data-model
Існує розмова на vimeo.com/53162418, яка більше орієнтована на розвиток.
Ось ще один із stuart halloway at.pscdn.net/008/00102/videoplatform/kv/121105techconf_close.html
- Datomic - це база даних фактів у часі, званих датами, у 5-х кортежах [E, A, V, T, O]
- E Ідентифікатор об'єкта
- Ім'я атрибута по суті (може мати простір імен)
- V Значення атрибута
- T Ідентифікатор транзакції, з цим у вас є поняття про час.
- O одна операція твердження (теперішнє або поточне значення), відхилення (минуле значення);
- Використовує власний формат даних, який називається EDN (розширювана нотація даних)
- Операції є кислотними
- Використовує журнал даних як мову запитів, який є декларативним як SQL + рекурсивні запити. Запити представлені структурами даних, а розширені мовою jvm, вам не потрібно використовувати clojure.
- База даних відокремлена в трьох окремих службах (процесах, машинах):
- Угода
- Зберігання
- Запит двигуна.
- Ви можете окремо масштабувати кожну послугу.
- Це не з відкритим кодом, але є безкоштовна (як у пиві) версія Datomic.
- Ви можете вказати гнучку схему.
- набір атрибутів відкритий
- будь-коли додайте нові атрибути
- відсутність жорсткості у визначенні чи запиті
Тепер, оскільки інформація зберігається як факти у часі:
- все, що ви робите, - це додавати факти до бази даних, ви ніколи не видаляєте їх (за винятком випадків, коли цього вимагає закон)
- ви можете кешувати все назавжди. Query Engine, працює на сервері додатків як у базі даних пам'яті (для мов jvm, які не є jvm, мають доступ через API REST.)
- ви можете запитувати як раніше.
База даних є значенням і параметром для механізму запитів, QE управляє з'єднанням і кешуванням. Оскільки ви можете бачити db як значення і незмінну структуру даних у пам'яті, ви можете об'єднати його з іншою структурою даних, виготовленою зі значень "у майбутньому" і передавати її QE & запиту майбутніми значеннями, не змінюючи фактичну базу даних .
Є проект з відкритим кодом від Rich Hickey, який називається codeq , ви можете знайти його в github Datomic / codeq, який розширює модель git, а також зберігає посилання на об’єкти git у базі даних, що не містять датомів, і запитує ваш код, ви можна побачити приклад використання датомічного.
Ви можете думати про датомік як про ACID NoSQL, за допомогою даних можна моделювати таблиці або документи або Kv-магазини або графіки.