//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的一個子集,非常適合以聲明式的方式進行數據庫查詢。