holt-cj 是基于 badger-cj 的嵌入式图数据库,约720行代码,支持顶点、边、多标签、JsonValue 属性、邻接索引、Gremlin 风格惰性遍历,以及事务与备份恢复。邻接查询通过索引较快,但未实现属性索引,has(key,value) 需全量过滤,V() 也全量扫描。适合以邻接查询为主的中小规模单机嵌入式场景,不适合属性检索、路径算法和十万级顶点。
文章介绍PostgreSQL的SQL/PGQ图查询扩展:可在现有表上定义属性图,并用类Cypher模式查询;重写器将图模式转换为普通JOIN和UNION,复用索引、统计与并行查询,无需新执行器。已提交实现仅支持100项标准特性中的26项,缺少量词、路径模式和变长边等关键功能。该功能因目录表示和依赖问题从PostgreSQL 19撤回,预计在20回归;变长边是未来重点。
本文介绍图数据库基础:图由顶点和边构成,分为有向图、无向图和加权图,适用于社交网络、欺诈检测等关系密集场景。行业标准是带标签属性图(LPG),可为节点和边附加标签与键值属性。图数据库分为原生与非原生两类:原生系统优化邻接访问,非原生系统则基于关系、文档或键值存储构建。调查显示约66%的图数据库为非原生,其中24%基于关系数据库,这正是PostgreSQL切入图领域的背景。
穿透式监管利用图数据库突破形式审查,实现实质风险与最终责任的穿透识别。华为GES从股权、资金、供应链、数据四个维度提供支撑:股权穿透识别隐性控制与最终受益人;资金链穿透监控流向与表外负债;供应链穿透追溯物料影响范围;数据穿透构建决策知识图谱,实现全程可溯、责任闭环。
本文介绍如何用Python和Neo4j构建知识图谱,涵盖建模、数据加载与查询优化。核心在于利用图数据库的索引无关邻接实现高效多跳查询,优于SQL的多次连接。内容包括节点/关系建模原则、UNWIND批量加载、索引与约束设置、查询计划分析,以及结合向量搜索构建AI知识图谱的方法,并附完整可运行脚本。
> 本文是写作规划,不是可发布正文。拆解对象:属性图(property graph)存储与遍历引擎——以 Neo4j 5.x(record / aligned / block store)为主线,TinkerPop / JanusGraph、TigerGraph 作对照;Cypher / Gremlin 只写到「计划与…
本文比较六种图数据库引擎的架构差异,聚焦邻接布局、查询表面、事务、扩展和运维五轴。TigerGraph采用原生并行存储与MPP/BSP执行,JanusGraph依赖外置宽行图层,Neptune基于四元组索引和云共享存储,AGE映射PostgreSQL表,Memgraph支持内存与磁盘模式切换。文章强调机制定位而非性能排名,最终选型决策留待第16篇。
本文介绍JanusGraph基于TinkerPop接口,将图数据存储于Cassandra等宽行后端,采用邻接表布局,边双写,事务非必然ACID,依赖后端一致性。对比Neo4j原生存储,JanusGraph牺牲局部性换取可扩展性,用vertex-centric索引应对超节点,适合已有宽表集群的场景。
本文总结图数据库选型与接口设计:何时用原生图引擎、GraphRAG边语义分级(L0-L3)及存储建议。核心观点:深多跳、邻接局部性、事务边场景倾向原生图;GraphRAG边多为可重建的L0-L1,权限审计边需强一致存储。向量管语义,图管可达,按边分级选型,避免一刀切。
本文介绍Neo4j图数据库生产环境排障方法,核心是“三轴分流”:先判断慢查询属于计划基数(轴A)、存储I/O(轴B)还是锁/并发(轴C),再对症处理。文章强调超节点问题应优先优化建模与查询而非硬件,并给出内存三分(page cache、heap、OS)的配置与指标解读,以及锁死锁排查、慢查询固定流程和症状速查表。
本文为图数据库内核系列首篇,介绍属性图引擎在存储生态中的角色,对比行存、LSM、向量引擎与GraphRAG。重点阐述Neo4j的record与block存储格式、邻接代价模型、页缓存及Cypher计划边界,并规划16篇阅读路线,强调原生邻接布局对多跳查询性能的关键作用。
本文比较图数据库四种邻接布局(边表、CSR、指针链、Block内联)的代价模型,分析一次hop与k跳扩张的差异。核心观点:大O相同但常数、局部性、更新代价不同;幂律图超节点主导事故形态;选型需关注k、f、d_max和更新频率四个旋钮,而非品牌之争。
本文介绍Neo4j图数据库的Block存储格式,采用128字节固定主块内联节点与关系数据,溢出时分层使用动态存储、dense B+树及huge存储。相比Record系指针链,Block减少指针追逐,提升局部性,支持更高实体上限,但空节点有固定空间开销。该格式为Enterprise默认,Community仍用aligned。
本文介绍Neo4j图数据库record存储引擎布局:节点15字节、关系34字节、属性41字节、关系组25字节,均采用定长记录加指针链表结构。稀疏节点直接扫描关系链,密集节点通过关系组按类型分桶。aligned为Community默认格式,block为Enterprise推荐格式。
本文介绍图数据库Cypher计划中Expand算子家族:单跳Expand(All)生成邻居、Expand(Into)连接已知两端,变长路径需设上界防爆炸,Pruning优化仅需唯一终点,最短路径用双向BFS而非变长枚举。强调存储耦合、谓词下推及实操要点,如避免超节点扫描、量化路径剪枝等。
本文介绍Neo4j图数据库的page cache机制:页大小为8192字节,用于缓存磁盘上的图数据和原生索引。配置上建议显式设置server.memory.pagecache.size,并通过hit_ratio(应达98%以上)、usage_ratio、page_faults等指标监控健康度。Record格式易受随机指针颠簸影响,Block格式通过数据共置减少页访问,超节点则需建模优化。扩缓存只是优化手段之一。
本文介绍图数据库内核系列文章,聚焦属性图存储与遍历。内容涵盖Neo4j的record/block格式、邻接代价模型、索引、Cypher计划及事务处理,并对比TinkerPop、JanusGraph等引擎。系列共16篇,已发布13篇,旨在帮助工程师理解图存储底层机制及选型,区分原生图引擎与关系库递归CTE的适用场景。
本文介绍图数据库Neo4j的写入路径:创建关系时挂链或升dense,删除采用逻辑删除并复用ID,空间不立即归还OS。写放大影响读局部性,逼近阈值触发结构迁移,复用旧ID可能破坏缓存友好性。压实需用database copy工具。
本文介绍Neo4j 5的索引与约束机制。索引分四类:LOOKUP(标签/类型)、RANGE(属性范围)、TEXT(文本子串)、POINT(空间),用于加速查询起点选择,但不解决深度遍历爆炸问题。约束(唯一、存在、类型、KEY)保证完整性,但会带来写放大。过索引增加空间和写入成本,需谨慎设计。
本文介绍Neo4j图数据库中全文索引与向量索引的边界:两者均由Lucene驱动,不自动被Cypher规划器选用,需显式调用过程或SEARCH查询。全文索引用于分词匹配与打分,向量索引用于嵌入近邻搜索。内存上依赖OS缓存而非page cache,分数不可跨源比较,可与图拓扑扩展结合实现混合检索。
完成下面两步后,将自动完成登录并继续当前操作。