mongodb - 有人用过 Aerospike 吗?它与 MongoDB 相比如何?

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

2年前关闭。




Improve this question




谁能说 Aerospike 是否像他们声称的那样好?我有点怀疑,因为它是一家商业企业。据我所知,他们刚刚发布了一个开源版本,但他们网站上的说法仍然可能被夸大了。

我对 Aerospike 与 MongoDB 的比较特别感兴趣。

最佳答案

我使用过 Aerospike、MongoDB 和 Redis,并测试了许多其他 NoSQL 数据库。我会说 Aerospike 非常擅长它的工作,但它与 MongoDB 不同。一切都取决于您计划使用数据库的目的。我可以举一个例子,说明我使用不同数据库的目的。我还可以回顾它们之间的差异并讨论 Aerospike 的好处。

MongoDB

我使用 MongoDB 作为 SQL 替代方案。在我的 MongoDB 数据库中,我有许多不同的字段。很多时候字段都在变化,我会随机需要查询各个字段。这是一个非常非结构化的数据库,而 MongoDB 在这方面非常出色。我还使用 MongoDB 作为标准的键值存储。它表现良好,但我已经让 MongoDB 在事务规模和数据库规模规模上都表现不佳。诚然,数据库可能已经优化了一点,但我发现很难找到有关在不同情况下正确配置 MongoDB 的文档。

Redis

Redis 是一个纯粹的键值存储。 Redis 最大的问题是它完全在内存中(它将使用磁盘作为备份,但您无法存储比可用内存更多的信息)。它的用途非常快。我个人将它用于小型事务性数据库:我对键执行非常简单的功能,例如计算某个用户事件发生的次数。我还进行了快速的内存查找,需要映射到不同的值。 Redis 是适用于小型数据集的绝佳工具,而且速度非常快。配置也非常简单。

Aerospike

我个人在需要扩展时使用 Aerospike 来替换 Redis。根据我的理解,它可以用于更多。和 Redis 一样,Aerospike 是一个键值存储。我相信开源版本也支持Redis不支持的二级索引(我没有在生产中使用二级索引,但很少对它们进行测试)。

Aerospike 的最佳功能是它的扩展能力。在研究 Aerospike 时,我需要解决的最大问题是扩展我的系统以处理大型数据集,同时保持极快的速度。我使用 Aerospike 的项目对速度有非常严格的要求。我通常进行 3-4 次数据库查找和其他处理,并且需要低于 50 毫秒的事务时间。一些查找是在 300GB+ 的数据集上进行的。我找不到保存这些数据并使其在合理的时间内可以访问的解决方案。除非我有一台具有 300GB 以上 RAM 的机器,否则 Redis 显然无法工作。 MongoDB 在远低于 300GB 的大小时开始表现极差。所以我试了一下 Aerospike,它能够很好地处理所有事情。 Aerospike 最棒的一点是:随着我的数据集的增长,我只需要在需要时立起一个新盒子就行了。速度一直保持一致。

我还发现 Aerospikes 文档非常好。配置起来并不难,而且很容易为出现的任何问题找到答案。

结论

那么,Aerospike 真的像他们声称的那样好吗?就我个人而言,我所看到的无非是所声称的。我不必扩展到 100 万 TPS,但我相信有足够的硬件是可能的。我也相信显示 Aerospike 和 MongoDB 之间速度差异的数字。 Aerospike 是一个比 MongoDB 更“配置”和“计划外”的数据库。正因为如此,Aerospike 在规模上将比 MongoDB 快得多。它只需要担心单个(或者在二级索引的情况下,几百个)索引,不像 MongoDB 可以动态变化。您真正需要问的问题是您试图用数据库完成什么。然后查看哪个数据库最适合您的需求。如果您需要一个可扩展的、快速的、键值存储数据库,我会说 Aerospike 可能是最好的。

如果您有任何具体问题或需要澄清任何内容,请告诉我。我大概能帮到你。

https://stackoverflow.com/questions/25208914/

相关文章:

mongodb - 修改和重放 MongoDB oplog

mongodb - 在 MongoDB 中查找具有不包含具有特定字段值的文档的数组的文档

python - Pymongo/MongoDB : create index or ensure

python - pymongo.errors.CursorNotFound : cursor id

mongodb - mongodb insert 命令中是否有 "upsert"选项?

node.js - Mongoose 填充与对象嵌套

javascript - 在 JavaScript 中将 ObjectID (Mongodb) 转换

node.js - 如何使用 Node.js 在 MongoDB 中使用 cursor.forEac

python - 如何使用 pymongo 更新值?

mongodb - 如何更新 Mongoose 中的多个文档?