我一直在寻找用于在 Java EE 环境中持久保存肥皂消息的高性能文件存储解决方案。
我们目前在 Oracle RMDBS 上使用 CLOB 表,但扩展成本非常高。虽然 oracle 可以很好地存储相关元数据,但它在消息内容方面表现不佳。在具有 CLOB 的表上插入的性能比没有它的表大约差 1000%(这是通过比较 VARCHAR2(4000)-insert 与 CLOB-insert 的性能来衡量的,当 CLOB 已禁用行内存储时)
在文件系统上持久化消息是一种选择,但我非常怀疑普通文件系统如何执行每天存储数百万个文件。考虑到我们必须将这些文件保存几个月,这听起来不太对劲。
我知道有几个开源键值数据库(jackrabbit、mongodb 等等)可能适合这项任务,但我只是找不到时间来评估它们。我还想了解开源 RMDBS 的性能。
考虑到传输的消息量不断增加,优先考虑的是低延迟和高性能。我们不需要集群或事务性,并且系统故障时的(少量)数据丢失是可以接受的。
要求:
- 当消息大小为 8 KB 时,必须能够保持至少 100 条持久消息/秒的速率
- 必须能够存储至少 1 亿条消息
- 必须支持按年龄删除持久消息
- 在删除过程中必须支持持久化
- 必须支持通过 id 检索消息
帮助表示赞赏