【问题标题】:Java handling large amounts of dataJava处理大量数据
【发布时间】:2011-01-10 16:20:09
【问题描述】:

我有一个需要显示大量数据(大约 100 万个数据点)的 Java 应用程序。数据不需要同时显示,而是仅在用户请求时显示。该应用程序是一个桌面应用程序,不使用应用程序服务器运行或访问任何集中式数据库。

我的想法是在机器上运行一个数据库并在其中加载数据。数据库大部分时间都是只读的,所以我应该能够索引以帮助优化查询。如果我在本地系统上运行,我不确定是否应该尝试实现一些缓存(我不确定查询的运行速度有多快,我目前正在处理它们)。

这是解决问题的合乎逻辑的方法还是会有更好的方法?

谢谢, 杰夫

【问题讨论】:

    标签: java database optimization


    【解决方案1】:

    显示和数据是两个不同的东西。

    您都没有提供任何详细信息,但可以在后台生成显示,一次输入一个切片的数据,然后在准备好时显示。很多事情都可能导致内存问题,所以你需要小心。数据库将有助于持久化事物,但它不会帮助您将 10 磅的数据放入 5 磅的内存袋中。

    更新:如果个人一次只阅读几个点,并且显示不是问题,那么我会说如果您适当地索引表,任何数据库都可以处理它。对于功能强大的数据库来说,一百万行并不算多。

    【讨论】:

    • 显示部分将最小化。一次只会显示几个数据点,所以我现在不太关心那部分。基本上我会从整个大集合中检索少量数据(记录由几个数字和字符串组成,不要太大)。
    • 我认为,如果您在任何时间点只显示其中的几个,那么数据库会很棒。对于任何数据库实现(当然索引正确),查询数百万个点的表应该非常快。
    【解决方案2】:

    嵌入式数据库似乎是合理的。查看JavaDB/Derby 或H2 或HSQLDB。

    Sqlite 和 java wrapper 也可以。

    【讨论】:

      【解决方案3】:

      这真的取决于您的数据。多个实例是否请求数据?如果没有,绝对值得寻找一个简单的 SQLite 数据库作为存储。它只是文件系统上的一个文件。无需设置服务器。

      【讨论】:

      • 感谢您的意见。现在它只是一个实例,所以我来看看 SQLite。我可以使用 derby 或其他嵌入式 java db 吗?我之前没用过sql lite。
      • 这很简单。查看以下线程以获取介绍:stackoverflow.com/questions/41233/java-and-sqlite 您可以查看的另一个数据库是 HSQLDB(链接在此线程内的另一个答案中)。那是一个用 Java 编写的关系数据库引擎,也基于单个文件。
      【解决方案4】:

      嗯,取决于数据大小。例如,100 万个整数并不算多,但 100 万个数据结构/类或任何具有 1000 字节大小的东西就足够了。

      对于小数据:将它们保存在内存中 对于大数据:我认为使用数据库会很好。

      只是我的意见:)

      编辑:

      当然,这也取决于您想要达到的速度。如果您确实需要高速并且数据很大,您还可以将其中一些缓存在内存中,并将其余部分留在数据库中。

      【讨论】:

        猜你喜欢
        • 2013-01-10
        • 2011-11-24
        • 1970-01-01
        • 1970-01-01
        • 2017-02-09
        • 2013-05-03
        • 2017-09-26
        • 1970-01-01
        相关资源
        最近更新 更多