您的位置:首页 > 其它

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.

     为了应对商业需求,图数据库不用事先做很多无谓的工作。他们在现有的数据上进行导入新来的数据即可,拓展性极高。

================================小结===========================================

本章还是着力在比较图数据库和现有其他数据库模型的优缺点等,阐述图数据库更适合于当前易变的互联网时代。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  graph db 存储系统