Neo4j数据库是一种图形数据库(不知道这么翻译准不准,暂且这么称呼吧),这种数据库与传统的关系型数据库有很大的差别。为了更好地帮助大家理解我这里就将关系型数据库与图形数据库作个比较。
关系型数据库:
我们常用的像mysql,oracle等都是关系型数据库,在关系型数据库里面对数据的处理是这样子的:对每个对象都创建一个表,对象的属性对应表里面的列
如图所示。在数据库里有条数据表示两个对象:tim,lili。在现实生活中我们会发现任何对象都是有某种联系的,那么关系型数据库里是怎样来表示这种关系呢?就比如tim和lili是好朋友,那么在数据库里怎样来表示他们的关系呢?关系型数据库里面是 这样处理的——新建一个叫relationship的表,表里面有两个字段id,friendid。
2 1
如图所示。如果我们要查找tim的朋友那么我们可以遍历relationship表就可以了。
这种数据模型会有什么问题呢?其实我们可以对这个数据模型提个问题——tim的朋友的朋友的朋友的朋友是谁?好,关系型数据会这样回答你的问题:首先在relationship表里面找到所有id为1(tim的id)的数据,然后拿到对应的friendid,接着逐个根据friendid再进行遍历找到对应的friendid,如此反复地遍历查询。。。。
也许10分钟也许一小时,也许它永远都无法回答你的问题。
其实,这种关系只要超过5级关系型数据库就无法解决问题,这就是为什么需要图形数据库的出现了。
图形数据库:
在图形数据库里面对数据的处理是这样子的:每个对象都表示成为一个节点(node),每个节点之间的联系表示成关系(rrelationship),节点与节点之间用关系关联在一起。我们可以看图更好理解一点。
Neo4j入门教程_1
最新推荐文章于 2025-06-17 20:33:55 发布