【发布时间】:2013-04-29 19:22:45
【问题描述】:
我一直在寻找用于在 Java EE 环境中持久化 soap 消息的高性能文件存储解决方案。
我们目前在 Oracle RMDBS 上使用 CLOB 表,但扩展成本非常高。虽然 oracle 可以很好地存储相关元数据,但它在消息内容方面表现不佳。在带有 CLOB 的表上插入比没有它的表性能差大约 1000%(这是通过比较 VARCHAR2(4000)-insert 与 CLOB-insert 的性能来衡量的,当 CLOB 已禁用行内存储时)
在文件系统上持久化消息是一种选择,但我非常怀疑普通文件系统每天如何存储数百万个文件。考虑到我们必须将这些文件保存几个月,这听起来不太对。
我知道有几个开源键值数据库(jackrabbit、mongodb 仅举几例)可以胜任这项任务,但我只是找不到时间来评估它们。我也想听听开源 RMDBS 的性能。
考虑到传输的消息量不断增加,优先考虑的是低延迟和高性能。我们不需要集群或事务性,并且系统故障导致的(少量)数据丢失是可以接受的。
要求:
- 当消息大小为 8 KB 时,必须能够保持至少 100 条持久消息/秒的速率
- 必须能够存储至少 1 亿条消息
- 必须支持按年龄删除持久消息
- 在删除过程中必须支持持久化
- 必须支持按 id 检索消息
感谢您的帮助
【问题讨论】:
-
我会尝试 couchDB,但我不知道这比其他数据库解决方案更适合您的使用。你会想要阅读所有这些。此外,如果您的 IT/DBA 不支持 mongodb 或 couchdb,您可能希望使用它们。
-
我们实际上设法通过将 lob 存储切换到 SECUREFILES 来大幅降低 Oracle 负载。尽管如此,我认为我仍然必须评估开源选项。完成后我会发布一篇关于我的发现的帖子。
标签: java jakarta-ee messaging