2015-10-23 29 views
1

我将首先解释用例。适用于高读取率的db解决方案

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

首先想到的是memcached。然而,为了防止宕机,如果memcache关闭,并开始重新填充缓存从一个数据库像mysql ...我想Redis的自动重新填充缓存。

确实redis没有保留到硬盘,而是需要调用flush来备份它?

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

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

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

对这些系统的任何了解都非常有帮助。感觉就像我在圈子里一样。

api是在nodejs中制作的。 (如果有问题)

回答

2

根据您的模式明智地完成,10K/s对于像Cassandra这样的数据库来说绝对不是一个高速率。我敢打赌,其他人也一样。 每月10M独特的字符串是现代大数据系统的花生。

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

海事组织,重要的有以下2个问题:

你的意思是“寻找配衬”什么?

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

您提到的任何系统都不会提供您似乎寻找的反应性。

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

什么是快速响应时间?

随着选择正确的技术和适当的架构,所有这些系统都会在几百毫秒内为您提供极佳的响应时间,但是对于您来说足够快吗?

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

作为结论,API在节点中。js与你的存储和索引技术的选择无关,除非你想坚持使用Javascript的所有东西,MongoDB对你更友好,它可以是一个体面的候选人,这取决于你的搜索用例。

+0

感谢您的回复。 我需要搜索整个字符串作为示例:“promocode1234” 我的想法是将此存储为redis中的密钥。这应该很快告诉我这个代码是否存在。正确吗?更快,然后可能搜索一个MySQL表作为一个例子。或者是存储在RAM中的mysql中的索引列..无论如何,我需要的是真或假,所以我认为缓存更快。 – user966936

+0

我喜欢redis over memcache纯粹是因为它可以在重新启动后自行重建。 – user966936

相关问题