数据存储:大数据存储系统(4)--- 图存储系统(Graph Database)

本文转载自:https://blog.csdn.net/u013710265/article/details/72802802

            http://www.cnblogs.com/gardenofsjw/p/6921212.html  

一、图数据模型
(1)图的概念
G=(V,E):V为顶点的集合,E为边的集合。
有向图:边有方向
无向图:边没有方向;可以用有向图表达无向图:每条无向边->2条有向边。
(2)图数据存储系统

存储图顶点和边,提供顶点和边的查询。

二、Neo4j
(1)概念
Native graph database:采用自定义的结构在本地硬盘存储图,而不是存在数据库关系型表中。
开源Java实现。
(2)Neo4j存储
顶点:称为node
边:称为relationship
顶点和边上可以存储多个key-value值,称为property。
(3)Neo4j使用
Cypher:Declarative query language
Traversal:Embedded Java lib
(4)Cypher用法
Node:
  数据存储:大数据存储系统(4)--- 图存储系统(Graph Database)_第1张图片
Relationship:
  数据存储:大数据存储系统(4)--- 图存储系统(Graph Database)_第2张图片
Create:
  数据存储:大数据存储系统(4)--- 图存储系统(Graph Database)_第3张图片
Match:
  数据存储:大数据存储系统(4)--- 图存储系统(Graph Database)_第4张图片

(5)文件存储

  +Node.Relationship.Property 都放在一起存储,有unique id

  +relationship 同一个node的relationship是双向链表,指针为relationship id,node 存储第一个的id,每个relationship可能有多个     property。

  +Property 是单项链表,链表第一个存在与对应的node/relationship中

  +Neo4j对node.relathionship.property缓冲,property以key-value形式附加在node/relationship上

ACID:

  定义了transaction概念,采用类似snapshot isolation机制,一个transaction首先保存起来,直到transaction.finish()尝试真正修     改。采用多副本,主副本把transaction log发送到从副本,从副本replay log执行同样操作。 

  数据存储:大数据存储系统(4)--- 图存储系统(Graph Database)_第5张图片

数据存储:大数据存储系统(4)--- 图存储系统(Graph Database)_第6张图片

数据存储:大数据存储系统(4)--- 图存储系统(Graph Database)_第7张图片

 

三、RDF和Sparql 

  Resource Description Framework:w3c标准,广泛用于语义网络。每个RDF记录是三元组(subject, predicate, object)。

  Sparql 是RDF的查询语言  ?前缀代表变量,注意“.”


你可能感兴趣的:(大数据系统与大规模数据分析,课程)