【问题标题】:Embedded (pure Java) database for ClojureClojure 的嵌入式(纯 Java)数据库
【发布时间】:2011-10-18 20:05:42
【问题描述】:

我需要一个用于 Clojure 应用程序的嵌入式数据库。也许它与任何其他 Java 应用程序的标准相同,但无论如何我宁愿听取其他人的意见。我没有选择 SQLite,因为它不是纯 Java,因此独立应用程序的分发变得更加复杂。看来要走的路是Apache Derby。还有什么我应该考虑的吗?

【问题讨论】:

  • 期待这个问题的答案。我在 Java 中使用 HSQLDB 的次数超过了 Derby,但仅用于单元测试。有兴趣看看是否有人使用过 FleetDB,因为它有一个 Clojure 客户端......

标签: database clojure derby embedded-database


【解决方案1】:

毫无疑问,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)"]))

【讨论】:

  • 对我来说绝对是 H2。 clojureql 查询库对我来说效果很好。使用 clojureql 的 H2 需要一种解决方法,当我上次检查时,H2 不支持 JOIN USING 语法,您必须使用更详细的 JOIN ON 等效项。
【解决方案2】:

【讨论】:

    【解决方案3】:

    我在 clojure 中使用了嵌入式数据库 H2,并使用 clojureQL 来访问它。但是请注意,由于数据库正在处理中,因此您不应将其用于大量记录(单个表中超过 10,000 条),因为您将遇到巨大的性能问题,因为数据库和您的代码都将共享相同的 JVM

    【讨论】:

      【解决方案4】:

      你看过FleetDB吗?它是一个具有 JSON 协议和多种语言客户端的 Clojure 数据库。我怀疑您可以在不费吹灰之力的情况下将其嵌入运行。

      【讨论】:

        【解决方案5】:

        我认为 Derby 是一个出色的 100% Java 嵌入式数据库,它对各种应用程序都很有用,由活跃的社区维护良好,并且文档非常完善。

        【讨论】:

          【解决方案6】:

          如果您不介意 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/

          【讨论】:

            【解决方案7】:

            我正在使用https://github.com/clojurewerkz/archimedes,它允许您稍后指定后端。

            【讨论】:

              【解决方案8】:

              另一个需要考虑的选项是键值存储Chronicle Map,因为它是纯Java 并提供了一个普通的Java Map 接口,因此使用Clojure 处理它应该非常简单。

              【讨论】:

                猜你喜欢
                • 2017-03-05
                • 1970-01-01
                • 2011-05-22
                • 2011-07-09
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2012-07-01
                相关资源
                最近更新 更多