我需要一个用于Clojure应用程序的嵌入式数据库。也许它与任何其他Java应用程序的标准相同,但我还是得到其他人的意见。我不是选择SQLite,因为那不是纯Java,因此独立应用程序的分发变得复杂得多。似乎要走的路是Apache Derby。还有什么我应该考虑的吗?
答案 0 :(得分: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)"]))
答案 1 :(得分:4)
你看过FleetDB了吗?它是一个带有JSON协议的Clojure数据库和多种语言的客户端。我怀疑你可能会在没有太努力的情况下运行它。
答案 2 :(得分:3)
答案 3 :(得分:2)
我在clojure中使用了嵌入式数据库H2,并使用clojureQL来访问它。但请注意,由于数据库正在进行中,因此您不应将此用于大量记录(在单个表中超过10,000秒),因为您将遇到巨大的性能问题,因为数据库和您的代码都将共享相同的内容JVM
答案 4 :(得分:2)
我认为Derby是一个出色的100%Java嵌入式数据库,它对各种各样的应用程序非常有用,由活跃的社区维护得很好,并且有很好的文档记录。
答案 5 :(得分:1)
如果你不介意NOSQL,neo4j是一个带有交易的嵌入式图形数据库,根据GPL许可。我发现的最新绑定是https://github.com/hgavin/borneo
在clojure中还有一个有趣的图形数据库项目,带有可插拔的后端:https://github.com/flatland/jiraph
仍然非常年轻但看起来很有前途的OrientDB可能值得一看:http://www.orientechnologies.com/orient-db.htm
答案 6 :(得分:1)
我正在使用https://github.com/clojurewerkz/archimedes,它允许您稍后指定后端。
答案 7 :(得分:0)
要考虑的另一个选择是键值存储Chronicle Map,因为它是纯Java并提供了一个普通的Java Map
接口,因此使用Clojure时使用它应该非常简单。