热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

选择多模型DBMS时需要考虑哪些因素?(OrientDB与ArangoDB)

如何解决《选择多模型DBMS时需要考虑哪些因素?(OrientDB与ArangoDB)》经验,为你挑选了1个好方法。

我希望能够进入多模型DBMS的世界,我没有特别的用例,只想开始学习.

我发现有两个突出的东西 - OrientDB与ArangoDB,但无法找到任何有意义的比较,在它们之间不受影响.有人能否解释两者之间的功能差异,以及使用其中一个的警告?如果我学会了一个,我能够轻松过渡到另一个吗?

(我也标记了FoundationDB,但它是专有的,我可能不会考虑它)

这个问题要求对想要了解多模型DBMS的进行 OrientDB与ArangoDB之间的一般比较,而不是关于哪个更好的自以为是的答案.



1> codemix..:

免责声明:我不再推荐OrientDB,请参阅下面的评论.


使用ArangoDB和OrientDB后,我可以提供稍微偏见的意见.它仍然有偏见,因为我是OrientDB的node.js驱动程序 - oriento的作者,但我对公司或产品没有既得利益,我只是需要使用OrientDB .

ArangoDB和OrientDB都针对类似的市场并且有很多相似之处:

    两者都是多模型,您可以使用它们来存储文档,图形和简单的键/值.

    两者都支持Gremlin,但与他们自己喜欢的查询语言相比,它确实是二等公民.

    两者都支持Javascript中的服务器端"存储过程".在这两个系统中,这都来自一个稍微不那么惯用的Javascript API,尽管ArangoDB要好得多.这是在即将推出的OrientDB版本中修复的.

    两者都提供REST API,两者都旨在通过Javascript请求处理程序用作"API服务器".这在ArangoDB中比OrientDB更实用.

    两者都是在许可许可下分发的.

    两者都是ACID并且具有事务支持,但是在这两个事务中都是服务器端操作 - 它们更像是原子批次的命令,而不是传统RDBMS中可能习惯的事务类型.

但是,有很多不同之处:

    ArangoDB没有"链接"的概念,这是OrientDB中非常有用的功能.它们允许单向关系(就像网络上的超链接一样),没有边缘的开销.

    ArangoDB是用C++(和Javascript)编写的,而OrientDB是用Java编写的.两者都有其优点:

    使用C++编写意味着ArangoDB使用V8,这是一个为node.js和Google Chrome提供支持的高性能Javascript引擎.而用Java编写的意味着OrientDB使用Nashorn,它仍然很快但不是最快的.这意味着与OrientDB相比,ArangoDB可以提供与node.js生态系统更高级别的兼容性.

    用Java编写意味着OrientDB在更多平台上运行,包括例如Raspberry PI.这也意味着OrientDB可以利用许多其他用Java编写的技术,例如,OrientDB通过Lucene提供了极好的全文/地理空间搜索支持,ArangoDB无法使用.

    OrientDB使用SQL的方言作为其查询语言,而ArangoDB使用自己的自定义语言AQL.从理论上讲,AQL更好,因为它是为问题明确设计的,在实践中虽然它感觉与SQL非常相似但具有不同的关键字,并且是另一种学习的语言,而如果习惯了SQL,OrientDB的实现会感觉更舒服.SQL是声明性的,而AQL是必不可少的 - YMMV在这里.

    ArangoDB是一个"大多数内存"数据库,当大多数数据适合RAM时,它最有效.这可能适合您的需要,也可能不适合您.OrientDB没有这个限制(但也喜欢RAM).

    OrientDB完全面向对象 - 它支持具有属性和继承的类.这非常有用,因为它意味着您的数据库结构可以将1-1映射到您的应用程序结构,而不需要像ActiveRecord那样丑陋的黑客攻击.ArangoDB通过Foxx中的模型支持相似的东西,但它更像是一个可选的插件,而不是数据库工作方式的核心部分.

    ArangoDB通过Foxx提供了很大的灵活性,但它并不是由具有强大服务器端JS背景的人设计的,并且在很多时候重新发明了轮子.他们没有利用像express这样的框架来处理他们的请求,而是创建了他们自己的Sinatra克隆,当然它使它几乎与express相同(express也是一个Sinatra克隆),但略有不同,并且意味着没有express的中间件或插件可以重复使用.同样,它们嵌入了V8,但没有嵌入libuv,这意味着它们不提供与node.js相同的非阻塞API,因此用户无法确定给定的npm模块是否可以在那里工作.这意味着非平凡的应用程序不能使用ArangoDB作为后端的替代品,这抵消了Foxx的许多潜在用途.

    OrientDB支持第一类属性级别和数据库级别索引.您可以直接查询和插入特定索引以获得最大效率.我在ArangoDB中没有看到对此的支持.

    OrientDB是更成熟的选择,拥有许多知名用户.ArangoDB较新,不太知名,但增长迅速.

    ArangoDB的文档非常出色,它们为许多不同的编程语言提供官方驱动程序.OrientDB的文档并不是很好,虽然大多数平台都有驱动程序,但它们是社区驱动的,因此并不总是与最新的OrientDB功能保持同步.

    如果您使用的是Java(或Java桥),则可以将OrientDB作为库直接嵌入到应用程序中.在ArangoDB中无法使用此用例.

    OrientDB具有用户和角色的概念,以及记录级安全性.这对你来说可能是一个杀手锏,对我而言.它还支持基于令牌的身份验证,因此可以使用OrientDB作为授权/验证用户的主要方式.OrientDB还具有LDAP集成功能.相比之下,ArangoDB仅支持非常简单的auth选项.

