选择Java DB以获得更好的性能
我有处理此类数据的java应用程序:选择Java DB以获得更好的性能,java,database,cursor,Java,Database,Cursor,我有处理此类数据的java应用程序: class MyData { Date date; double one; double two; String comment; } 所有数据都以csv格式存储在硬盘上,此类数据序列的最大大小约为150 mb,目前我只需将其完全加载到内存并使用它 现在我的任务是增加数百GB的最大数据序列。我想我需要使用DB,但我以前没有使用过 我的问题是: 为我的数据库选择哪个数据库更好 原因(只有一个表 以数据为基础(我们) 哪
class MyData
{
Date date;
double one;
double two;
String comment;
}
所有数据都以csv格式存储在硬盘上,此类数据序列的最大大小约为150 mb,目前我只需将其完全加载到内存并使用它
现在我的任务是增加数百GB的最大数据序列。我想我需要使用DB,但我以前没有使用过
我的问题是:
.jar
文件中
可能是一篇有用的文章。您将使用从Java连接数据库,如果您不想使用JavaDB,可以很容易地切换到另一个数据库。您的问题非常不具体。没有最好的——这取决于你有多少钱和什么样的硬件 由于Java和DB之间的映射非常简单,JDBC就足够了。JDBC将根据需要为您创建一个游标;在
结果集中的行上丢失循环。不过,根据数据库的不同,您可能需要将其配置为使用游标
既然您提到了“数百GB”,那么就排除了大多数“简单”数据库。如果你有钱,试试甲骨文。如果你没有钱,试试MySQL或Postgres
您还可以尝试JavaDB(也称为Derby)。但我不确定你需要什么样的表现
请注意,它们都有自己的怪癖和“特性”,因此您需要花几周的时间来找到解决方法。您需要评估几个数据库(如果它们还不是开源/免费的,您可以试用其中的任何一个)。我建议试用Oracle、MySQL/PoxGRs,以及数据大小(以及它缺乏明显的复杂性),您可能还需要考虑DATAGRID(GRIDGROADE或类似)。
当然是原型。我只想补充一点,“最快”的数据库不一定是最好的
您还需要考虑:
- 可靠性
- 软件许可证成本
- 易于使用
- 易于管理
- 支持的可用性
- 等等
完全取决于您将如何处理数据。您是否需要对其进行索引以检索特定记录,或者您是否正在对整个数据集进行流处理以生成一些统计信息(例如)?数据库是否需要由多个客户端/进程同时访问
不要急于使用SQL/JDBC,关系数据库功能强大,但它们增加了很多复杂性,而且对于手头的任务来说,它们通常是完全不必要的
同样,根据您实际需要执行的操作,类似这样的操作可能符合要求,或者您可能只需要一种更紧凑的二进制消息格式:签出并发送
如果您真的需要扩大规模,请查看Hadoop/HDFS的分布式处理(但这变得相当复杂)
哦,一般来说,JavaDB/Derby有点差劲。+1-他可能还需要根据自己的SQL定义二级索引。我不同意数据大小排除了“简单”数据库-有了这样一个简单的数据模型,很多“简单”数据库在扩展到TB(或更多)数据方面会做得很好。老实说,我不认为“试试Oracle”对以前从未使用过数据库的人来说是有用的建议——这有点像是把他们扔进了复杂性池的最深处。@Dmitri:你有简单数据库允许管理这么多数据的指针吗(在“can”以及“性能”、“备份”等方面)。嗯,我们仍然不知道这里实际需要什么,完全有可能用
DataOutputStream
编写的文件就是所需的全部——并没有比这简单多少:)正如我在回答中提到的,对于许多类型的索引访问,BDB JE可能是最好的选择(或者类似的东西,比如TokyoCabinet),这将很容易扩展到远远超出这些要求的范围。当然,就数据访问模型而言,这是“简单的”,实现显然是非常重要的!我已经成功地完成了我的任务,我的选择是:JDBC+Postgresql。它的工作相当快!