一、 概况:

在图计算中,基本的数据结构表达式是:G= ( V,E ),V=vertex( 节点 ),E=edge(边) 。图数据库中数据模型主要以节点和关系(边)来体现,也可以处理键值对。数据具有如下特征:

①     包含节点和边。

②     节点上有属性(键值对)。

③     边有名字和方向,并总是有一个开始节点和结束节点。

④     边也可以有属性。

把点、边(关系)、属性联系到一起就能描述出一个图。下图展示了一张作者合作关系社交图谱(该图基于MDLayout改进算法生成)。每个作者代表一个点,边用白色实线表示,表明了两者间关系。边也可以拥有属性。很多个点关联起来就构成了一个很复杂的学术合作关系网。使用图形数据库很容易存放这种人际关系网,而传统的关系数据库则不能最优化的存储上述社会关系数据。

学术合作图谱实例

Neo4j数据库是一个高性能的新型NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。

它具有以下优点:

①    自带易于学习的查询语言(名为Cypher)。

②    不使用schema,可以满足任何形式的需求。

③    相比关系型数据库,查询速度要快上很多。

④    相比关系型数据库,可扩展性极高,灵活性强。

⑤    实体与关系结构非常自然地切合人类的直观感受,在处理关系复杂的数据时远胜于关系型数据库。

⑥    支持JAVA操作。

⑦    支持兼容ACID的事务操作。

⑧    提供了一个高可用性模型,以支持大规模数据量的查询,支持备份、数据局部性以及冗余。

⑨    提供了一个可视化的查询控制台。

同时,它具有以下不足:

①    作为新型数据库,它的成熟度远不如传统的关系型数据库。

②    数据查询语言种类繁多,尚未形成统一规范。

③    安全性相对较弱,有待完善。

④    不适合处理大量分布型数据。

⑤    不适合保存结构化数据、二进制数据(相较关系型数据库而言)。

二、 原理简介:

The node records contain only a pointer to their first property and their first relationship (in what is oftentermed the _relationship chain). From here, we can follow the (doubly) linked-list of relationships until we find the one we’re interested in, the LIKES relationship from Node 1 to Node 2 in this case. Once we’ve found the relationship record of interest, we can simply read its properties if there are any via the same singly-linked list structure as node properties, or we can examine the node records that it relates via its start node and end node IDs. These IDs, multiplied by the node record size, of course give the immediate offset of both nodes in the node store file.

上面的英文摘自<Graph Databases>(作者:IanRobinson) 一书,描述了 neo4j 的存储模型。Node和Relationship 的 Property 是用一个 Key-Value 的双向列表来保存的; Node 的 Relatsionship 是用一个双向列表来保存的,通过关系,可以方便的找到关系的 from-to Node. Node 节点保存第1个属性和第1个关系ID。

通过上述存储模型,从一个Node-A开始,可以方便的遍历以该Node-A为起点的图。下面提供示例,来帮助理解上面的存储模型。

示例

在这个例子中,A~E表示Node 的编号,R1~R7 表示Relationship编号,P1~P10 表示Property的编号。

  • Node 的存储示例图如下,每个Node保存了第1个Property和 第1个Relationship:
  • 关系的存储示意图如下:

  • 从示意图可以看出,从 Node-B 开始,可以通过关系的 next 指针,遍历Node-B 的所有关系,然后可以到达与其有关系的第1层Nodes,在通过遍历第1层Nodes的关系,可以达到第2层Nodes,……

  总而言之,Neo4j图形数据库是一个杰出的高性能NoSQL数据库,它相较于传统的关系型数据库具有强拓展性、灵活性等优势,在存储关系性强且变化频繁的数据时具有可观的效率;但同时,它在存储二进制数据、结构化数据时效率较低,安全性不及传统数据库强。作为新生数据库,Neo4j在知识图谱构建、文本搜索等方面已经逐渐显露出不凡的特性,也是近年来许多学者研究和尝试使用的宠儿,在将来会得到更广泛、更高效的应用。

