本文转载自:https://blog.csdn.net/u013710265/article/details/72802802
<https://blog.csdn.net/u013710265/article/details/72802802>
http://www.cnblogs.com/gardenofsjw/p/6921212.html
<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:
Relationship:
Create:
Match:
(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执行同样操作。
三、RDF和Sparql
Resource Description Framework:w3c标准,广泛用于语义网络。每个RDF记录是三元组(subject,
predicate, object)。
Sparql 是RDF的查询语言 ?前缀代表变量,注意“.”
热门工具 换一换