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