适用于高读取率的数据库解决方案

时间:2015-10-23 06:12:53

标签: mongodb redis cassandra memcached

我先解释用例。

高读取率(10000+ p / s),大型数据集(大量字符串代码(想想促销代码)寻找匹配,字符串10 - 20个字符串)。需要快速的响应时间。

首先想到的是memcached。然而,如果memcache崩溃并开始从像mysql这样的数据库重新填充缓存,那么就可以解决停机问题....我正在考虑重新启动自动重新缓存缓存。

redis不会持久存在于硬盘驱动器中,而是需要调用刷新才能备份它吗?

我希望使用代码字符串作为使查找超级快速的键。值将是一个id,将其链接到api不需要的db记录。

如果我不得不猜测将存储多少个独特的字符串.....几个月后会有10M +。

我还简短地看了一下Cassandra和mongodb。我认为mongodb不够,因为它没有将整个列表存储在内存中?

对这些系统的任何了解都非常有用。感觉就像我在圈子里走来走去。

api是在nodejs中创建的。 (如果重要的话)

1 个答案:

答案 0 :(得分:2)

对于像Cassandra这样的数据库来说,10K / s绝对不是一个很高的速率,因为你的架构是明智的。我敢打赌,其他人也一样。 每个月10M独特的字符串是现代大数据系统的花生。

无论您保留何种大数据解决方案,您都必须根据数据类型和运营需求设计架构。

IMO,重要的是以下两个问题:

“寻找比赛”是什么意思?

如果您需要使用子字符串或正则表达式进行索引和搜索,则需要一个搜索引擎:ElasticSearch或SOLR非常棒。警告E / S进行复制和分片,但它的分发模型仍然不是100%安全。

您提及的系统都没有提供您似乎想要的反应性。

如果您将使用静态字符串进行查询:像Cassandra这样的键值存储或面向列的数据库将是完美的选择。所以一切都很合适。

什么是快速响应时间?

通过选择合适的技术和适当的模式,所有这些系统将在数百毫秒内为您提供极佳的响应时间,但它对您来说是否足够快?

REDIS和MemCached在内存中将提供更快的响应。

作为结论,node.js中的API与您的存储和索引技术的选择无关,除非您想坚持使用Javascript以及MongoDB对您更友好,它可能是一个不错的候选人取决于您的搜索用例。