【图数据库内核】引擎对照句:TigerGraph、Neptune、AGE、Memgraph 与原生/图层分叉
内容提要
本文比较六种图数据库引擎的架构差异,聚焦邻接布局、查询表面、事务、扩展和运维五轴。TigerGraph采用原生并行存储与MPP/BSP执行,JanusGraph依赖外置宽行图层,Neptune基于四元组索引和云共享存储,AGE映射PostgreSQL表,Memgraph支持内存与磁盘模式切换。文章强调机制定位而非性能排名,最终选型决策留待第16篇。
延伸解读
五轴对照:机制定位而非性能排名
本文刻意回避性能排名,而是用邻接布局、查询表面、事务与一致、扩展模型、运维面五个轴来定位各引擎。这种对照方式强调架构机制差异,而非简单比较快慢。读者应关注引擎在五轴上的位置,例如TigerGraph的原生并行存储与MPP/BSP执行,Neptune的四元组索引与共享存储,AGE的PostgreSQL表映射。理解这些机制有助于根据自身需求初步筛选,但最终选型需结合第16篇的决策树。
原生存储与图层路线的分叉
文章清晰区分了原生图存储(如Neo4j、TigerGraph、Memgraph内存模式)与基于外置存储的图层方案(如JanusGraph、AGE、Memgraph磁盘模式)。原生存储强调拓扑局部性和引擎内优化,而图层方案复用现有存储生态(如Cassandra、PostgreSQL),但可能牺牲部分图遍历性能。选择时需权衡:若已有相关运维基础,图层方案可能更经济;若追求深度多跳性能,原生存储更合适。
排除法:按工作负载形状初步筛选
文章提供了基于工作负载的排除法提示,而非直接推荐。例如,深度多跳且需引擎内局部性时,优先考虑原生存储族;已有Cassandra/HBase运维时,JanusGraph图层方案更合理;迭代全局算法(如PageRank)时,TigerGraph的GSQL和BSP执行对口;必须留在PostgreSQL生态时,AGE或边表可行;云托管场景下,Neptune的托管服务更省心。这些提示帮助读者缩小选择范围,但最终决策仍需结合第16篇的完整分析。
Q&A
TigerGraph 的架构特点是什么?
TigerGraph 采用原生并行图(NPG)架构,使用 GSE(图存储引擎)和 GPE(图处理引擎)实现本地存储与计算结合,支持实时更新和并行处理。它使用 GSQL 语言,采用 MPP/BSP 执行模型,强调大规模并行遍历和迭代算法。
JanusGraph 与 TigerGraph 在存储和查询上有何不同?
JanusGraph 依赖外置宽行图层(如 Cassandra/HBase),使用 Gremlin 查询语言,事务不必然 ACID;而 TigerGraph 使用自研原生拓扑存储,采用 GSQL 语言,支持 MPP/BSP 执行,强调并行遍历和迭代算法。
Neptune 的存储和查询模型是怎样的?
Neptune 基于四元组索引(S/P/O/G)和云共享存储,默认维护 SPOG、POGS、GPSO 三套索引,支持 Gremlin、openCypher 和 SPARQL 查询,适合托管 OLTP 场景,计算与存储分离。
Apache AGE 如何实现图模型与关系模型的共存?
Apache AGE 作为 PostgreSQL 扩展,将每个图映射为一个 Postgres namespace,顶点和边标签对应为表(父表 _ag_label_vertex 和 _ag_label_edge,具体标签派生子表),支持 ANSI SQL 和 openCypher 混合查询,利用 PostgreSQL 的事务和备份生态。
Memgraph 的存储模式有哪些?各有什么特点?
Memgraph 提供三种存储模式:IN_MEMORY_TRANSACTIONAL(默认,内存为主,支持 ACID)、IN_MEMORY_ANALYTICAL(关闭 Delta 以加速导入和分析,但无完整 ACID 保证)、ON_DISK_TRANSACTIONAL(使用 RocksDB 作为后台 KV,适合大于内存的场景)。
根据文章,如何根据工作负载选择图数据库引擎?
文章提供排除法:深度多跳且需要页局部性时优先考虑原生 store 族(Neo4j、TigerGraph、Memgraph-IM);已有 Cassandra/HBase 且图是附加模型时选 JanusGraph;需要迭代全局算法(如 PageRank)时选 TigerGraph;必须留在 Postgres 进程内时选 AGE 或边表;云托管且少碰磁盘格式时选 Neptune;导入吞吐优先且可放弃 ACID 时选 Memgraph analytical 模式。
文章比较图数据库引擎时使用了哪些维度?
文章使用五个轴进行比较:邻接布局(一次 hop 如何访问邻居)、查询表面(支持的查询语言)、事务与一致性、扩展模型、运维面(是否自带存储、是否绑定云等)。