ArangoDB是一个混合或多模型的Nosql文档和图形存储。这正在成为一个共同的组合;它提供了很多的灵活性和力量。自从他们开始以来,我一直在观看ArangoDB三年,所以看看有什么变化会很有趣。
重要统计数据
- 最新版本:3.2版Beta(2017年6月13日,当前版本为3.1)。
- 商业支持者:ArangoDB GmbH(跨越德国的IT咨询公司triAGENS GmbH)。
- 网站:这里
- Twitter:@arangodb
- 许可:具有企业支持版本的社区核心(Apache 2.0)。
- 销售模式:订阅模式,包括对社区版本的支持,不仅仅是企业。
- 发布新闻稿:这里
- 发布全部细节:如上。
什么是新的
最大的变化是使用Facebook的RocksDB键值存储作为存储引擎(我将在以后的文章中分别回顾RocksDB)。这是一个巨大的变化,需要在应用程序中进行负载测试,因为一致性和锁定功能与以前的mmfiles方法不同。
此外,MongoDB客户在将WiredTiger引入存储引擎时发现,您将始终想要测试和重新测试新的存储层,以寻找意外的回归和性能问题。
这是一个积极的变化,但是,允许文档级锁定和防止写入阻塞读取,反之亦然。这将大大提高在高写入和读取负载下的性能。
对Pregel图形处理模型的支持将是开发人员的福音。想像这样一个MapReduce的高效版本,用于跨整个集群的数据传播的图形算法。有趣的是,您可以选择单节点或集群执行。某些图形算法需要在单个机器上运行所有数据,所以能够选择应该保持图形爱好者的快乐!
企业版也受益于LDAP安全支持和休息加密 - 许多严重的企业客户如银行和政府的关键。
卫星收藏(仅限企业版)是一个很好的新功能,您可以指导引擎使用副本进行处理,从而无需网络跳转来在另一个节点上查找密钥收集数据。这可能听起来不是很多,但是我可以通过在Nosql数据库上运行分布式处理算法来告诉你,这将有助于在很大程度上调整大型文档处理算法。
我喜欢什么
分布式图形存储中的一个大问题是在群集中的多个服务器上图形算法的高效处理。为了使用商品服务器而不是昂贵的大功率服务器,您需要将数据传播出去。当然,对于遵循节点之间的路径的图算法,当您遍历该图时,会引入滞后。
我很高兴看到ArangoDB在这个关键问题上花了大量的工程时间。如果他们可以在这个版本中用Pregel解决这个问题,那么他们将会超越其他几个竞争对手。
例如,最近添加的SmartGraphs功能(仅限企业版)。这基于已知属性管理图上的节点的分片。考虑一个社交图 - 大多数人在同一个国家有连接(除非你是我,并写IT!) - 所以根据用户的国家划分一个图表工作得很好。通过应用此属性,可以最大限度地减少大多数查询的网络跳数。
结合上述的SatelliteCollections(仅限企业版),您可以调整数据存储,以确保快速图形查询,即使图形被分片 - 使用我的国际,喷气设置,Twitter连接处理像我这样的棘手情况。在与ArangoDB交谈后,他们认为这些功能的组合对于特定的IoT用例将非常有用。如果您发现该组合有用,请为此文章添加评论 - 我很乐意听到战争故事!
当我第一次写关于NoSQL 2016的ArangoDB的时候,我评估它还不太符合ACID。这是由于滞后的最终一致的副本。这已经解决了,这要感谢其他主服务器上的碎片被标记为“关注者”的能力。对主要和主要追随者的更新是同步的,允许数据的高可用性,同时确保符合ACID。
这是关键任务数据场景的关键,在数据库告诉您保存数据的情况下,您需要确保数据安全地位于磁盘上。我不能强调,我认为符合ACID对于具有关键任务应用程序需求的企业客户至关重要。
我喜欢ArangoDB的免费版本使用真正的开源许可证 - Apache 2.0许可证。与其他供应商使用的AGPL v3不同,该许可证不限制想要使用该软件的组织,也可以对生产商业应用程序进行自定义。
对我来说,ArangoDB作为一家公司似乎有一个很好的X因子。我不能把我的手放在它上面。我认为这可能源于我对混合文档和图表商店的热爱,这些家伙和加尔斯做得很好。也因为我所谈的每个人似乎都很友善。哎呀,即使是他们的总统花了我的时间找出一些关于这篇文章的信息!
ArangoDB的工程团队似乎考虑到客户的问题空间和可能的用途,并添加了功能 - 它们不是由教条引导的,它们的功能似乎没有内在的梦想,没有参考外部世界,并且新功能从来没有缺乏现实世界的用例。
如果他们的客户发现他们完全根据自己在现实世界中的需求添加新功能,那么他们就不会感到惊讶,而不是严格按照由猜测工作组成的人造路线图。我没有主要的证据来证明这一点,但这只是一种直觉。我很想听听您的经验,所以如果您将ArangoDB作为客户处理,请添加评论。
什么不是很好
虽然我以前已经说过,一个文件商店可以像一个键值商店一样运行(见这里,这里和这里),我总是很痛惜,指出要做到这一点,你应该提供相同的数据类型和数据操作支持作为像Redis这样的键值存储。
ArangoDB作为关键价值商店用例似乎限于营销部门(由于各种原因,在附录中提到)。这是一个耻辱,因为我认为像ArangoDB这样的Document Nosql数据库比较容易在其API中支持这些用例,从而为使用键值存储的公司提供了使用混合Nosql数据库的迁移选项。一个数据库产品来统治它们,就像它一样。
话虽如此,这是一个很小的困扰,大多数人会使用ArangoDB的文档和图表数据库功能以及AQL查询语言,因为它们为大多数用例提供了一套丰富的功能。
ArangoDB作为一家公司是相当新的,仅在2014年在德国成立(尽管已经从现有公司脱离出来)。似乎有大约20-50名员工可以从我们的职业网站上收集到,所以在欧盟地区和时区之外获得有效的本地支持可能是棘手的。他们确实似乎刚刚聘请了美国的销售领导团队,所以他们快到了!
ArangoDB每年都参与美国和欧洲的许多活动。我建议你和他们谈谈。
在哪里使用
ArangoDB的网站似乎只有去年的新闻稿,所以我只发现有限的信息。尽管有一个非常好的隐藏的案例研究页面- 感谢ArangoDB的总裁Luca Olivari指出我的意图。
牛津大学似乎使用ArangoDB来减少医院出勤和医疗保健成本,并提高测试结果。手机应用程序使用手指式血压计将患者的信息发回NHS信托。这是通过在ArangoDB中存储数据的Node.js应用程序。这当然意味着您可以有效地跟踪病人,并智慧地决定何时要求他们进入医院,减少NHS的负担。这是一个很好的小例子,很容易复制到其他问题领域。
一名不愿透露姓名的客户(那些讨厌的客户保密协议!我知道他们。),财富100强公司,运用ArangoDB数字证书和密钥管理。Wowsers!文档商店的有用的用例!
还有一个非常有趣的用例,涉及使用ArangoDB的Foxx服务支持来显示微数据服务。您可以在自己的页面上找到该用例的完整说明。这是特别有趣的,因为它阻止开发人员首先编写数据层服务,其次是薄的包装微服务。Foxx提供了灵活性,因此您可以将ArangoDB数据服务与现有的微服务结构相结合。
附录:ArangoDB作为主要价值商店
ArangoDB声称是一个文档商店,一个图形商店和一个键值商店 - 它就在他们网站的正面。虽然技术上可以存储任意数据值而不是文档ID,但是在其技术文档中没有提到使用ArangoDB实现真正的键值存储工作负载。
有关数据模型,请参见本小节。它提到了文档和图形,但不是键值。也不要在其API文档中提到键值类型用例,例如集合和列表。
有一些使用ArangoDB替代键值存储的用例,但是这是有用的,因为客户认识到文档模型是需要的,而不是真正的键值存储。ArangoDB网站的多模型页面明确声明您必须使用文档作为值的容器,并且不提及纯键值存储功能,如列表,集合,地图或其访问API。
ArangoDB告诉我,他们将键值用途视为文档操作的专门版本。例如,如果您通过密钥存储文档,则可以使用AQL来操作内容。这些可以是列表/数组操作,类型确定和转换操作,堆栈操作(通过数组上的push / pop)等 - 尽管没有针对排序集或映射的固有优化存储。
这种支持有点深奥,很难找到。我希望未来在这方面的文件和功能上会有一些运动,因为他们在营销材料方面做了很大的发挥。