博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大数据存储系统三_Document store、图存储系统
阅读量:6608 次
发布时间:2019-06-24

本文共 2243 字,大约阅读时间需要 7 分钟。

目录

一、Document Store

1.数据模型

1.1 Json

1.2 Google Protocol Buffer

2.MongoDB

2.1 API and Query Model

2.2 Architecture

二、图存储系统

1.图数据模型

2.Neo4j

3.RDF和Sparql

(本文为陈世敏老师课程笔记)

-----------------------------------------------------

一、Document Store

1.数据模型

1.1 Json

  特点:整体是一个object,可以嵌套数组且数组每个元素还可以object,完全动态不需要事先声明。

1.2 Google Protocol Buffer

  google推出,最初用来做网络协议,可以进行压缩编码和解码,需要预先定义。嵌套关系用语法树表达。

  required: 出现1次

  repeated: 出现0到多次

  optional: 出现0到1次

2.MongoDB

2.1 API and Query Model

  JSON是基本数据类型,存储为BSON二进制表示,一个database包含多个collections, 每个collection包含多个documents(<16MB)。

  一个database包含多个collections, 每个collection包含多个documents.

  Database ~ 关系型中的数据库概念

  Collection ~ 关系型中的table概念

  Document ~ 关系型中的记录概念

  不支持join

2.2 Architecture

  左单机,右分布式。

ACID:

  只能保证单个记录修改时候的一致性,没有transaction概念。

  并发控制可在document-level/collection-level二选一实现。

  Journaling每隔一段时间进行备份,采用write concern界定什么时候认为写完成,有不同的write concern等级:

  +Unacknowledged-写请求发送了,就认为完成

  +Acknowledged-MongoDB应答了收到写请求,就认为完成

  +Journaled-MongoDB把写请求记录在硬盘上的日志中,认为完成

  前两种并不能保证掉电后写请求仍然有效。

 

 

 

二、图存储系统

1.图数据模型

  G=(V,E)

2.Neo4j

2.1 数据存储

  自定义结构在本地硬盘存储图,而不是在数据库中,开源Java实现。

  +顶点:称为node

  +边:称为relationship

  +顶点和边上可以存储多个key-value值:称为property

2.2 Cypher举例

Node:(name:type, {property_key:value, key:value})

  (张飞:Student,{name:“张飞”,major : “计算机”, year: 2013})

  (体系结构:Course,{name:“体系结构”})

Relationship:

  -[name:type, {property_key:value, key:value}]->

  -[:Takecourse,{year:2014, grade:85}]->

Cypher Create:

  CREATE (张飞:Student,{name:“张飞”, major : “计算机”, year: 2013})    创建点

  CREATE (体系结构:Course,{name:“体系结构”})  创建点

  CREATE (张飞)-[:Takecourse,{year:2014, grade:85}]->(体系结构)  

  

Cypher Match:

  (a)-[*]->(b) 有路径从a到b

  (a)-[*3..5]->(b) 有路径从a到b,路径最短3步,最长5步

                                             

2.3 Neo4j系统结构

2.4 文件存储

  +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执行同样操作。 

  

 

3.RDF和Sparql 

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

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

 

转载于:https://www.cnblogs.com/gardenofsjw/p/6921212.html

你可能感兴趣的文章
TIANKENG’s rice shop
查看>>
iOS-----正则表达式
查看>>
SSH2搭建步骤 struts-2.2.3.1 hibernate-3.3.2 hibernate-annotations-3.4.0 spring-3.0.5
查看>>
建模心法(3) 模型的演进——保持简单和弹性的3个建议
查看>>
石子合并加强版
查看>>
hdu 4332 Constructing Chimney
查看>>
小白出品 单元测试相关——入门级说明书
查看>>
Linux系统学习笔记(1)
查看>>
浅析设计模式(五)——原型模式
查看>>
饿猫学java——String深入浅出
查看>>
poj 3624
查看>>
Unable to make the session state request to the session state server处理方法
查看>>
图的遍历(Python实现)
查看>>
CSS 笔记——背景布局
查看>>
洛谷P1880 石子合并 [NOI1995]
查看>>
angular限制输入框整数和小数的指令
查看>>
www改变GUITexture的贴图
查看>>
Android 类似launcher左右滑动(实例二)
查看>>
【相机篇】从到FlyCapture2到Spinnaker
查看>>
[Leetcode]35. Search Insert Position
查看>>