有没有人和Aerospike合作过?它与MongoDB相比如何?

Ole*_*ann 48 mongodb nosql aerospike

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

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

Eum*_*coz 94

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

MongoDB的

我使用MongoDB作为SQL替代方案.在我的MongoDB数据库中,我有许多不同的领域.通常情况下字段会发生变化,我会随机查询各个字段.它是一个非常非结构化的数据库,而且MongoDB非常棒.我还使用MongoDB作为标准键值存储.它运行良好,但我已经让MongoDB在事务规模和数据库大小规模上都表现不佳.不可否认,数据库可能已经进行了一些优化,但我发现很难找到有关在不同情况下正确配置MongoDB的文档.

Redis的

Redis是一个纯粹的键值商店.Redis最大的问题是它纯粹是在内存中(它将使用磁盘作为备份,但你不能存储比你有可用内存更多的信息).它的使用速度非常快.我个人将它用于一个小型事务数据库:我在键上执行非常简单的功能,比如计算某个用户发生事件的次数.我也做了快速的内存查找,我需要映射到不同的值.Redis是一个很好的小数据集工具,速度非常快.配置也很容易.

我个人使用Aerospike来取代Redis,当它需要扩展时.根据我的理解,它可以用于更多.与Redis一样,Aerospike也是一家超值商店.我相信开源版本还支持Redis没有的二级索引(我没有在生产中使用二级索引,但对它们进行的测试很少).

Aerospike的最大特点是其扩展能力.在研究Aerospike时我需要解决的最大问题是扩展我的系统以处理大型数据集,同时保持极快的速度.我使用Aerospike的项目对速度有非常严格的要求.我通常会进行3-4次数据库查找以及其他处理,并且需要具有低于50ms的事务时间.对数据集进行了一些查看,这些数据集为300GB +.我找不到一个解决方案来保存这些数据,并在合理的时间内访问它.Redis显然不会工作,除非我有一台300GB + RAM的机器.MongoDB开始表现得非常差,大小远低于300GB.所以我给了Aerospike一个机会,它能够很好地处理所有事情.关于Aerospike的最好的事情:随着我的数据集的增长,我不需要做更多的事情,只需在需要时站起来一个新的盒子.速度保持一致.

我也发现Aerospikes文档非常好.配置并不难,找到任何问题的答案都很容易.

结论

那么,Aerospike是否和他们声称的一样好?就个人而言,我已经看到了所声称的东西.我没有必要扩展到100万TPS,但我相信有足够的硬件可能.我也相信这些数据显示了Aerospike和MongoDB之间的速度差异.与MongoDB相比,Aerospike是一个更加"配置"和"计划外"的数据库.因此,Aerospike的规模将比MongoDB快得多.它只需要担心单个(或在二级索引,几百个)的索引,不像MongoDB可以动态改变.您真正需要问的问题是您要使用数据库完成的任务.然后查看最适合您需求的数据库.如果您需要一个可扩展,快速,键值存储数据库,我会说Aerospike可能是最好的.

如果您有任何具体问题或需要澄清任何问题,请与我们联系.我可能会帮助你.

  • 很好,详细的答案! (4认同)

Man*_*ham 51

速度

Aerospike更快.几乎所有系统都可以快速实现低负载或简单的数据访问,但Aerospike通过优化内存和基于SSD的存储选项,始终如一地保持一致.当使用大量RAM进行缓存时,Mongo速度很快,但速度慢且写入性能低.

可靠性

虽然数据访问更简单,但Aerospike非常稳定.MongoDB历来存在持久数据和故障转移的问题,但现在好多了.由于Aerospike具有更好的性能和更易于管理,因此在扩展时可以减少潜在的问题.

安装/配置

使用Aerospike进行群集更容易设置,因为所有节点都相同,并且客户端驱动程序自动处理连接和故障转移.如果您设置单个服务器,MongoDB可以更容易,因为它本地运行在更多平台上,您可以在没有任何配置的情况下启动它.

MongoDB有两种主要的聚类方式,副本集(用于可用性)和分片(用于可伸缩性).我们有5个分片,每个分片都有3个服务器的副本集.这是15台用于保存数据的服务器.然后我们有3个配置服务器维护集群配置,并且在我们第一次重大中断之后必须添加2个仲裁进程来处理正确地将从服务器升级为主服务器.这是很多移动的部分,并且在将来改变你的布局也非常困难.

