【图数据库内核】图引擎全景:属性图作为一等公民的存储与遍历
定位属性图相对行存/LSM/向量/GraphRAG 的生态位;钉住邻接代价、Neo4j store format(record→block)、page cache、索引与 Expand、Cypher 计划五条坐标系,并以 Angles & Gutierrez 谱系与原生图争论收束系列路线。
发布来自土法炼钢兴趣小组的知识、笔记、进展和应用。主题包括数据结构和算法、编程语言、网络安全、密码学等。
共 14 篇文章 · 返回首页
定位属性图相对行存/LSM/向量/GraphRAG 的生态位;钉住邻接代价、Neo4j store format(record→block)、page cache、索引与 Expand、Cypher 计划五条坐标系,并以 Angles & Gutierrez 谱系与原生图争论收束系列路线。
把同一逻辑图落成边表+索引、CSR、原生关系链与 Neo4j block 内联四条路径,用统一代价语言比较一次 hop 与 k 跳扩张;钉住幂律超节点与局部性,为后续 record/block 布局篇垫底座。
以 Neo4j 5.26 record-storage-engine 源码钉住 standard/aligned 固定记录:15B 节点、34B 关系、41B 属性、25B relationship group;讲清 sparse 链、dense 阈值与一次 hop 的指针路径。
对照第 03 篇 record 指针链,钉住 Enterprise 推荐的 block 布局:block.x1.db 128 B 主块、node/relationship 动态 store、big_values、relationship dense 多根 B+ 树与实体上限;重写一次 hop 的读路径。
把第 03–04 篇的 record/block 布局接到 Neo4j page cache:8192 B 页、server.memory.pagecache.size、hit_ratio/faults 计量,以及 sparse 链、block 内联与超节点如何改写 pin/fault 形态。
拆解 Neo4j 写路径:RelationshipCreator 的 sparse 挂链与 dense 转换、逻辑删除与 .id 复用、block 主块/动态重定位,以及删除如何反过来打碎读路径局部性;锁与隔离细节留给第 11 篇。
钉住 Neo4j 5 搜索性能索引(LOOKUP / RANGE / TEXT / POINT)与约束(唯一、存在、类型、KEY)如何决定「从哪里开始走」;对照 token lookup、过索引写放大,以及索引起点 × 深度 expand 的经典事故。
划清 Neo4j FULLTEXT / VECTOR 索引相对 RANGE/TEXT 与拓扑 expand 的边界:二者均走 Lucene、吃 OS page cache;查询靠过程/SEARCH 而非自动计划;并链到站内 search-engine 与 vector-engine,不重写倒排与 ANN 全书。
拆解 Cypher 遍历算子 Expand(All/Into)、OptionalExpand、VarLengthExpand(All/Into/Pruning)与最短路径双向 BFS;钉住路径爆炸、DISTINCT 剪枝、量化路径谓词,以及 expand 如何吃第 03–05 篇的 store 与 page cache。
读懂 EXPLAIN/PROFILE:自下而上的算子树、Estimated Rows 与 Rows 的落差、DB Hits 与 page cache;钉住行流基数、幂律下选择性失真,以及索引起点 × Expand 的经典计划事故。
钉住 Neo4j 默认 read-committed、遍历不受写保护、lost update 与索引扫描异常;对照 sparse/dense 建边锁、死锁检测与 MERGE 乱序取锁,并接到第 06 篇写入路径与站内 MVCC 对照。
钉住 Neo4j 集群里 database primary/secondary 与服务器解耦、Raft 写多数、secondary 异步事务日志追赶;说明 bookmark 因果链如何接第 11 篇的「提交可见」,并划清 Composite 与运维手册边界。
分清 Apache TinkerPop 的 structure/process 接口与 JanusGraph 在 Bigtable 后端上的邻接表布局;对照 Neo4j 原生指针/block、边双写、事务非必然 ACID、图索引与顶点中心索引,并为第 14 篇选型对照垫底座。
补齐站内缺失的图拓扑存储与遍历内核:属性图模型、Neo4j record/aligned/block 布局、page cache 与 dense 节点、标签索引、Expand 与 Cypher 计划边界,以及 TinkerPop/JanusGraph 对照与 GraphRAG 接口。