-
图数据库发展史(分久必合)
-
Arango多模场景
解决问题
- 存储成本高,开发复杂度高,运维成本高
- 不同数据库之间的事务难以保证
- 多个数据源造成应用功能脆弱
-
指标对比
➀ 图数据库场景下指标
| 数据库名称 | 首次release | 是否开源 | 开发语言 | 查询语言 | Scheme | 主数据库模型 | 图模型 | 支持集群 | ACID事务 | 查询类型 | 相关文档 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| ArangoDB | 2012 | 是 | C++ | AQL | 无 | 多模型 | LPG | 复制 +分片 | 支持 | OLTP | 少 |
| AllegroGraph | 2004 | 否 | - | SPARQL | 有 | 图模型 | RDF | 复制支持 | 支持 | OLTP | - |
| Amazon Neptune | 2017 | 否 | - | Gremlin | 无 | 图模型 | LPG/RDF | 复制支持 | 支持 | OLAP/OLTP | - |
| Neo4j | 2007 | 是 | Java | Cypher | 无+可选 | 图模型 | LPG | 复制支持 | 支持 | OLAP/OLTP | 多 |
| OrientDB | 2010 | 是 | Java | 类SQL,无join | 无 | 多模型 | LPG | 复制 + 分片 | 支持 | OLTP | 少 |
对比分析
- 在图领域来看,Neo4j有较大优势,原因:1)Cypher语言使用比AQL更友好,执行效率高;2)Neo4j可以支持OLAP场景,而ArangoDB在OLAP场景下难以支撑。
- 国内企业使用ArangoDB较少,可参考的指标有限,除了官方文档,参考资料较少。
➁ 多模数据库对比
Ⓐ Google Trends热度对比
Ⓑ 基础指标对比
| 对比指标 | ArangoDB | OrientDB | Virtuoso |
|---|---|---|---|
| 主数据库模型 | Document storeGraph DBMSKey-value storeSearch engine | Document storeGraph DBMSKey-value storeSearch engine | Document storeGraph DBMSNative XML DBMSRelational DBMSRDF storeSearch engine |
| DB-Engines 各模型排名 | Score5.65Rank#71 Overall#11 Document stores#4 Graph DBMS#11 Key-value stores#9 Search engines | Score5.07Rank#78 Overall#13 Document stores#5 Graph DBMS#12 Key-value stores | Score5.67Rank#70 Overall#10 Document stores#3 Graph DBMS#2 Native XML DBMS#39 Relational DBMS#2 RDF stores#8 Search engines |
| 最初发布时间 | 2012 | 2010 | 1998 |
| 最近发布时间 | 3.7.9, March 2021 | 3.1.9, February 2021 | 08.03.3316, March 2020 |
| 支持的操作系统 | LinuxOS XWindows | All OS with a Java JDK (>= JDK 6) | AIXFreeBSDHP-UXLinuxOS XSolarisWindows |
| 支持SQL查询 | no | SQL-like query language, no joins | yes |
| 支持访问方式 | AQLFoxx FrameworkGraph API (Gremlin)GraphQL query languageHTTP APIJava & SpringDataJSON style queriesVelocyPack/VelocyStream | GremlinJava APIRESTful HTTP/JSON API | ADO.NETGeoSPARQLHTTP APIJDBCJena RDF APIODBCOLE DBRDF4J APIRESTful HTTP APISesame REST HTTP ProtocolSOAP webservicesSPARQL 1.1WebDAVXPathXQueryXSLT |
| 支持服务端语言 | C#C++ClojureElixirGoJavaJavaScript (Node.js)PHPPythonRRust | .NetCC#C++ClojureJavaJavaScriptJavaScript (Node.js)PHPPythonRubyScala | .NetCC#C++JavaJavaScriptPerlPHPPythonRubyVisual Basic |
| 一致性支持 | Eventual ConsistencyImmediate ConsistencyOneShard (highly available, fault-tolerant deployment mode with ACID semantics) | Immediate Consistency | |
| 支持事务 | ACID | ACID | ACID |
分析对比【成本】
- 从多模领域来看,Virtuoso、ArangoDB、OrientDB从DB-Engines与google trends在排名与搜索热度都处于同一阶段,Virtuoso支持的模型、搜索热度及排名相比其他两者略微占优。但是ArangoDB和OrientDB提交代码活跃度比Virtuoso更高,所以总体而言三者相差不大。
- 相比单个领域数据库,如KV存储、文档存储、图存储,多模数据库能融合处理能力,将多种模型数据的操作管理需求下沉到数据库系统,使得应用在效率、成本、体验上可以获得非常明显的提升。
Ⓒ 性能场景(来自Arango官方)
-
与MongoDB,Neo4j,OrientDB, PostGres性能对比
近邻节点及多近邻节点遍历性能对比图
对比分析【图核心算法】
在处理读取、写入、同步写入、聚合、最短路径、获取近邻节点与属性及内存使用上,ArangoDB都比较占优。但是由于测试数据来自ArangoDB官方,我们可以观察OrientDB与Neo4j相关的数据信息。
-
与mysql性能对比
- 测试结果
- 读写速度
- 基础监控
分析对比【读写速度 + 基础监控 指标 】
- 三种场景下,mysql与ArangoDB的查询性能基本持平
- 在创建订单场景下,ArangoDB表现优于Mysql,可以得出ArangoDB在写多读多的场景下相对占优
- 从CPU、MEM平均使用率来看,mysql在可靠性、稳定性上比ArangoDB更有优势
➂ 总结
- ArangoDB在图场景下整体表现不如Neo4j,但是性能表现有一定优势
- ArangoDB读写速率,特别在读多写多的场景下,性能可以持平甚至超过mysql
- ArangoDB的可靠性、稳定性方向表现有一定的不足,需要在不同场景下测试后给出结论