Graph Databases—Chapter 3 Graphs and Connected Data阅读笔记
2013-12-13 11:51
351 查看
本章内容:
着重讲述聚合存储(Key-Value,Documents, Bigtable)以及RDBMS(关系型数据库)在处理互有联系数据时查询延时高、开发成本高以及维护困难等缺点。从而引出图数据库用于处理互有联系数据的优点,查询延时性低、拓展性高、维护成本低等。目前图数据库还未广泛流行。
下面着重对重点知识汇总:
1、The Aggregate Model: Lacking Relationships
聚合模型缺乏关系。所谓聚合模型,包括Key-Value存储系统、Documents存储系统以及Columns存储系统。所谓缺乏关系,换句话说,就是“伪装关系”。对于关系的操作需要开发人员进行编程实现,这是一项很费时费力的工作。
2、聚合存储处理关系型数据的一个实例解析,如下图:
在这张图上,我们需要回答两个问题,第一个问题是“Bob的朋友有哪些?”第二个问题是“哪些人的朋友是Bob?”对于第一个问题,很容易回答,直接查找user为Bob的数据项,然后读出friends即可,耗费时间理论上为O(1)。对于第二个问题,需要O(n)的时间,需要扫描每一个user,判断朋友中是否有Bob。对于O(n)的算法而言,如果n巨大无比,显然无法适用于商业,比如facebook或者人人等。如何降低时间复杂度,能够在常数时间内找到这个问题的答案呢?一种做法是在存储一个friends_by项,里面存储“谁和Bob做朋友”。这样子,聚合存储就通过编程的方式实现了“伪装关系”,这种做法能够缓解时间性能问题。但是对于维护这个数据库,就是一件很浪费人力、且极易出错的工作。
3、The Relational Model: Also Lacking Relationships
关系型数据库模型缺乏关系。关系型数据是由很多表进行组成,表与表之间是通过join操作进行连接,表达关系。随着join操作的逐渐增多(如下图),外键也会逐渐增多,表与表之间的约束就会逐渐增多,很多都会逐渐增多.....维护起来就即为麻烦,同时查询的时候,就会一层套着一层,比如“我的朋友的朋友”这种问题。
4、由“关系”构成的一张图,如下:
通过各种“关系”构建成的图,这张图能够表达很多知识,图数据库就是基于图建立的数据库,能够很好地对关系进行表达。
5、图数据库 vs 关系型数据库的对比
其中Depth的含义是“深度”,也就是层的意思,2的时候回答“我的朋友的朋友有哪些?”。很明显,在2的时候,相差性能不大,但是>2的时候,性能完全不是一个档次的了,RDBMS完全不在实用。其中Neo4j是图数据库。
6、This has generally positive implications for developer productivity and project risk. For instance, we don’t need to model exhaustively ahead of time — a practice which is all but foolhardy in the face of changing business
requirements since the graph model is naturally additive. As new facts come to light we design the graph structures for them and pour in the new data in with the existing.
为了应对商业需求,图数据库不用事先做很多无谓的工作。他们在现有的数据上进行导入新来的数据即可,拓展性极高。
================================小结===========================================
本章还是着力在比较图数据库和现有其他数据库模型的优缺点等,阐述图数据库更适合于当前易变的互联网时代。
着重讲述聚合存储(Key-Value,Documents, Bigtable)以及RDBMS(关系型数据库)在处理互有联系数据时查询延时高、开发成本高以及维护困难等缺点。从而引出图数据库用于处理互有联系数据的优点,查询延时性低、拓展性高、维护成本低等。目前图数据库还未广泛流行。
下面着重对重点知识汇总:
1、The Aggregate Model: Lacking Relationships
聚合模型缺乏关系。所谓聚合模型,包括Key-Value存储系统、Documents存储系统以及Columns存储系统。所谓缺乏关系,换句话说,就是“伪装关系”。对于关系的操作需要开发人员进行编程实现,这是一项很费时费力的工作。
2、聚合存储处理关系型数据的一个实例解析,如下图:
在这张图上,我们需要回答两个问题,第一个问题是“Bob的朋友有哪些?”第二个问题是“哪些人的朋友是Bob?”对于第一个问题,很容易回答,直接查找user为Bob的数据项,然后读出friends即可,耗费时间理论上为O(1)。对于第二个问题,需要O(n)的时间,需要扫描每一个user,判断朋友中是否有Bob。对于O(n)的算法而言,如果n巨大无比,显然无法适用于商业,比如facebook或者人人等。如何降低时间复杂度,能够在常数时间内找到这个问题的答案呢?一种做法是在存储一个friends_by项,里面存储“谁和Bob做朋友”。这样子,聚合存储就通过编程的方式实现了“伪装关系”,这种做法能够缓解时间性能问题。但是对于维护这个数据库,就是一件很浪费人力、且极易出错的工作。
3、The Relational Model: Also Lacking Relationships
关系型数据库模型缺乏关系。关系型数据是由很多表进行组成,表与表之间是通过join操作进行连接,表达关系。随着join操作的逐渐增多(如下图),外键也会逐渐增多,表与表之间的约束就会逐渐增多,很多都会逐渐增多.....维护起来就即为麻烦,同时查询的时候,就会一层套着一层,比如“我的朋友的朋友”这种问题。
4、由“关系”构成的一张图,如下:
通过各种“关系”构建成的图,这张图能够表达很多知识,图数据库就是基于图建立的数据库,能够很好地对关系进行表达。
5、图数据库 vs 关系型数据库的对比
其中Depth的含义是“深度”,也就是层的意思,2的时候回答“我的朋友的朋友有哪些?”。很明显,在2的时候,相差性能不大,但是>2的时候,性能完全不是一个档次的了,RDBMS完全不在实用。其中Neo4j是图数据库。
6、This has generally positive implications for developer productivity and project risk. For instance, we don’t need to model exhaustively ahead of time — a practice which is all but foolhardy in the face of changing business
requirements since the graph model is naturally additive. As new facts come to light we design the graph structures for them and pour in the new data in with the existing.
为了应对商业需求,图数据库不用事先做很多无谓的工作。他们在现有的数据上进行导入新来的数据即可,拓展性极高。
================================小结===========================================
本章还是着力在比较图数据库和现有其他数据库模型的优缺点等,阐述图数据库更适合于当前易变的互联网时代。
相关文章推荐
- Graph Databases—Chapter 4 Working with Graph Data阅读笔记
- Graph Databases—Chapter 5 Graph Databases 阅读笔记
- "Essential WPF - Chapter 6 Data" 阅读笔记
- Graph Databases—The NOSQL Phenomenon阅读笔记
- TAO: Facebook's Distributed Data Store for the Social Graph论文阅读笔记
- APUE 学习笔记 - Chapter 6. System Data File and Infomation
- 阅读笔记[1] ——《Think In Java》 Chapter 13
- 《Efficient Batch Processing for Multiple Keyword Queries on Graph Data》——论文笔记
- The Proposal of Service Oriented Data Mining System for Solving Real-Life Classification--阅读笔记
- APUE阅读笔记:Chapter 15 IPC
- Data Structures and Other Objects Using C++ (Chapter 1) 学习笔记三
- CTC算法论文阅读笔记:Connectionist Temporal Classification: Labelling Unsegmented Sequence Data with Recurren
- 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center
- 论文阅读笔记 - MapReduce : Simplified Data Processing on Large Clusters
- 图割论文阅读笔记:“GrabCut” — Interactive Foreground Extraction using Iterated Graph Cuts
- Database Systems the Complete book 阅读笔记 chapter 13
- APUE 阅读笔记(chapter 13)——守护进程
- Data Warehouse Guide阅读笔记(八):materialized view之一
- Reinforcement Learning for Relation Classification from Noisy Data阅读笔记
- Apache mahout 源码阅读笔记--DataModel之FileDataModel