图存储是一个包含一连串节点和关系的系统。图存储有三个字段:节点(对象)、关系(对象之间的联系)和属性
节点:通常是现实世界中对象的表现,如人名、组织、电话号码、网页或计算机节点;
关系:认为是对象之间的联系,通常被表示为图中两个节点之间连接线
目的:分析对象之间的关系、通过特定方式访问图中节点
场景:社交网路、规则引擎、生成组合和需要快速分析复杂网络结果并从中找出模式
举例:某人社交网络示意图,与他建立直接或者间接联系的朋友数量,以及不同朋友之间的紧密程度
图数据库善于处理大量复杂、互连接、低结构化的数据,这些数据变化迅速,需要频繁的查询。
图数据库和传统的关系型数据库操作的不同
操作 | 关系型数据库 | 图数据库 |
查询 | 根据索引或逐条查询 | 采用图的算法 |
事件处理 | 不能将事件通知到外部程序 | 有监听接口可供外部程序监听 |
创建索引 | 只能对表或视图创建索引,数据量一大,则效率迅速下降 | 可以创建只适用于图数据的“位置”索引、“特性”索引、“对象数据”索引等,且性能高效 |
常见的图数据库
名称 | 说明 | 注释 |
AllegroGraph | RDF GraphStore | |
DEX | High-performance Graph Database | |
Neo4j | 提供了大规模可扩展性,在一台机器上可处理数十亿节点/关系/属性的图像,可以扩展到多台机器并行运行。解决了查询的性能衰退。以相同速度遍历节点与边,与数据量无关。 | |
FlockDB | 由Twitter开发,不优化遍历图,优化了超大规模邻接矩阵查询,快速读写和可分页查询。主要是解决可伸缩性。将图存储为一个边的集合 |