clojure datomic
Отличные новости: вчера Рич Хиккей анонсировал бесплатную версию Datomic! (http://blog.datomic.com/2012/07/datomic-free-edition.html).
Datomic Free Edition поддерживает хранение данных в памяти, язык запросов Datalog для базы и коллекций, а также может свободно использоваться как в открытых, так и в коммерческих проектах. Немаловажным является и тот факт, что теперь Datomic можно распространять с помощью Leiningen, что делает подключение его к своим проектам тривиальным.
Для тех, кто не в курсе, поясню: Datomic (http://datomic.com/) — это база данных нового типа, созданная Ричем Хиккей чтобы заполнить нишу между классическими реляционными решениями и высокопроизводительными NoSQL хранилищами. Среди её особенностей особо стоит отметить следующие:
— Модель изменений и времени, во многом перекликающаяся с подходом к изменяемым данным в Clojure (http://clojure.org/state). База данных состоит из множества неизменяемых
фактов, что позволяет использовать архитектуру, основанную на распределенных компонентах (подробнее см.
docs.datomic.com ).
— Язык запросов, основанный на Datalog (http://en.wikipedia.org/wiki/Datalog), который представляет собой мощную и выразительную альтернативу SQL. Чтобы понять, насколько удобно писать запросы с его помощью, достаточно посмотреть небольшое вводное видео:
docs.datomic.com
— Учет современных тенденций: объемы доступной памяти стремительно растут, на первый план выходят распределенные системы, однако потребность строить сложные запросы к базе сохраняется. Datomic изначально ориентирован на хранение значительной части данных в памяти (что не только делает запросы быстрыми, но и позволяет использовать функции и методы из клиентской программы в запросах), а в качестве постоянного хранилища поддерживает, среди прочего, Amazon DynamoDB.
— Data-oriented API, доступное для Java и Clojure.
Более подробно эти и многие другие темы освещены в документации Datomic (http://docs.datomic.com/). В частности, имеется достаточно подробный и обстоятельный туториал (http://docs.datomic.com/tutorial.html) и набор коротких видео-презентаций (http://docs.datomic.com/introduction_video.html).