//onxy+datomic(datalog)的體系架構(gòu)
數(shù)據(jù)庫即值
http://www.infoq.com/cn/news/2013/06/database-value
在QCon New York 2013上,Rich Hickey做了一次話題為函數(shù)式數(shù)據(jù)庫的演講。Hickey因創(chuàng)造了Clojure編程語言而蜚聲業(yè)內(nèi),目前他正在開發(fā)函數(shù)式數(shù)據(jù)庫Datomic。在他的演講中,Hickey表示函數(shù)式語言中的兩個非常有用的屬性:數(shù)據(jù)即值(data as values)和純函數(shù)(譯者注:Pure Functions
Hickey以反問的口吻向觀眾說道:“如果將所有這些函數(shù)式的屬性應(yīng)用到數(shù)據(jù)庫上豈不是很好?”在這樣的一個世界里,整個數(shù)據(jù)庫將可以代表一個(不變)值,而查詢就好比是以一個或多個數(shù)據(jù)庫作為參數(shù)的函數(shù)。這樣一來,數(shù)據(jù)庫便可以在多個線程間被安全的傳遞,而在相同數(shù)據(jù)庫值上進(jìn)行的相同查詢將會產(chǎn)生相同的結(jié)果。自然地,由于一個不可變的數(shù)據(jù)庫對大家來說并不是很有用處,所以我們將會使用事務(wù)處理器(transactor)來產(chǎn)生變更,更準(zhǔn)確地說是:基于先前的數(shù)據(jù)庫值產(chǎn)生新的數(shù)據(jù)庫值。給定事務(wù)處理器一個數(shù)據(jù)庫值和變化的數(shù)量,它將會返回一個新的數(shù)據(jù)庫值。程序可以在任何時間向數(shù)據(jù)庫索取它的當(dāng)前值。Datomic 就是一個擁有這些屬性的數(shù)據(jù)庫。
為了使查詢更加簡單,Datomic支持以Datalog作為查詢語言,該語言是Prolog的一個子集,非常適合以聲明式的方式進(jìn)行數(shù)據(jù)庫查詢。