使用Clojure中的数据库的方法有哪些?在Clojure中使用数据库
我从Clojure知道你可以用Java做任何事情,但这意味着我最终可能会使用与Clojure简单性相冲突的过于复杂的东西(如Hibernate)。任何建议或意见?
使用Clojure中的数据库的方法有哪些?在Clojure中使用数据库
我从Clojure知道你可以用Java做任何事情,但这意味着我最终可能会使用与Clojure简单性相冲突的过于复杂的东西(如Hibernate)。任何建议或意见?
clojure-contrib有一个sql库,它是JDBC(java.sql.DriverManager)的一个薄包装器。随附的测试文件中有一些使用示例。
如果您愿意使用Java库,但想要一些简单的东西,也许您会喜欢Persist。它只需要你10分钟来看看它是否符合你的需求。
我已经使用了Berkeley DB为Clojure中的简单键/值数据库。请参阅here。
如果您需要持久连接和/或连接到多个数据库,并且不想每隔一段时间重新建立连接,我会建议使用数据库连接池。像BoneCP或Tomcat CP。
您可以将DataSources从这些包提供给(clojure.contrib.sql/with-connection ...)。
有ClojureQL其中包含关系代数。
您也可以尝试CLJ-记录,https://github.com/duelinmarkers/clj-record
我现在(截至2011年末)推荐Korma - “为Clojure的美味SQL”
这是一个美丽的小SQL DSL,这里是从一个例子网址:
(select users
(aggregate (count :*) :cnt)
(where (or (> :visits 20)
(< :last_login a-year-ago))))
现在有Datomic以及许多类似的解决方案,如DataScript也用于非常有趣的关系(非sql!)数据库功能。
SQL数据库的最新和最好的似乎是HoneySQL和Yesql。
HoneySQL是一个非常优雅的DSL来生成SQL查询。有传言称它甚至可以修改报告中予以高度优化的,请参阅从2月24日2015年
Clojure的组线程“ Current best-of-breed JDBC libraries?”尼尔斯面包车Klaveren说,在上述螺纹:
“基本上,它[HoneySQL]生成SQL脚本来重新链接外键引用以清理数据库中的重复内容。它至少需要一个包含from
表,group-by
和order-by
子句的honeysql select查询作为基本定义,需要考虑的双打,并保存记录的顺序。在与该查询有效地被改写,生成JDBC元数据组合:
创建最好的表演,但仍独立于数据库的SQL,我不得不延长honeysql附加条款如OVER
和PARTITION BY
。我不会说这是一件轻而易举的事,但似乎工作得很好。
...
这减少的SQL(有时)GB的脚本来围绕着几个100行SQL,并有一次,19小时运行时间1.5分钟。”
Yesql,另一方面,目的是为总简单起见它定义了一些函数来加载参数.sql
-files
这是网页提到下面的“卖点”:。
(raw-sql "some('funky'::SYNTAX)")
函数。然后是SQLLite。看看这个简单的例子:https://github.com/ogrim/clojure-sqlite-example
clojure-contrib已经移动。它现在在这里:http://code.google.com/p/clojure-contrib/ – 2009-10-21 07:06:21
实际上,自从我发布这个版本以来,它已经移动了两次。它现在在这里:http://github.com/richhickey/clojure-contrib :) – 2009-10-21 08:43:50
你应该看看clojure ql。 – nickik 2010-11-11 18:51:11