Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
选择Java DB以获得更好的性能_Java_Database_Cursor - Fatal编程技术网

选择Java DB以获得更好的性能

选择Java DB以获得更好的性能,java,database,cursor,Java,Database,Cursor,我有处理此类数据的java应用程序: class MyData { Date date; double one; double two; String comment; } 所有数据都以csv格式存储在硬盘上,此类数据序列的最大大小约为150 mb,目前我只需将其完全加载到内存并使用它 现在我的任务是增加数百GB的最大数据序列。我想我需要使用DB,但我以前没有使用过 我的问题是: 为我的数据库选择哪个数据库更好 原因(只有一个表 以数据为基础(我们) 哪

我有处理此类数据的java应用程序:

class MyData
{
     Date date;
     double one;
     double two;
     String comment;
}
所有数据都以csv格式存储在硬盘上,此类数据序列的最大大小约为150 mb,目前我只需将其完全加载到内存并使用它

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

我的问题是:

  • 为我的数据库选择哪个数据库更好 原因(只有一个表 以数据为基础(我们)
  • 哪个图书馆 更好地用于连接JavaDB
  • 我想会有什么用的 像光标?!?如果有,有没有 具有良好记录的游标实现 缓存以实现快速访问
  • 欢迎提供有关JavaDB的任何其他提示和技巧

    我推荐。我已经在一个销售点系统中使用了它,效果非常好。它很容易集成到Java应用程序中,如果需要,您可以将它集成到相同的
    .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。它的工作相当快!