【问题标题】:Persistent data structures in Java [closed]Java中的持久数据结构[关闭]
【发布时间】:2011-07-01 12:38:48
【问题描述】:

我需要在 Java 中为某些(可能很大)数据结构提供持久存储,例如:

  • 整数、双精度、布尔值的密集和稀疏矩阵
  • 带有标记节点和边的有向图
  • 二叉树
  • maps: string->string, string->integer(快速检索具有最大值的键)
  • 整数或字符串集

我不介意每个数据结构是否有单独的存储,只要所有存储具有相似、一致的接口即可。

我需要能够有效地“远程”修改数据结构,也就是说,无需将整个结构提取到 RAM、对其进行修改和存储回来。示例操作:将键值放入映射中,从树中删除节点,修改图中节点的标签,将值添加到集合。

如果这些存储也可以从其他编程语言(尤其是 Python)轻松访问,那就太好了。我正在考虑在 Java 和 Python 的后端和客户端 API 中使用 RESTful 服务。

动机:我需要处理大量文档并对它们进行各种分析。我想探索各种方法并创建快速原型(因此我需要简单易用的 API)。

我想我不是第一个需要这种功能的人,我不想在这里重新发明轮子。这让我想到了一个问题:哪些开源解决方案可以在 Java 中实现易于使用的数据结构持久性?

提前致谢!

【问题讨论】:

    标签: java data-structures open-source persistence


    【解决方案1】:

    您是否考虑过使用 MongoDB 之类的东西?它似乎非常适合您寻找的东西,并且它吸收了很多蒸汽。这是一个高性能、无模式的面向文档的数据库,我喜欢它基于 json 的事实!看看吧!

    Here 是不错的 Java 教程。

    【讨论】:

    • 谢谢,这是一个有趣的想法。我正在考虑使用 MongoDB 或其他 NoSQL 解决方案作为某些商店(肯定是地图和集合)的“低级”后端。但是,我还需要一个一致的 Java API 用于数据结构上的 CRUD 操作,我希望有人已经这样做了。
    • 嗯,很有趣。我还没有将 JPA 和 MongoDB 混合在一起。似乎是不太可能的一对。然而;网上有一些关于 MongoDB 和 java 的教程。
    【解决方案2】:

    ObjectOutputStream 和 ObjectInputStream 怎么样?

    【讨论】:

    • 谢谢,但这太通用了,并且不允许在不获取整个对象的情况下进行特定于数据结构的修改。示例:我有一个包含 10M 节点的存储树,我想添加一个叶子。我不想获取和反序列化整个树,修改它,序列化和存储它。整个树可能不适合内存。我想做的是修改持久化树。
    • 他提到他不想加载所有数据来改变一些东西
    【解决方案3】:

    连接所有这些非常困难,但您可以将 JPA 与双向映射和延迟加载一起使用。

    【讨论】:

      【解决方案4】:

      这实际上取决于您的使用模式,即读取次数、写入次数、频率等,但我建议您只使用 sql,直到您证明它不起作用。

      【讨论】:

        猜你喜欢
        • 2013-04-17
        • 1970-01-01
        • 2011-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多