图数据库是怎么样一种数据库,和传统关系数据库的主要区别在哪里
图数据库是以实体及其关系为主要存储对象的数据库系统。基本概念有:
图(Graph):指关系图。比如:同学及朋友关系图、银行转账图等。顶点(Vertex):一般指实体。比如:人、账户等。边(Edge):一般指顶点之间的关系。比如:朋友关系、转账动作等。属性(Property):顶点或边可以包含属性,比如:人的姓名、人的年龄、转账的时间等。图中存储的主要数据是带属性的顶点和带属性的边,边是顶点间关系的描述,是一种自然关系的表达。
基本区别:
建模方式不同,图基于现实世界的实体和关系建模,更为直接易懂;传统关系数据库建模需要的抽象层次更高,也更为复杂。查询语言不同,图数据都有配套的查询语言,比如Gremlin、Cypher,以更为贴合自然语言的方式限定查询条件,易于表达查询需求;关系型数据库使用SQL查询语言,同样抽象层次较高,尤其对于多层关系的查询(需要join操作)时,语句非常复杂,且效率低下重要区别:
复杂关系查询能力,图数据库以实体和关系为基本单位,特别适合查询和分析多层次、多样的复杂关系;关系数据库则在复杂关系查询方面不堪重负,尤其是涉及多表关联或者递归查询时。数据规模问题,图数据库的实现可以基于KV存储,如Titan(Janus)、HugeGraph等图数据库,可以高效方便的存储亿或十亿级别的数据;关系型数据库在此规模下,必须进行复杂的分库分表设计,不然根本无法胜任总而言之,对于海量的多层次、多样的复杂关系查询和分析,关系数据库已经无法胜任,图数据库得益于基于关系的建模设计,可以完美的满足这样的需求。
■网友
【图数据库是怎么样一种数据库,和传统关系数据库的主要区别在哪里】
对于图计算或者图数据库本身我们是这么理解的,它跟传统数据库很类似,也分为 OLAP 和 OLTP 两个方向。
上图中下面这根轴表示数据对查询时效性的要求,OLAP 更偏向于做离线分析,OLTP 更偏向于线上处理。我们认为图领域也可以这么划分。
首先在 OLAP 这个领域,我们称为图计算框架,这些图计算框架的主要目的,是做分析。基于图的结构的分析——这里图代指一个关系网络。整体上这个分析比较类似于传统数据库的 OLAP。但一个主要特点就是基于图结构的迭代算法,这个在传统数据库上是没有的。最典型的算法是谷歌 PageRank,通过一些不断的迭代计算,来算网页的相关度,还有非常常见的 LPA 算法,使用的也非常多。
如果我们继续沿着这个线向右边延伸,可以看到一个叫做 Graph Stream 的领域,这个领域相当于图的基础计算跟流式计算相结合的产物。大家知道关系网络并不是单单一个静态结构,而是会在业务中不断地发生变化:可能是图的结构,或者图上的属性发生变化,当图结构和属性发生变化时,我们希望去做一些计算,这里的计算可能是一种触发的计算或判断——例如在变化过程当中是不是动态地在图上形成一个闭环,或者动态地判断图上是否形成一个隔离子图等等。
Trigger(触发)的话,一般是通过事件来驱动这类计算。对时效性的响应当然是越高越好,但往往响应时间一般是在秒级左右。 那么再往轴上右边这个方向看,是线上的在线响应的系统。大家知道这类系统的特点是对延时要求非常高。可以想象如果在线上做交易的时候,在这个交易瞬间,需要到图上去拿一些信息,当然不希望要花费秒级。一般响应时间都是在十几、二十毫秒这样一个范围。可以看到最右边的场景和要求跟左边的是完全不一样的,是一种典型的 OLTP 场景。在这种场景里面,通常是对子图的计算或者遍历——这个和左边对全图做计算是完全不一样的:比如说从几个点出发,得到周边3、4度的邻居构成一个子图,再基于这个子图进行计算,根据计算的结果再继续做一些图遍历。所以我们把这种场景称为图数据库。
推荐阅读
- 月季花|月季花长花苞后,及时给它施一种肥,不然影响正常开花
- 为啥知乎上普便有一种【我在北上广深打工,所以拥有更好的视野】这样的错觉
- 为啥电器实体店的价格比淘宝贵那么多
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- 青年|一汽奔腾T77怎么样?车主吐槽:后排座椅太短,和坐小板凳似的
- 莫让美育体育成为另一种竞争焦虑
- 电商网站支付流程的流失率是怎么样的从用户点击充值/支付按钮,到支付完成,其中每一步的流失比率都是咋样的
- 作为一个服装供应商,怎么样与淘宝卖家沟通才能卖出自己的产品或者拿到订单
- 在丁丁租房工作的感受是怎么样的
- 城市数据团是怎么样一个团队
