Java DB选择更好的性能

时间:2010-12-09 12:43:34

标签: java database cursor

我有处理这种数据的java应用程序:

class MyData
{
     Date date;
     double one;
     double two;
     String comment;
}

所有数据都以csv格式存储在硬盘上,此类数据序列的最大大小约为150 mb,此时我只需将其完全加载到内存中并使用它。

现在我的任务是增加数百GB的最大数据序列。我想我需要使用DB,但之前我没有使用它们。

我的问题:

  1. 哪个DB更适合我的选择 原因(将只有1个表 数据如abowe)?
  2. 哪个库 更好地用于连接Java< - > DB
  3. 我想会有用的东西 像光标一样?!?如果是的话,有没有 光标实现具有良好的记录 缓存快速访问?
  4. 关于java的任何其他提示和技巧< - >欢迎DB!

5 个答案:

答案 0 :(得分:5)

你的问题非常不明确。没有最好的品种 - 这取决于你有多少钱和什么样的硬件。

由于Java和DB之间的映射非常简单,因此JDBC应该足够了。 JDBC将根据需要为您创建游标;丢失了ResultSet中行的循环。但是,根据数据库的不同,您可能需要将其配置为使用游标。

由于您提到“数百GB”,因此排除了大多数“简单”数据库。如果您有钱,请尝试使用Oracle。如果您没有钱,请尝试使用MySQL或Postgres。

您也可以尝试JavaDB(也称为Derby)。但我不确定性能是否符合你的要求。

请注意,他们都有他们的怪癖和“功能”,所以期望花几周的时间与他们一起找到你的方式。

答案 1 :(得分:2)

完全取决于您对数据的处理方式。您是否需要将其编入索引以检索特定记录,或者您是否正在流处理整个数据集以生成某些统计信息(例如)?是否需要多个客户端/进程同时访问数据库?

不要立即急于使用SQL / JDBC,关系数据库功能强大,但它们增加了很多复杂性,对于手头的任务来说通常是完全没有必要的。

同样,根据您实际需要做的事情,BerkeleyDB之类的内容可能符合要求,或者您可能只需要更紧凑的二进制消息格式:查看Protocol Buffers和{{3} }。

如果你真的需要扩展,请查看Hadoop / HDFS以进行分布式处理(但这变得相当复杂)。

哦,而且一般来说,JavaDB / Derby往往会有些尴尬。

答案 2 :(得分:1)

我会推荐JavaDB。我在销售点系统中使用它并且它非常好用。它很容易集成到您的Java应用程序中,如果需要,您可以将它集成到同一个.jar文件中。

Using Java DB in Desktop Applications可能是一篇有用的文章。您将使用JDBC从Java连接数据库,如果您不想使用JavaDB,这可以很容易地切换到另一个数据库。

答案 3 :(得分:1)

您需要评估几个数据库(如果它们不是开源/免费的话,您可以对它们中的任何一个进行试验)。我建议尝试使用Oracle,Mysql / Postgres以及数据的大小(以及它缺乏明显的复杂性),你可能也想考虑一个数据网格(gridgain或类似的)。

但绝对是原型。

答案 4 :(得分:0)

我想补充一点,“最快”的数据库不一定是最好的。

您还需要考虑:

  • 可靠性,
  • 软件许可证费用,
  • 易用性,
  • 易于管理,
  • 支持的可用性,
  • 等等。