Skip to main content

图数据库选型

与一般的数据库指标测试关注的点不同,由于设计环境是一个或几个用户低强度使用,所以更加关注最小运行需求

备选列表

选择GitHub高星项目,按star数量排序

DgraphCayleyArangoDBneo4jNebulaGraphJanusGraphOrientDB
LanguageGoGoC++JavaC++JavaJava

测试方式

均使用官方文档中的docker部署方式,均采用最新版本,均为最小可用配置,均为空数据库,均包含WebUI服务。
在启动完成后观察待机状态下的资源占用情况

结果

测试机CPU为Intel Atom® Processor C2350 1M Cache, 1.70 GHz

  • 部署方面,只有NebulaGraph不支持单容器部署且配置较复杂,ArangoDB和JanusGraph的容器则无法正常启动
  • CPU使用方面,Dgraph长期保持7%左右,而Nebula和neo4j则可以观察到突发的CPU使用
  • 内存使用方面,neo4j和OrientDB由于语言特性不出意外地用掉了最多的内存,然后是Dgraph和NebulaGraph不相上下
  • 进程数方面,NebulaGraph申请的进程数明显多于其他数据库
  • 项目活跃度方面,Dgraph在2022上半年未发布过新版本,issue仍有回复;Cayley从2020年之后未发布版本,issue无人回复;其他项目均在近期有版本发布
  • 版本号方面,Cayley和JanusGraph还未达到1.0版本

根据结果

  • NebulaGraph 是综合来看比较好的选择,既有较低的单机负载,也可以免费扩容。
  • Cayley 虽然已经不活跃,但也是迭代多年的老项目,其特点是可以选择包括SQLite在内的多种存储后端,并且可以作为库嵌入Golang工程中,可以尝试能否用于让项目运行在更差的环境中