2012-01-11 152 views
8

我正在寻找一个数据库,我可以使用这个数据库来存储多年来某些库存的数据。可能会有几千条记录。我正在用Java和Clojure编写一个应用程序,它将在需要显示数据时从此本地数据库提取数据。用于本地存储的数据库

我想知道是否有人知道一个好的数据库来处理这个目的?我只有在服务器端运行MySQL的经验。

哪个数据库最容易在Clojure和Java中用于本地存储?

感谢,

亚当

回答

13

JDK 6和更大的捆绑了Java DB这足够让你的使用情况。

+1

Java DB与Apache Derby相同。我认为这只是想要确认是否存在重大差异? – adamjmarkham 2012-01-12 23:23:50

+1

@adamjmarkham“Sun表示,它将把Apache Derby与它的补丁结合起来,称之为”Java DB“。此举为Sun对日益增长的开源应用程序的支持增添了另一个数据库。”从http://www.internetnews.com/dev-news/article.php/3570696/Sun+Backs+Apache+Derby+With+Java+DB。htm – 2012-01-13 00:31:24

3

对于这种小规模的应用程序,如果您选择了许多好的embedded Java databases之一,它几乎肯定是最容易的。

我个人的最佳选择很可能是:

  • H2 - 可能是最好的性能纯Java数据库的整体,如果你相信在运行时,他们的benchmarks那么它比MySQL要快,实际上大多数其他数据库单机环境。
  • Apache Derby - 良好的多面手,成熟并得到广泛支持(甲骨文已包括在最近的JDK品牌为Java DB版本)

之后,你应该能够使用它们很容易地使用标准的JDBC工具集,所以与MySQL没有多大区别。

如果您使用Clojure与SQL数据库进行交互,那么您绝对应该看看Korma

+1

请注意,此处提到的“Apache Derby”已被吸收到Java中并重命名为“Java DB”;对于同一件事他们只是不同的名字。 Apache Derby曾经是一个独立的产品。我研究了差异,甚至在功能或性能方面找不到足够的理由向项目添加不同的jar文件,所以我使用Java DB。 – arcy 2012-01-11 02:11:29

+0

嗯,纠正我,如果我错了,但不只是在JDK的Java DB?如果您想要部署到JRE上的最终用户(或运行较早的JDK的用户),那么您仍然需要额外的jar文件...... – mikera 2012-01-11 02:19:46

3

我已经使用Apache Derby作为类似的应用程序(尽管主要以Java编写)。他们已经运行了近四年,并且执行了超过6万次交易,没有发生重大问题。只是偶尔的错误。

Derby与JavaDB的数据库是相同的,但是使用Derby可以更容易地跟上发行版,因为您可以将其作为依赖包括在内,而不是等待下一个JDK版本何时发布。

此外,IIRC,JavaDB仅包含在JDK中,而不包含在JRE中。

2

根据数据和应用程序的性质以及使用新数据库模式的意愿和/或限制,您可能还需要考虑面向文档的数据库之一MongoDB或CouchDB。如果您的数据和应用程序是面向SQL的,请使用其中一个建议的数据库。