相比之下,Aerospike花费的精力要少得多,但需要更多配置,一旦群集启动就无法更改,而使用MongoDB,您可以随时创建和更改数据库.

Aerospike确实能够同步多个集群(设置很复杂),因此您可以让不同的活动数据中心复制数据并接受写入,这是MongoDB根本不支持的.

数据访问

MongoDB有数据库/集合/文档,每个文档只是json.Aerospike具有命名空间/设置/记录,其中每个记录是键值"箱"的集合,其可以具有嵌套的键/值结构.命名空间是预配置的,不是动态的,属性的名称限制为14个字符,这对于使用起来很烦人.

两者都有二级索引,尽管MongoDB允许您在Aerospike需要索引设置或自定义脚本时立即查询任何内容.两者都有内置的聚合框架.Aerospike客户端支持LUA脚本,但MongoDB支持map-reduce和自定义javascript函数.

这实际上取决于您的应用程序需求,但MongoDB在灵活性,更容易查询和更少限制方面获胜.

成本

两者现在都是开源和免费的.两者都具有具有额外功能的企业版本,但如果您拥有大量数据,则许可费用很高.Aerospike可能更便宜,因为它需要更少的机器以获得相同的性能.

总体

对于大多数情况,我会推荐Aerospike.MongoDB的文档存储语义和灵活性很棒但是将其作为分布式数据库进行扩展和维护是很痛苦的.Aerospike快速可靠,可以使用更容易扩展的节点运行.


2014年10月: Aerospike现在为合格的创业公司提供特殊计划,以便免费访问企业版.

2016年1月: MongoDB发布了MongoDB Cloud Manager,这是一种付费SaaS服务,可以配置和管理您的集群.这解决了配置Mongo的很多麻烦.

2017年3月:两个数据库都有很长的路要走.Aerospike现在具有更快的复制和更灵活的配置设置,无需重新启动整个群集.MongoDB具有新的架构实施,更好的性能,甚至支持连接以及MongoDB Atlas托管服务,以消除所有扩展问题.


我现在强烈推荐ScyllaDB,它是一个兼容Cassandra的开源数据库,具有令人难以置信的性能,多数据中心复制,并且没有使用限制.

  • 这些是3个非常不同的东西:ElasticCache只是Redis(或memcached)作为AWS的服务,所以你真的只是比较Redis vs Mongo vs Aerospike.Redis和Aerospike在数据结构支持方面具有可比性(只是略有不同的接口,但你可以做同样的事情),但Aero提供了一种更好的集群/可用性系统. (3认同)
  • 请记住,这仍然是一个狭窄的比较,有几十个数据库,所以我无法预测什么是适合你(有时答案甚至可以根据具体情况建立你自己的).请进行实验/测试/测量,并确保为您的用例做出正确的决定. (3认同)
  • Mongo我只建议你是否需要在windows/mac/linux上进行非常快速的设置而不需要很多性能要求,或者真的需要那种超级灵活的文档存储JSON模型.如果没有,您可以在键/值和列表/集/堆栈中建模数据,那么我会选择Aerospike. (2认同)

小智 19

我在生产系统中使用了MongoDB(2.4)和Aerospike 3.这些是我们团队发现的少数观察结果: -

1)Aerospike的读/写吞吐量是无与伦比的.如果读取请求位于较高端,Mongo数据库通常可以达到一定的比例.如果你需要并发读/写为95/5%的比例,Mongo会像任何东西一样降级.使用Aerospike,即使这个比例是90/10,我们也看不到什么影响.在AWS上,我们使用Aerospike实现了200k TPS.

2)在Aerospike潜伏期非常低.服务器端的99百分位读取延迟为亚毫秒.对于80百分位,写入延迟为亚毫秒,对于100百分位,写入延迟在8毫秒内.最好的是我们在不同的POC中获得了几乎相似的数字,因此性能一致.

3)与其他解决方案相比,Aerospike集群中的节点数量非常少.基于SSD的数据存储也提供了相当令人印象深刻的数字,因此非常具有成

4)现在Aerospike是开源的,所以希望得到更广泛的社区支持:-)

因此,我们将Aerospike用于所有新系统并尝试从MongoDB迁移.