💠

💠 2024-12-03 19:35:05


图数据库

Neo4j、OrientDB、ArangoDB、JanusGraph、HugeGraph、Dgraph、TigerGraph、Memgraph、NebulaGraph、SurrealDB、Cayley

PG系列:Agentsgraph Age

DB-Engines Ranking - popularity ranking of graph DBMS

memgraphC++ 内存,Cypher查询,兼容Neo4j
vesoft-inc/nebulaC++ 分布式,nGQL查询语言,兼容部分Cypher语法
surrealdb/surrealdbRust 分布式, 类SQL/GraphQL查询 偏业务应用
dgraph-io/dgraphGo 分布式,GraphQL查询 偏业务应用
orientechnologies/orientdb多模数据库(图,文档,全文索引)

cayleygraph/cayleyGoogle开源

知识图谱 通常使用图数据库作为存储

概念

一个属性图是有向图,由顶点(Vertex),边(Edge),标签(Lable),关系类型(Relationship Type)和属性(Property)组成。

在属性图形中,节点和关系是最重要的实体,顶点也称作节点(Node),边也称作关系(Relationship)。 所有的节点是独立存在的,但是可以为节点设置标签,那么拥有相同标签的节点属于一个分组,也就是一个集合。关系通过关系类型来分组,类型相同的关系属于同一个集合。 节点可以有0个、1个或多个标签,但是关系必须设置关系类型,并且只能设置一个关系类型。

关系是有向的,关系的两端是起始节点和结束节点,通过有向的箭头来标识方向,节点之间的双向关系通过两个方向相反的关系来标识。

图算法操作库

jgrapht/jgrapht: Master repository for the JGraphT project


QL 查询语言

Neo4j - Cypher vs Gremlin query language - Stack Overflow
opencypher/cypher-for-gremlin

一文了解各大图数据库查询语言(Gremlin vs Cypher vs nGQL)| 操作入门篇-腾讯云开发者社区-腾讯云

Cypher

openCypher · openCypher | Cypher (query language) - Wikipedia

Cypher Cheat SheetCypher 使用手册
Graph Database

Neo4j、RedisGraph、AgensGraph(PG+插件)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
    // 查询任意节点
    MATCH (n) RETURN n limit 10
    // 查询 疾病 关联的 所有病征
    MATCH (d:疾病)-[:疾病的症状]->(s:疾病症状) WHERE d.名称 = '血栓形成' RETURN s
    // 查询任意层级具有检查关系的节点 例如 疾病A-疾病B-疾病C-检查D 可以查出D
    MATCH (n:Disease)-[r:`检查`*]-(e:Examination)   WHERE n.name = '上呼吸道感染' RETURN DISTINCT e.name
    // 统计函数查询
    MATCH (d:Disease)-[r1]-(s:Symptom|Duration) WHERE d.name IN ['慢性支气管炎'] AND s.name IN ['咳嗽', '气促'] RETURN sum(r1.weight)

    // 修改属性
    MATCH (n :Disease) Where n.name = '支气管扩张' SET n.popularity = 2 RETURN n

    //  删除所有关系
    MATCH ()-[r]->() delete(r)
    // 删除所有节点
    MATCH (n) delete(n)
    

Gremlin

Gremlin中文文档

Janus Graph、InfiniteGraph、Cosmos DB、Amazon Neptune

SPARQL

SPARQL Query Language for RDF