2011-08-03 74 views
18

我需要Clojure應用程序的嵌入式數據庫。也許這與其他Java應用程序的標準是一樣的,但我寧願得到其他人的意見。我沒有選擇SQLite,因爲這不是純Java,所以獨立應用程序的分發變得更加複雜。似乎要走的路是Apache Derby。還有什麼我應該考慮的?Clojure的嵌入式(純Java)數據庫

+1

期待在這一個答案。我使用Java中的HSQLDB比Derby多,但僅用於單元測試。有興趣看看是否有人使用FleetDB,因爲它有一個Clojure客戶端.... –

回答

28

毫無疑問,H2

具體設置,

(def demo-settings 
    { 
    :classname "org.h2.Driver" 
    :subprotocol "h2:file" 
    :subname  (str (System/getProperty "user.dir") "/" "demo") 
    :user  "sa" 
    :password "" 
    } 
) 

再平常Clojure的SQL代碼:

(with-connection demo-settings 
    (create-table :DEMO_TABLE 
      [:M_LABEL "varchar(120)"] 
      [:M_DATE "varchar(120)"] 
      [:M_COMMENT "varchar(32)"])) 
+0

+1。 H2是「Clojure of databases」:-) –

+0

對我來說肯定是H2。它在clojureql查詢庫中工作良好。對於使用clojureql的H2有一個必要的解決方法,H2在上次檢查時沒有支持JOIN USING語法,所以必須使用更詳細的JOIN ON等效。 –

2

我在clojure中使用了一個嵌入式數據庫H2,並使用clojureQL來訪問它。不過要注意,由於數據庫正在處理中,因此您不應將其用於大量記錄(單個表中的「超過10,000個」),因爲數據庫和代碼將共享相同的JVM

4

你看過FleetDB?這是一個帶有JSON協議的Clojure數據庫和多種語言的客戶端。我懷疑你可以運行它嵌入式而不用太努力。

2

我認爲Derby是一個優秀的100%Java嵌入式數據庫,對於各種各樣的應用程序非常有用,由活躍的社區進行良好維護,並且有很好的文檔記錄。

1

如果你不介意NOSQL,neo4j是一個嵌入式圖形數據庫的交易,根據GPL許可。我已經找到了最最新的綁定https://github.com/hgavin/borneo

還有與可插拔後端Clojure的一個有趣的圖形數據庫項目:https://github.com/flatland/jiraph

的還相當年輕,但前途尋找OrientDB可能是值得一看:http://www.orientechnologies.com/orient-db.htm

http://github.com/eduardoejp/clj-orient

再就是http://jdbm.sourceforge.net/

0

另一個需要考慮的選項是鍵值存儲Chronicle Map,因爲它是純Java並提供了一個vanilla Java Map接口,所以使用它的工作應該非常簡單,使用Clojure。