Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 适用于高读取率的db解决方案_Mongodb_Redis_Cassandra_Memcached - Fatal编程技术网

Mongodb 适用于高读取率的db解决方案

Mongodb 适用于高读取率的db解决方案,mongodb,redis,cassandra,memcached,Mongodb,Redis,Cassandra,Memcached,我将首先解释用例 高读取率(10000+p/s),大数据集(大量字符串代码(想想promocodes)寻找匹配,字符串10-20个字符)。需要快速响应时间 首先想到的是memcached。但是,如果memcache宕机并开始从数据库(如mysql)重新填充缓存,则需要解决停机问题。。。。我想redis可以自动重新填充缓存 redis是否真的不存在于硬盘上,而是需要调用刷新来备份它 我的希望是使用代码字符串作为使查找超级快速的关键。值将是将其链接到api不需要的db记录的id 如果我必须猜测将存储

我将首先解释用例

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

首先想到的是memcached。但是,如果memcache宕机并开始从数据库(如mysql)重新填充缓存,则需要解决停机问题。。。。我想redis可以自动重新填充缓存

redis是否真的不存在于硬盘上,而是需要调用刷新来备份它

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

如果我必须猜测将存储多少个唯一字符串。。。。。几个月后超过1000万

第四章还简要介绍了卡桑德拉和蒙哥德。我认为mongodb不够,因为它不能在内存中存储整个列表

对这些系统的任何了解都是非常有帮助的。感觉我好像在兜圈子


api是在nodejs中生成的。(如果有关系的话)

10K/s对于像Cassandra这样的DB来说绝对不是一个很高的速率,因为您的模式是明智的。我打赌其他人也一样。 对于现代大数据系统来说,每月1000万条独特的字符串是微不足道的

无论您保留什么样的大数据解决方案,都必须根据数据类型和运营需求设计模式

在国际海事组织,重要的问题有以下两个:

你所说的“寻找配对”是什么意思?

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

你提到的所有系统都不会提供你想要的反应性

如果您要使用静态字符串进行查询:像Cassandra这样的键值存储或面向列的数据库将非常适合。所以所有的都很合适

什么是快速响应时间?

通过选择正确的技术和适当的模式,所有这些系统都将在数百毫秒内为您提供很好的响应时间,但它是否足够快

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


总之,node.js中的API与您选择的存储和索引技术无关,除非您希望一切都使用Javascript,并且MongoDB对您更友好,否则它可能是一个不错的候选者,具体取决于您的搜索用例

谢谢你的回复。我需要搜索整个字符串作为一个例子:“promocode1234”我的想法是将其作为键存储在redis中。这应该很快告诉我这个代码是否存在。对的例如,搜索mysql表可能比搜索mysql表更快。或者mysql中的索引列存储在ram中。。无论如何,我所需要的只是一个真或假,所以我认为缓存速度更快。我喜欢redis而不是memcache,纯粹是因为它可以在重新启动后重建自身。