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

标签 mongodb redis cassandra memcached

我会先解释用例。

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

首先想到的是内存缓存。但是,如果 memcache 出现故障并开始从像 mysql 这样的数据库重新填充缓存,那么为了应对停机时间......我正在考虑使用 redis 来自动重新填充缓存。

redis 不会持久化到硬盘上,而是需要调用 flush 来备份它,这是真的吗?

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

如果我不得不猜测将存储多少个唯一字符串......几个月后 10M +。

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

对这些系统的任何洞察都非常有帮助。感觉我在兜圈子。

api 是在 nodejs 中制作的。 (如果重要的话)

最佳答案

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

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

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

“寻找匹配项”是什么意思?

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

您提到的所有系统都不会提供您似乎正在寻找的 react 性。

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

什么是快速响应时间?

通过选择正确的技术和适当的架构,所有这些系统都会为您提供数百毫秒以下的出色响应时间,但它对您来说足够快吗?

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

作为结论,node.js 中的 API 与您选择的存储和索引技术无关,除非您想坚持使用 Javascript 来处理所有事情并且 MongoDB 对您更友好,它可以是一个不错的选择取决于您的搜索用例。

关于mongodb - 适用于高读取率的数据库解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33295896/

相关文章:

MongoDB 和复合主键

mongodb - 通过 Azure MongoDB 上数组元素内的部分字符串值查找文档

MongoDB addshard : failed to add 2nd shard

node.js - 无法使用 datastax-driver 连接到 cassandra(已 stub 的 cassandra)

java - 一致性级别 ALL 使用 while statement has consistency level TWO defined

Cassandra 节点工具环输出

Mongodb 查询不在带有文本字段的复合索引上使用前缀

php - 云服务器需要向 Router 后面的客户端推送消息

php - curl 到 node.js 的服务器。但不返回任何东西。如何让 server.js 返回 200 json?

python - 如何仅运行 Celery 调度多次,直到再次调用任务?