我一直在寻找用于在Java环境中持久化soap消息的高性能文件存储解决方案。
我们目前正在Oracle RMDBS上使用CLOB表,但是扩展起来非常昂贵。虽然oracle可以很好地存储相关的元数据,但它对消息内容的性能不太好。使用CLOB的表上的Insert比没有CLOB的表的性能差约1000% (这是通过比较VARCHAR2(4000)-insert的性能和CLOB的性能来衡量的-当在行存储中已禁用CLOB时插入)
将消息保存在文件系统上是一种选择,但我对一个普通的文件系统每天存储数百万个文件的性能有一些严重的疑问。考虑到我们得把这些文件保存几个月,这听起来不太对。
我知道有几个开放源码的键值数据库(jas兔子,mongodb,举几个例子)可能会完成这项任务,但我只是找不出时间来评估它们。我还想了解开源RMDBS的性能。
考虑到传输消息的数量不断增加,优先级在低延迟和高性能上。我们不需要集群或事务性,系统故障时(较小的)数据丢失是可以接受的。
要求:
我们很感谢你的帮助
发布于 2013-05-13 19:41:01
这就是我到目前为止所发现的。在对每个产品进行评估之后,我将尝试更新这个答案。
我用MongoDB开始了我的实验,从纸面上看,这似乎是一个可行的选择。以下是我的发现摘要:
事实上,MongoDB需要两个数据中心配置上的6个节点,这使我进一步寻找成本效益更高的解决方案。
Apache Cassandra:
虽然Cassandra在单个节点配置中速度较慢,但高可用性配置的写性能将与MongoDB的性能相匹配。对于日志记录来说,对每个节点执行写操作(甚至在网络分区期间)是非常受欢迎的。
Couchbase:
不幸的是,我无法测试Couchbase。
现在,我们将继续使用甲骨文SecureFiles。如果我们耗尽甲骨文的资源,卡桑德拉和MongoDB似乎都是可行的替代方案。
发布于 2013-04-29 19:27:13
这里是MongoDB和Server之间很好的比较(我相信Oracle会有类似的性能)。从图表中可以看出,Mongo每秒可以处理20000次插入。Mongo还具有基于JSON的查询语言,它几乎可以执行任何事情,比如常规SQL,还有共享集群和副本集,它们可以处理所有相关的备份和故障转移(一些基本信息,这里)。
此外,如果您有兴趣深入挖掘,10 gen有一个在线课程从两周内颁发的证书。
发布于 2013-05-05 02:51:13
Oracle11g中引入了数据去重叠的功能。此特性将提高使用clob的oracle数据库的性能。
https://stackoverflow.com/questions/16286567
复制相似问题