问题描述
有人能说Aerospike是否如他们所声称的那样好吗?我有点怀疑,因为它是一家商业企业.据我了解,他们刚刚发布了一个开源版本,但是他们网站上的声明仍然可能被夸大了.
Can anyone say if Aerospike is as good as they claim it to be? I'm a bit skeptical since it's a commercial enterprise. As far as I understand they just released a open source version, but the claims on their website could still be exaggerated.
我对Aerospike与MongoDB的比较特别感兴趣.
I'm especially interested on how Aerospike compares to MongoDB.
推荐答案
我使用了Aerospike,MongoDB和Redis,并测试了许多其他NoSQL数据库.我想说Aerospike擅长于它的工作,但它不同于MongoDB.一切都取决于您打算使用数据库的目的.我可以举一个例子说明我正在使用不同的数据库.我也可以讨论它们之间的区别,并讨论Aerospike的好处.
I have used Aerospike, MongoDB and Redis and have tested many other NoSQL databases. I would say Aerospike is very good at what it does but it is different than MongoDB. Everything depends on what you are planning on using a database for. I can give you an example of what I am using my different databases for. I can also go over the differences between them and discuss the benefits of Aerospike.
MongoDB
我正在使用MongoDB作为SQL替代方案.在我的MongoDB数据库中,我有许多不同的字段.通常情况下,字段会发生变化,我会随机需要在各个字段上进行查询.这是一个非常非结构化的数据库,MongoDB对此非常了不起.我还使用过MongoDB作为标准键值存储.它的性能很好,但是我让MongoDB在事务规模和数据库规模方面均表现欠佳.诚然,数据库可能已经过优化,但是我发现很难找到有关在不同情况下正确配置MongoDB的文档.
I am using MongoDB as a SQL alternative. In my MongoDB database I have many different fields. Often times the fields are changing and I will randomly need to query on various fields. It is a very unstructured database and MongoDB is amazing at that. I have also used MongoDB as a standard key-value store. It performs well but I have had MongoDB perform sub-optimally at both transaction scale and database size scale. Admittedly, the database might have been optimized a little better but I find it very hard to find documentation on configuring MongoDB correctly in different situations.
Redis
Redis是纯键值存储. Redis的最大问题是它纯粹是内存中的(它将使用磁盘作为备份,但是您无法存储的信息超出了可用的内存).它的用途非常快.我个人将其用于小型事务数据库:我在键上执行非常简单的功能,例如计算某个用户发生事件的次数.我还进行了快速的内存中查找,需要将其映射到不同的值. Redis是用于小型数据集的出色工具,并且速度非常快.配置也非常容易.
Redis is a pure key-value store. Redis' biggest problem is that it is purely in-memory (it will use disk as a backup but you cannot store more information than you have memory available). It is extremely fast for what it is used for. I personally use it for a small transactional database: I do very simple functions on keys like counting how many times an event happened for a certain user. I also do quick in-memory look ups that I need mapped to different values. Redis is a great tool for a small dataset and it is extremely fast. Configuration is very easy as well.
Aerospike
当需要扩展时,我个人使用Aerospike来代替Redis.据我了解,它可以用于更多.与Redis一样,Aerospike是键值存储.我相信开源版本还支持Redis不支持的二级索引(我没有在生产中使用二级索引,但对它们进行了很少的测试).
I personally use Aerospike to replace Redis when it's time to scale. From my understanding, it can be used for more. Like Redis, Aerospike is a key-value store. I believe the open source edition also supports secondary indexes which Redis does not (I have not used secondary indexes in production but have done little testing on them).
Aerospike的最佳功能是扩展能力.在研究Aerospike时,我需要解决的最大问题是扩展系统以处理大型数据集,同时保持极快的速度.我使用Aerospike进行的项目对速度有非常严格的要求.我通常需要进行3-4次数据库查找以及其他处理,并且需要50毫秒以下的交易时间.在300GB以上的数据集上进行了一些查找.我找不到一种解决方案来保存此数据并使之在合理的时间内访问.除非我有一台具有300GB + RAM的机器,否则Redis显然无法工作. MongoDB在容量远远低于300GB的情况下开始表现非常差.所以我给了Aerospike一枪,它能够很好地处理所有事情.关于Aerospike的最好的事情是:随着数据集的增长,我只需要在需要时站起一个新盒子即可.速度保持一致.
Aerospike's best feature is its ability to scale. The biggest problem I needed to solve when looking into Aerospike was scaling my system to handle large data sets while remaining extremely fast. The project I use Aerospike for has very stringent requirements on speed. I usually make 3-4 database lookups plus other processing and need to have sub-50ms transaction times. A few look-ups are on data sets which are 300GB+. I could not find a solution to hold this data and make it accessible in a reasonable amount of time. Redis obviously won't work unless I had a machine which had 300GB+ of RAM. MongoDB started to perform extremely poorly at a size much lower than 300GB. So I gave Aerospike a shot, and it was able to handle everything very well. The best thing about Aerospike: as my data set has grown I have not had to do much more than standing up a new box when needed. The speed has stayed consistent.
我还发现Aerospikes文档非常好.配置起来不是很困难,并且很容易找到任何出现的问题的答案.
I also find Aerospikes documentation very good. It isn't too hard to configure and it's pretty easy to find answers for any issue that comes up.
结论
那么,Aerospike是否如他们所说的那样出色?就个人而言,我所看到的不过是声称的内容.我不必扩展到100万TPS,但我确实相信只要有足够的硬件就可以.我也相信这些数字显示了Aerospike和MongoDB之间的速度差异.与MongoDB相比,Aerospike是一个更配置"和计划外"的数据库.因此,Aerospike的规模将比MongoDB快得多.与MongoDB不同,它只需要担心一个索引(或者在二级索引的情况下为数百个),而MongoDB可以动态更改.您真正需要问的问题是您要使用数据库完成的任务.然后查看哪个数据库最适合您的需求.如果您需要一个可扩展的,快速的键值存储数据库,我会说Aerospike可能是那里最好的数据库.
So, is Aerospike is as good as they claim? Personally, I have seen nothing less than what has been claimed. I haven't had to scale to 1 million TPS but I do believe with enough hardware that would be possible. I also believe the numbers showing a speed difference between Aerospike and MongoDB. Aerospike is a much more "configured" and "planned out" database than MongoDB. Because of this Aerospike will be much faster at scale than MongoDB. It only has to worry about a single (or in case of secondary indices, a few hundred) indexes unlike MongoDB which can change dynamically. The question you really need to be asking is what you are trying to accomplish with your database. Then look into which database will fit your needs best. If you need a scalable, fast, key-value store database I would say Aerospike is probably the best out there.
让我知道您是否有任何特定问题或需要澄清的任何内容.我也许可以为您提供帮助.
Let me know if you have any specific questions or need anything clarified. I would probably be able to help you out.
这篇关于有人与Aerospike合作吗?与MongoDB相比如何?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!