NoSQL分布式数据库的独家看法- Adam Fowler

原创翻译,原文做者:Adam Fowler,
转载自:https://adamfowler.org/2017/0...git

我查看了ArangoDB混合文档和图形存储的最新测试版。
ArangoDB是一个混合或多模型的NoSQL文档和图形存储。这为项目开发提供了很大的灵活性和力量。自从他们开始以来,我一直在关注ArangoDB (find ArangoDB on Github),现在已有3年多,因此如今咱们来一块儿看看有什么有趣的更新:github

有什么更新?

最大的变化是使用Facebook的RocksDB键值存储做为存储引擎(我将在之后的文章中分别回顾RocksDB)。这是一个巨大的变化,须要在应用程序中进行负载测试,由于一致性和锁定功能与之前的mmfiles方法不一样。
此外,MongoDB客户在将WiredTiger引入存储引擎时发现,人们将始终想要测试和从新测试新的存储层,以寻找意外的回归和性能问题。
可是这确实是一个积极的更新,容许文档级锁定,并能够防止写入阻塞读取,反之亦然。这将大大提升在高写入和读取负载下的性能。算法

Pregel图形处理模型的支持将是开发人员的福音。想像这样一个有效的Map / Reduce版本,用于跨整个群集数据传播的图形算法。有趣的是,您能够选择单节点或集群执行。某些图形算法须要在单个机器上运行全部数据,因此使图形爱好者拥有自由选择的快乐!sql

企业版也受益于LDAP安全支持,闲时加密。这是许多敏感型企业客户,如银行和政府的福音。数据库

Satellite Collections(仅限企业版)是一个很好的新功能,您能够指导引擎使用副本进行处理,从而无需网络跳转来在另外一个节点上查找密钥收集数据。这可能听起来不怎么样,可是我能够经过在NoSQL数据库上运行分布式处理算法来告诉你,这将有助于在很大程度上调整大型文档处理算法。安全

我喜欢ArangoDB 什么?

分布式图形存储中的一个大问题是在群集中的多个服务器上图形算法的高效处理。为了使用商业服务器而不是昂贵的大功率服务器,您须要将数据传播出去。固然,对于遵循节点之间的路径的图算法,当您遍历该图时,会引入滞后。服务器

我很高兴看到ArangoDB在这个关键问题上花了大量的时间。若是他们能够在这个版本中用Pregel解决这个问题,那么他们将会超越其余几个竞争对手。网络

例如,最近添加的SmartGraphs功能(仅限企业版)。这基于已知属性管理图上的节点的分片。考虑一个社交图 - 大多数人在同一个国家有链接(除非你是我,而且写IT!) - 因此根据用户的国家划分一个图表是很好的,经过应用此属性,能够最大限度地减小大多数查询的网络跳数。nosql

结合上面提到的SatelliteCollections(仅限企业版),您能够调整数据存储,以确保快速图形查询,即便图形被分片 - 使用个人国际,喷气式设置,twitter链接来处理像我这样的棘手状况。在与ArangoDB交谈后,他们认为这些功能的组合对于特定的IoT用例将很是有用。若是您发现该组合有用,请为此文章添加评论 - 我很乐意听到不一样的声音!分布式

当我第一次写关于ArangoDB在NoSQL 2016的状态,我评估它还不彻底符合ACID。这是因为滞后的最终一致的副本。因为其余主服务器上的碎片被标记为“追随者”,所以已经解决了这一点。对主要和主要追随者的更新是同步的,容许数据的高可用性,同时确保符合ACID

这是数据场景关键任务的重中之重,当数据库告诉您保存数据时,您须要确保数据安全地位于光盘上。我只能再次强调,我认为符合ACID对于具备关键任务应用程序需求的企业客户相当重要。

我也喜欢ArangoDB的免费版本使用真正的开源许可证 - Apache 2.0**许可证。与其余供应商使用的AGPL v3不一样,该许可证并不限制想要使用该软件的组织,也能够将其定制为生产商业应用程序。

我认为这可能源于我我的对多模型文档和图形库的热爱,ArangoDB的工程团队真的作的很好。并且跟我交谈的每一个人彷佛都很友善。即便是他们的President也亲自花了时间帮我收集关于这篇文章的信息!

ArangoDB的工程团队也及时考虑到客户的问题和用途,并根据此添加产品新功能,新功能都是参考现实用例而来。

作的很差的方面?

ArangoDB做为键值存储用例与 Redis 相比彷佛还受局限。

话虽如此,但这是一个很小的困扰,大多数人会使用ArangoDB的文档和图形库功能以及AQL查询语言,由于它们为大多数用例提供了丰富的功能。

使用场景有哪些?

牛津大学彷佛使用ArangoDB来减小医院出勤和医疗费用,并提升测试结果。其开发了一项手机应用程序,经过在ArangoDB 中存储数据的Node.js应用程序,使用手指式血压计将患者的信息发回NHS信托。这固然意味着你能够有效地跟踪病人,并智慧地决定什么时候要求他们进入医院,减小NHS的负担。这是一个很好的小例子,但很容易复制到其余问题领域。

更多场景用例

Adam Fowler NoSQL Review 我的博客

相关文章
相关标签/搜索