两种系统都有自己的优势,因此在它们之间进行选择取决于您自己的情况:

如果您正在构建一个小型应用程序,并且您是一名优化开发人员工作效率的Web开发人员,那么使用ArangoDB可能更容易启动并快速运行.

如果您正在构建一个更大的应用程序,可能存储数千兆字节或数TB的数据,或拥有数千个并发用户,或拥有"企业"用例,或需要细粒度的安全控制,那么OrientDB就是您的最佳选择.

如果要存储RDF或类似结构的链接数据,请选择OrientDB.

如果您使用的是Java,请选择OrientDB.

注:这是(我的意见)游戏的状态今天,事情很快发生变化,我不会低估背后ArangoDB的真棒团队的无情效率,我只是认为这是不太有尚未 :)


查尔斯皮克(codemix.com)


这篇文章现在已经过了一年多了,而且(除了你自己的观点转移之外),因为这些都是快速发展的产品,我认为当这个优秀的摘要首次编写时,情况已经发生了变化.您或其他任何人是否可以编辑帖子并使用更新的信息进行更新?ArangoDB是否解决了其突出的任何缺点(例如,当数据不在RAM中时,改进的auth,更好的性能,或异步API)?OrientDB,无论是在功能,稳定性还是开发方面?
不幸的是我不能删除这个答案,但我想收回你使用OrientDB的建议.自写这个答案以来,我们遇到了一些非常重要的基本问题,这些问题迫使我们迁移到另一个系统.
由于NDA,我无法提供很多细节,但我们遇到了一系列问题,这些问题是OrientDB开发方式的直接结果,而不是概念上的任何错误.简而言之,它并没有按照您期望从数据库供应商那里获得的高标准开发,虽然它声称具有很多功能,但很多功能都被淘汰或只是不起作用.我们花了很多时间和精力为客户开发OrientDB,最终让所有人失望.
@codemix您无法删除,但您可以在顶部编辑和添加某种"免责声明",您的注释很容易被忽略,但您所写的内容对于那些决定选择数据库供应商的人来说非常重要.
为什么,为什么?
为什么呢,大话到底要放哪儿。我们需要更多信息
推荐阅读
  • Node.js 教程第五讲:深入解析 EventEmitter(事件监听与发射机制)
    本文将深入探讨 Node.js 中的 EventEmitter 模块,详细介绍其在事件监听与发射机制中的应用。内容涵盖事件驱动的基本概念、如何在 Node.js 中注册和触发自定义事件,以及 EventEmitter 的核心 API 和使用方法。通过本教程,读者将能够全面理解并熟练运用 EventEmitter 进行高效的事件处理。 ... [详细]
  • TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得
    TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 本文深入解析了Java 8并发编程中的`AtomicInteger`类,详细探讨了其源码实现和应用场景。`AtomicInteger`通过硬件级别的原子操作,确保了整型变量在多线程环境下的安全性和高效性,避免了传统加锁方式带来的性能开销。文章不仅剖析了`AtomicInteger`的内部机制,还结合实际案例展示了其在并发编程中的优势和使用技巧。 ... [详细]
  • MySQL数据库安装图文教程
    本文详细介绍了MySQL数据库的安装步骤。首先,用户需要打开已下载的MySQL安装文件,例如 `mysql-5.5.40-win32.msi`,并双击运行。接下来,在安装向导中选择安装类型,通常推荐选择“典型”安装选项,以确保大多数常用功能都能被正确安装。此外,文章还提供了详细的图文说明,帮助用户顺利完成整个安装过程,确保数据库系统能够稳定运行。 ... [详细]
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • 为何Serverless将成为未来十年的主导技术领域?
    为何Serverless将成为未来十年的主导技术领域? ... [详细]
  • 本课程首先介绍了全栈开发的最后一公里为何重要,并详细探讨了搭建线上生产环境的关键步骤。随后,通过五个本地Node.js项目的实战演练,逐步展示了从快速构建纯静态简易站点到复杂应用的全过程,涵盖了环境配置、代码优化、性能调优等多方面内容。 ... [详细]
  • 微软发布紧急安全更新,所有Windows 10版本均面临影响!
    微软于周五紧急发布了两项安全更新,旨在解决Windows 10所有版本中Windows Codecs库和Visual Studio Code应用存在的安全隐患。此次更新是继本周初发布的月度例行安全补丁之外的额外措施,凸显了这些问题的紧迫性和重要性。这些漏洞可能被攻击者利用,导致系统权限提升或远程代码执行等严重后果。建议用户尽快安装更新,以确保系统的安全性。 ... [详细]
  • Controller Generator Outputs Model JavaScript File to App Assets Directory ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
  • 本文详细介绍了 Sublime Text 3 在 2021 年的激活密钥及其在线激活方法。用户可以通过提供的链接访问云海天教程,获取更多详细的激活码信息和操作步骤。此外,文章还提供了安全可靠的激活方案,帮助用户顺利激活软件,提升编程效率。 ... [详细]
  • Sublime Text 3 注册密钥及激活方法详解
    本文详细介绍了Sublime Text 3的注册密钥获取与激活方法,旨在帮助用户合法且高效地使用这款强大的文本编辑器。文章不仅提供了最新的注册密钥信息,还涵盖了详细的激活步骤,确保用户能够顺利激活软件,享受其带来的便捷与高效。此外,文中还简要对比了Sublime Text 3与其他主流文本编辑器的功能差异,为用户提供更多选择参考。 ... [详细]
author-avatar
张怡如秋岳
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有