//onxy+datomic(datalog)的体系架构
数据库即值
http://www.infoq.com/cn/news/2013/06/database-value
在QCon New York 2013上,Rich Hickey做了一次话题为函数式数据库的演讲。Hickey因创造了Clojure编程语言而蜚声业内,目前他正在开发函数式数据库Datomic。在他的演讲中,Hickey表示函数式语言中的两个非常有用的属性:数据即值(data as values)和纯函数(译者注:Pure Functions
Hickey以反问的口吻向观众说道:“如果将所有这些函数式的属性应用到数据库上岂不是很好?”在这样的一个世界里,整个数据库将可以代表一个(不变)值,而查询就好比是以一个或多个数据库作为参数的函数。这样一来,数据库便可以在多个线程间被安全的传递,而在相同数据库值上进行的相同查询将会产生相同的结果。自然地,由于一个不可变的数据库对大家来说并不是很有用处,所以我们将会使用事务处理器(transactor)来产生变更,更准确地说是:基于先前的数据库值产生新的数据库值。给定事务处理器一个数据库值和变化的数量,它将会返回一个新的数据库值。程序可以在任何时间向数据库索取它的当前值。Datomic 就是一个拥有这些属性的数据库。
为了使查询更加简单,Datomic支持以Datalog作为查询语言,该语言是Prolog的一个子集,非常适合以声明式的方式进行数据库查询。