Ehcache vs In-memory db vs NoSql用于读/写繁重的工作负载

时间:2014-07-07 15:15:25

标签: java database ehcache nosql

我需要为我的公司实施会话管理,到目前为止我们一直在使用RDBMS,但由于会话数据的延迟应该非常低,因此延迟太高。

所以我想在网上研究它并发现这三个选项:

  • Ehcache + Terracota
  • 在Memory DB(Timesten等)中
  • NoSQL(Aerospike,Couchbase)

现在我开始尝试这些解决方案,但希望从经验丰富的解决方案中获得2美分。工作负载模式将是50/50读/写,并且需要HA的集群。

我们需要高吞吐量,低延迟和最终的一致性。

根据我的搜索结果,看起来NoSQL非常适合这种情况,但希望能听到更多关于此的内容。

哪些选项最适合此类工作负载?

2 个答案:

答案 0 :(得分:3)

Ad Business是使用会话管理的最大行业之一。我已经看到他们几乎都考虑过基于NoSQL的解决方案。

由于广告业务的主要要求是延迟时间最短的展示广告,因此通常会将数据存储在内存中以降低延迟。但这需要付出代价。

由于您已经提到过Aerospike,它针对SSD进行了优化,因此您也可以通过在SSD上存储数据来实现亚毫秒级延迟。此产品最近开源。

还有其他选项,如上面评论中提到的Redis,但Aerospike确实为HA目的和自动分片提供了跨数据中心复制等优势。使用最少的配置设置和运行非常容易。

所以我会投票给NoSQL查看你的用例。

答案 1 :(得分:0)

Microsoft在ASP.NET及其PaaS Azure中提供将Redis用作会话存储。我想他们知道为什么他们选择支持这个特定的NoSQL DB,所以你可能想看看它。

Redis在内存键值存储中并提供时间限制插入(数据可以在一段时间后由redis自动删除)。此外,您还可以将其部署在多台计算机上,以实现更好的性能或更高的可用性。