Database Clojure的嵌入式(纯Java)数据库

Database Clojure的嵌入式(纯Java)数据库,database,clojure,derby,embedded-database,Database,Clojure,Derby,Embedded Database,我需要一个用于Clojure应用程序的嵌入式数据库。也许这和其他Java应用程序的标准是一样的,但我还是想听听其他人的意见。我不选择SQLite,因为它不是纯Java,所以独立应用程序的分发变得更加复杂。看来应该走的路是ApacheDerby。还有什么我需要考虑的吗? 毫无疑问, 这里是设置 (def demo-settings { :classname "org.h2.Driver" :subprotocol "h2:file" :subname (

我需要一个用于Clojure应用程序的嵌入式数据库。也许这和其他Java应用程序的标准是一样的,但我还是想听听其他人的意见。我不选择SQLite,因为它不是纯Java,所以独立应用程序的分发变得更加复杂。看来应该走的路是ApacheDerby。还有什么我需要考虑的吗?

毫无疑问,

这里是设置

 (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)"]))


我在clojure中使用了一个嵌入式数据库H2,并使用clojureQL访问它。但是请注意,由于数据库正在处理中,因此不应将其用于大量记录(单个表中的记录数大于10000s),因为数据库和代码将共享同一个JVM,因此会出现巨大的性能问题。您看过吗?这是一个Clojure数据库,具有JSON协议和多种语言的客户端。我怀疑您可以在不太努力的情况下运行嵌入式数据库。

我认为Derby是一个优秀的100%Java嵌入式数据库,它对各种各样的应用程序都很有用,由活跃的社区进行良好维护,并且有很好的文档记录。

如果您不介意NOSQL,neo4j是一个带有事务的嵌入式图形数据库,根据GPL许可。我发现的最新绑定有

clojure中还有一个有趣的graph db项目,具有可插拔的后端:

仍然很年轻但看起来很有前途的OrientDB可能值得一看:


>

我用它来指定后端。

考虑的另一个选项是一个密钥值存储,因为它是纯java,提供了一个香草java <代码> map < /C>接口,所以使用它应该非常简单,使用Cujur. < /P>期待这个答案。我在Java中使用HSQLDB的次数多于Derby,但仅用于单元测试。想知道是否有人使用过FleetDB,因为它有一个Clojure客户端……我也肯定是H2。它在clojureql查询库中运行良好。使用clojureql时,H2需要解决一个问题,H2没有支持的使用语法的连接,当我上次检查时,您必须在等效对象上使用更详细的连接。