2011-08-03 12 views
18

Clojureアプリケーション用の組み込みデータベースが必要です。たぶんそれは他のJavaアプリケーションと同じ基準ですが、私はむしろ他の人々の意見を得ています。私はそれが純粋なJavaではないので、スタンドアロンアプリケーションの配布ははるかに複雑になるので、SQLiteを選んでいません。行く方法はApache Derbyです。他に何か考慮する必要がありますか?Clojureの埋め込み型(純粋なJava)データベース

+1

この回答をお待ちしています。私はDerbyよりもJavaでHSQLDBを使用しましたが、単体テストでのみ使用しました。 Clojureクライアントを持っているので、誰でもFleetDBを使用していたかどうか確認してください。 –

答えて

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"です:-) –

+0

私にとっては間違いなくH2です。これは、clojureqlクエリライブラリでうまくいきました。最後にチェックしたときにH2がJOIN USING構文をサポートしていないため、clojureqlでH2に必要な回避策があります。より詳細なJOIN ON同等機能を使用する必要があります。 –

2

私はclojure内にH2という組み込みデータベースを使用し、clojureQLを使ってアクセスしました。データベースが処理中であるため、大量のレコード(1つのテーブルでは10,000以上)には使用しないでください。データベースとコードが同じJVMを共有するため、大きなパフォーマンス上の問題が発生するため注意してください

4

FleetDBを見ましたか?これは、JSONプロトコルと複数の言語のクライアントを持つClojureデータベースです。私はおそらくあなたがそれをあまりにも懸命に働くことなく埋め込まれた状態で走らせることができると思う

2

私はDerbyが優れた100%Java組み込みデータベースを作っていると思っています。それは、アクティブなコミュニティによってよく管理され、非常によく文書化されたさまざまなアプリケーションに役立ちます。

1

NOSQLを気にしないのであれば、neo4jはGPLの下でライセンスされたトランザクションを持つ埋め込み可能なグラフDBです。私が見つけた、最新のバインディングには、プラグイン可能なバックエンドとのClojureで興味深いグラフDBプロジェクトもありhttps://github.com/hgavin/borneo

ます:https://github.com/flatland/jiraph

OrientDBは一見の価値があります探してまだかなり若いけど有望:http://www.orientechnologies.com/orient-db.htm

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

その後、私はを使用していますhttp://jdbm.sourceforge.net/

1

がありますを使用すると、後でバックエンドを指定することができます。

0

純粋なJavaであり、バニラJava Mapインターフェイスを提供するので、もう1つの選択肢はキー値ストアChronicle Mapです。そのため、Clojureを使用して作業するのは非常に簡単です。

関連する問題