首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >高性能消息存储

高性能消息存储
EN

Stack Overflow用户
提问于 2013-04-29 19:22:45
回答 3查看 303关注 0票数 1

我一直在寻找用于在Java环境中持久化soap消息的高性能文件存储解决方案。

我们目前正在Oracle RMDBS上使用CLOB表,但是扩展起来非常昂贵。虽然oracle可以很好地存储相关的元数据,但它对消息内容的性能不太好。使用CLOB的表上的Insert比没有CLOB的表的性能差约1000% (这是通过比较VARCHAR2(4000)-insert的性能和CLOB的性能来衡量的-当在行存储中已禁用CLOB时插入)

将消息保存在文件系统上是一种选择,但我对一个普通的文件系统每天存储数百万个文件的性能有一些严重的疑问。考虑到我们得把这些文件保存几个月,这听起来不太对。

我知道有几个开放源码的键值数据库(jas兔子,mongodb,举几个例子)可能会完成这项任务,但我只是找不出时间来评估它们。我还想了解开源RMDBS的性能。

考虑到传输消息的数量不断增加,优先级在低延迟和高性能上。我们不需要集群或事务性,系统故障时(较小的)数据丢失是可以接受的。

要求:

  • 当消息大小为8KB时,必须能够保持至少100条持久化消息/秒的速率。
  • 必须能够存储至少1亿条消息。
  • 必须支持按年龄删除持久化消息。
  • 必须支持在删除过程中持久化。
  • 必须支持通过id检索消息。

我们很感谢你的帮助

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-13 19:41:01

这就是我到目前为止所发现的。在对每个产品进行评估之后,我将尝试更新这个答案。

我用MongoDB开始了我的实验,从纸面上看,这似乎是一个可行的选择。以下是我的发现摘要:

  • 用C++写的
  • 复制(复制)需要3个节点才能实现高可用性。
  • 其中一个节点被选择为主节点,只有主节点才能写入。
  • 扩展是通过切分(分区)完成的。
  • 每个碎片本质上是一个复制集,因此切分环境需要至少6个节点才能实现高可用性。
  • 单神实例消耗所有可用的内存-虚拟化应该用于资源分区(如果您打算在同一硬件上运行应用服务器)。
  • 师父连任最多需时1分钟。
  • 文档集合(表)在写操作期间使用独占锁。
  • Java非常容易使用,并包含一个名为GridFS的虚拟文件系统。
  • 测试系统上的单节点写入性能为1k字节文档的插入量为20000次/秒。
  • 对于1k字节文档,单节点读取性能为20000读/秒。

事实上,MongoDB需要两个数据中心配置上的6个节点,这使我进一步寻找成本效益更高的解决方案。

Apache Cassandra:

  • 用Java编写
  • 复制需要3个节点才能实现高可用性。
  • 数据库在网络分区中生存
  • 为多个数据中心设计了复制算法。
  • 所有节点都是可写的
  • 扩展可以通过添加更多的节点来完成(在一定限度内)。
  • Cassandra可能需要JVM垃圾收集优化。
  • Java不是最容易使用的
  • 对于1k字节文档,单节点写入性能为7000插入/秒。
  • 对于1k字节文档,单节点读取性能为7000次/秒。

虽然Cassandra在单个节点配置中速度较慢,但高可用性配置的写性能将与MongoDB的性能相匹配。对于日志记录来说,对每个节点执行写操作(甚至在网络分区期间)是非常受欢迎的。

Couchbase:

不幸的是,我无法测试Couchbase。

现在,我们将继续使用甲骨文SecureFiles。如果我们耗尽甲骨文的资源,卡桑德拉和MongoDB似乎都是可行的替代方案。

票数 0
EN

Stack Overflow用户

发布于 2013-04-29 19:27:13

这里是MongoDB和Server之间很好的比较(我相信Oracle会有类似的性能)。从图表中可以看出,Mongo每秒可以处理20000次插入。Mongo还具有基于JSON的查询语言,它几乎可以执行任何事情,比如常规SQL,还有共享集群和副本集,它们可以处理所有相关的备份和故障转移(一些基本信息,这里)。

此外,如果您有兴趣深入挖掘,10 gen有一个在线课程从两周内颁发的证书。

票数 1
EN

Stack Overflow用户

发布于 2013-05-05 02:51:13

Oracle11g中引入了数据去重叠的功能。此特性将提高使用clob的oracle数据库的性能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16286567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档