java - 哪种 NoSQL 实现最合适?

标签 java nosql redis orientdb trove4j

我是 NoSQL 的新手,我正在绞尽脑汁试图找出最适合我要构建的应用程序的 NoSQL 实现。

我的 Java 应用程序需要有一个包含数百万到数十亿个条目的内存中 HashMap ,因为它对单层神经网络进行建模。现在我们正在使用 Trove为了能够使用图元作为键和值来减小 map 的大小并提高访问速度。该 map 是 map 的 map ,其中外部 map 的键是长整数,内部 map 具有长/浮点键/值。

我们需要能够在应用程序启动时将保存的状态从磁盘读取到 map 的 map 中。 map of map 的更改也需要连续或根据某个预定时间间隔保存到磁盘。

我最初被吸引到 OrientDB因为他们的文档和对象数据库,虽然我现在还不确定什么会更好。然后我遇到了Redis ,这是一个键值存储,并与可以转储到磁盘的内存数据集一起使用,包括主从复制。但是,看起来 map 的值不能是字符串以外的任何内容。

我是否在正确的地方寻找满足我需求的解决方案?现在,我喜欢 Redis 的内存和主从方面,但我喜欢 OrientDB 的对象/文档功能,因为我的数据结构比简单的字符串更复杂,并且能够将 Trove 与原始键/值类型一起使用很有优势。如果阅读便宜而写作昂贵而不是相反,那就更好了。

想法?

最佳答案

为什么不直接将 Trove 数据结构序列化到磁盘?从文档 (http://trove4j.sourceforge.net/javadocs/serialized-form.html) 来看,似乎有某种支持,但很难说,因为它都是自动生成的废话,而不是精心制作的教程。不过,对于您的用例,您需要合适的数据库的原因并不明显,因此 KISS 可能适用。

关于java - 哪种 NoSQL 实现最合适?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14981780/

相关文章:

java - 如何使用 Java 在 Spark 中组合或合并两个稀疏 vector ?

java - 在 ECS 集群上运行的 docker 容器中公开 JMX 端口

php - Redis(键/值数据库)和关联数组之间的区别?

database - Rethinkdb 按包含文本进行完整搜索

lua - 使用 LIMIT 选项调用 ZRANGEBYSCORE 的 Redis EVAL 语法

asp.net - 连接前检测Redis是否连接

java - 是否可以使用 nimbus laf 更改 jspinner 的背景?

java - Java 中是否有 EXIT_SUCCESS 和 EXIT_FAILURE 的替代品?

sql - 对于大量数据的简单分组查询,哪种数据库最有效?

java - 无法从池中获取资源(SocketTimeoutException :)