(参考资料:http://sunxiang0918.cn/2015/06/27/neo4j-%E5%BA%95%E5%B1%82%E5%AD%98%E5%82%A8%E7%BB%93%E6%9E%84%E5%88%86%E6%9E%90)

Neo4j 小调研的更多相关文章

  1. SQLite 小调研

    一. 概况: SQLite 是 D. Richard Hipp 于 2000 年采用 C 语言编写的一个轻量级.跨平台的关系型数据库,支持大部分 SQL92 标准(比如视图.事务.触发器.blob 数 ...

  2. MySQL 小调研

    一. 概况: MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL ...

  3. Level DB 小调研

    一. 概况: 1. 背景: 随着信息技术的高速发展,数据存储量和流量呈现爆炸式增长.目前百度统计日 PV(日点击量)已超过 75 亿次,中国网民在百度上进行50 亿次的搜索请求,百度贴吧日 PV 十亿 ...

  4. Fog of War小调研

    看起来LOL和DOTA2都用的是格子来做的战争阴影,并且是用PP做的.

  5. Redis 小调研

    一. 概况: Redis是一款开源的.网络化的.基于内存的.可进行数据持久化的Key-Value存储系统.它的数据模型建立在外层,类似于其它结构化存储系统,是通过Key映射Value的方式来建立字典以 ...

  6. Elastic Search 小调研

    一.概况: Elastic Search 是一个基于Apache Lucene™工具包的开源搜索引擎.无论在开源还是专有领域,Lucene 可以被认为是迄今为止最先进.性能最好的.功能最全的搜索引擎库 ...

  7. 「2014-5-31」Z-Stack - Modification of Zigbee Device Object for better network access management

    写一份赏心悦目的工程文档,是很困难的事情.若想写得完善,不仅得用对工具(use the right tools),注重文笔,还得投入大把时间,真心是一件难度颇高的事情.但,若是真写好了,也是善莫大焉: ...

  8. Z-Stack - Modification of Zigbee Device Object for better network access management

    写一份赏心悦目的工程文档,是很困难的事情.若想写得完善,不仅得用对工具(use the right tools),注重文笔,还得投入大把时间,真心是一件难度颇高的事情.但,若是真写好了,也是善莫大焉: ...

  9. 自己编写k8s

    ## 基于Docker和Kubernetes的企业级DevOps实践训练营 ### 课程准备 1. 离线镜像包 百度:https://pan.baidu.com/s/1N1AYGCYftYGn6L0Q ...

随机推荐

  1. 发布 Vant - 高效的 Vue 组件库,再造一个有赞移动商城也不在话下

    发布 Vant - 高效的 Vue 组件库,再造一个有赞移动商城也不在话下:https://segmentfault.com/a/1190000011377961 vantUI框架在vue项目中的应用 ...

  2. java性能调优03

    1.java中的四种引用类型(级别由高到低为:强引用,软引用,弱引用和虚引用) 1.1 强引用:默认创建的变量都是强引用,垃圾回收机制不会将其回收,当内存空 间不足,Java虚拟机宁愿抛出OutOfM ...

  3. CSUST 集训队选拔赛题解

    选拔赛的题解,~~~ 题目链接:请点击 A题 素数筛 + 线段树(树状数组) 先用素数筛打表,然后线段树更新,遍历求出值,O(1)查询即可 AC代码: /*num数组 是把记录 数是否存在 存在即为1 ...

  4. bzoj4544 椭圆上的整点

    我会所有推理..... Q1:真的这么暴力的统计答案? Q2:蜜汁统计答案.... Q3:为什么不考虑3在不同的位置的情况

  5. kali linux 2019.4 最新版设置中文 - 开启win10风格界面

    最新版 kali linux 2019.4 默认是不带中文字体的,执行以下命令,便可以显示: kali源:vi /etc/apt/source.list #中科大 deb http://mirrors ...

  6. 关于Oracle中Sort Merge Join的改写

    业务场景的问题,我们有一个刷CUBE的SQL,是Oracle环境,平时跑70多分钟, 但是最近突然不动了,这个SQL需要算累计值,比如年累计客户数量. 累计值是什么意思呢?我们使用下面的数据来说明问题 ...

  7. css3两个汤圆亲吻动效

    效果图: 模板来源:https://www.17sucai.com/pins/demo-show?id=35132 自己仿写出来的效果图: 笔记: 1.transform:translate(-50% ...

  8. live555库得编译、移植、应用

    一.ubuntu下编译 1.生成Makefile文件,编译 ./genMakefiles linux make 2.拷贝liveMedia/include,groupsock/include,Basi ...

  9. (转)Unity Cinemachine插件,实现单目标和多目标之间切换

    Unity Cinemachine插件学习笔记,实现单目标和多目标之间切换*版本要求Unity2017.1及以上. 参考资料: [官方] Unity 2017.1正式版发布 Cinemachine插件 ...

  10. robotframework+python3+selenium之web相关关键字---第二集

    1.F5可查看所有关键字,如图: 2.浏览器相关关键字: 2.1  Open Browser    https://www.baidu.com  chrome    # 打开浏览器,rf默认使用火狐浏 ...