资讯专栏INFORMATION COLUMN

大数据时代的新型数据库--图数据库 Neo4j

IT那活儿 / 2360人阅读
大数据时代的新型数据库--图数据库 Neo4j

1

什么是图数据库

图数据库是基于数学里图论的思想和算法而实现的高效处理复杂关系网络的新型数据库系统。

图数据库的数据存储方式就像将其绘制出来一样-Nodes通过Relationships所定义的关系相连起来,形成关系型网络结构,展示了每个多带带的实体如何与其他实体联系或相互关联。

2

图数据库擅长做什么-与传统关系型数据库相比


关系查询更佳:图形数据库善于高效处理大量的、复杂的、互连的、多变的数据。其计算效率远远高于传统的关系型数据库。

传统关系型数据库在查询关系问题上最简单的方法就是建立一个关系模型,如下图:

图中展示了一个非常简单的关系模型,当我们想就这个关系模型查询关系深度为1的关系(比如小明的朋友)时可使用

进行查询

深度为1的查询,关联关系并不复杂,MySQL执行起来压力不大,语句也很容易编写,但是如果将深度提到2(也就是查询小明朋友的朋友时)语句已经开始变长,再进一步将深度提升到3时,MySQL查询也会开始产生压力。


有一个很有意思的测试,一分别通过关系型数据和图数据库在一个社交网络里找到最大深度为5的关系。他们的数据集包括100万人,每人约有50个朋友。实验结果如下:

当查询的关系深度达到3时,MySQL的查询效率便开始被Neo4j图数据库甩开。

至于为什么Neo4j的关系查询能力能够优于传统关系型数据库,则需要去了解它是如何存储数据的。

3

图数据库Neo4j的存储结构


节点、关系与属性

一个图数据库中的数据由节点(node)和将节点连接起来的关系(relationship)组成,节点(node)和关系(relationship)中又包含一个或多个属性(property)。节点有拥有若干标签,关系带有类型。

原生图存储(nativegraph storage

一般认为具有"无索引邻接"特性的图数据库才称为原生图数据。

neo4j的节点、关系和属性分别保存在neostore.nodestore.db、neostore.relationshipstore.db和neostore.propertystore.db文件中,在neo4j中,点、关系和属性等图的组成元素都是基于neo4j内部维护的ID进行访问的,数据结构如下图:
节点(指向联系和属性的单向链表,neostore.nodestore.db):
inUse:表示是否被使用的标志位。
nextRelId:代表关联到这个节点的第一个关系的ID。
nextPropId:代表第一个属性ID。
labels:是代表当前节点的标签,指向该节点的标签存储。
extra:作为保留位。
关系(双向链表,neostore.relationshipstore.db):
inUse:代表是否被使用的标志位。
firstNode:表示起始节点的ID
secondNode:表示结束节点的ID
relationshipType:表示关系类型
firstPrevRelId:表示起始顶点上前一个边记录
firstNextRelId:表示起始顶点上后一个边记录
secPrevRelId:表示终止顶点上前一个边记录
secNextRelId:表示终止顶点上后一个边记录
指向前后边记录的4个指针形成了两个“关系双向链”
nextPropId:是边上的第1个属性的id
firstInChainMarker:表示该边记录是否是“关系链”中第1条记录
一个Byte存辅助信息,即前后属性结构ID的高位信息
一个Int存前一个属性
一个Int存下一个属性


假设要查询与某个点有对应关系的所有点时,首先查到该点的ID,通过该ID计算该点的存储偏移位置,从存储文件中获取到该点的信息,然后从该点的信息中获取到该点nextRelId数据即该点第一个关系的ID,根据这个ID计算该关系存储偏移量,从存储文件中获取该关系数据,判断是否为需要查询的关系,若为所要查询的,则获取该关系的secondNode即该关系的终节点ID,若为其他节点则保存该ID,查询到所有数据返回关系及节点。

综上所述Neo4j关系查询的核心便在relationship(关系)的存储上,一条关系存储的数据包括上一条边、下一条边、关系/边的起始节点与结束节点,当查询某一个点某一条关系时只需查询到该点所对应的第一条关系/边,然后根据这条关系上所存储的下一条关系以及关系的开始节点与终节点进行查询即可。

Neo4j中node、relationship、property以链表的形式存储了本记录及上一条或下一条记录的相关信息,保证了关系遍历的效率。

关于Neo4j的介绍就到这里。


END


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129958.html

相关文章

  • 云计算?数据?SaaS回归

    摘要:宋体当云计算如火如荼的肆意展现时代风采的时候,大数据已经悄然的出现在这个巨大的舞台中央。对于云计算来说,大数据在云平台上尽情展现那风华绝代的容姿,为客户带去大数据深埋的价值,将是云计算送给所有云时代用户们最精彩的表演。 当云计算如火如荼的肆意展现时代风采的时候,大数据已经悄然的出现在这个巨大的舞台中央。对于云计算来说,大数据在云平台上尽情展现那风华绝代的容姿,为客户带去大数据深埋的价值,将是...

    Crazy_Coder 评论0 收藏0
  • PHPOA办公系统:新型工作流引擎4.0,快速提升OA办公方式

    摘要:更严重的是,会导致信息系统的失控。实现了数据的同步交换和共享,从而简化多余流程,消除重复工作,有效提升工作效率和精度。工作流将大大深化系统的应用,让系统发挥出全新的价值。而不具有工作流特点的系统,将很快被时代所抛弃。 一、工作流1.0时代终结OA系统的应用正在不断深化,正在逐渐完成从无纸化到智能化的转变,作为OA系统应用的核心,工作流技术也同样发生了很大的转变。 我们知道,对工作流比较...

    afishhhhh 评论0 收藏0
  • 新型数据云服务企业新数科技完成千万元Pre-A轮融资

    摘要:近日,数据云服务企业新数科技宣布完成千万元首轮融资,本轮融资由天创资本领投,白泽资本原以太资本担任财务顾问,资金将主要用于云数据库新型管理平台等软件产品的研发投入行业生态体系建设和人才引进等方面。近日,数据云服务企业新数科技宣布完成千万元首轮融资,本轮融资由天创资本领投,白泽资本(原以太资本)担任财务顾问,资金将主要用于云数据库新型管理平台等软件产品的研发投入、行业生态体系建设和人才引进等方...

    DoINsiSt 评论0 收藏0
  • 创新加速云计算普及和技术演进

    摘要:创新加速了云计算在中国的普及,中桥调研显示,中国近企业级用户将在混合云环境下运营,公有云快速成为核心资源。云计算高动态高自动化的资源部署和管理,让用户能够灵活根据业务需求,进行实时近实时交付,从而最大限度降低投入。数字化时代,创新快速成为数字经济增长最重要的驱动力。近年来,各国政府都出台了相应创新战略和规划,以推动自身经济可持续发展,提升国家在全球的竞争力。无论是德国的《新高科技战略–为德国...

    Betta 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<