Native图数据库

指一开始就是为了解决图类数据结构而设计的数据库

  1. 图数据库的存储
  2. 图数据库的查询和处理

Neo4j 数据库文件分类:

  • 标签
  • 节点
  • 属性
  • 关系
1
2
3
4
5
6
7
MATCH (node1:沪深股市 {name: "sha_600610"})-[relation]-(node2:人物_公司股东)
RETURN node1, node2, relation

1. 查找一个具有标签“沪深股市”,且有一键值对 {name: "sha_600610"} 的节点
2. 查找节点的所有双向关系
3. 在这些关系中,要求另外一个节点具有“人物_公司股东”标签
4. 返回节点,及满足要求的关系和相关节点

Property Graph Model

核心要素:

  • 节点

    ··· 每个节点都是图中的一个实体
    ··· 每个节点可以容纳足够多的属性,以键值对形式
    ··· 每个节点可以标注一个标签,相当于特定知识领域的分类标准

  • 关系

    ··· 每条关系可以是有向的、无向的、命名的
    ··· 每条关系必须有两个对应的节点

Cypher

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#### 1. 全表扫描
Neo4j:
Match(p:Product)
RETURN p

mysql: SELECT p.* FROM products as p

#### 2. 查询价格最贵的10个商品,只返回商品名字和单价
Neo4j:
Match(p:Product)
RETURN p.name, p.price
ORDER BY p.price DESC LIMIT 10

mysql: SELECT p.ProductName, p.UnitPrice
FROM products as p
ORDER BY p.UnitPrice DESC LIMIT 10

#### 3. 按照商品名字筛选
MATCH (p:Product)
WHERE p.productName = "Chocolade"
RETURN p.productName, p.unitPrice

MATCH (p:Product {productName:"Chocolade"})
RETURN p.productName, p.unitPrice

SELECT p.ProductName, p.UnitPrice
FROM products AS p
WHERE p.ProductName = 'Chocolade'

Ecosystem

neo4j browser
neo4j bloom

图数据库优势

更好、更快速的查询和分析
更简化、更自然的数据建模
由点及面地挖掘知识体系
面向对象的思维
更强大的问题解决能力
迅速的实时扩展
并发查询和实时数据更新
深度关联分析
动态模式更改
简单的多维度数据表示
高级聚合及分析
增强的机器学习和人工智能
横向扩展和纵向扩展以管理大型图