加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

图数据库习题与答案(知识点索引)

(2019-09-12 22:31:33)
标签:

it

教育

美食

旅游

财经

第十讲 图数据库习题与答案

 

1.      简述Neo4j的存储模型。

答:

图形数据库(Graph Database)是NoSQL数据库家族中特殊的存在,用于存储丰富的关系数据,Neo4j 是目前最流行的图形数据库,支持完整的事务,在属性图中,图是由顶点(Vertex),边(Edge)和属性(Property)组成的,顶点和边都可以设置属性,顶点也称作节点,边也称作关系,每个节点和关系都可以由一个或多个属性。Neo4j创建的图是用顶点和边构建一个有向图,其查询语言cypher已经成为事实上的标准。

neo4j 的存储模型:Node和Relationship 的 Property 是用一个 Key-Value 的双向列表来保存的; Node 的 Relatsionship 是用一个双向列表来保存的,通过关系,可以方便的找到关系的 from-to Node. Node 节点保存第1个属性和第1个关系ID。通过上述存储模型,从一个Node-A开始,可以方便的遍历以该Node-A为起点的图。

 

2.简述Neo4j中的关系。

答:Neo4j中的关系:

•节点之间的关系是图数据库很重要的一部分。通过关系可以找到很多关联的数据,比如节点集合,关系集合以及他们的属性集合。

 图数据库习题与答案(知识点索引)

一个关系连接两个节点,必须有一个开始节点和结束节点。

 图数据库习题与答案(知识点索引)

 

•因为关系总是直接相连的,所以对于一个节点来说,与他关联的关系看起来有输入/输出两个方向,这个特性对于我们遍历图非常有帮助:

 图数据库习题与答案(知识点索引)
 

 •为了将来增强遍历图中所有的关系,我们需要为关系设置类型。注意关键字 type 在这可能会被误解,你其实可以把他简单的理解为一个标签而已。

 

•下面的例子是一个有两种关系的最简单的社会化网络图。

 图数据库习题与答案(知识点索引) 

 

3. 简述Neo4j中的节点和关系的属性。

答:Neo4j中节点和关系都可以设置自己的属性。属性是由Key-Value键值对组成,键名是字符串。属性值是要么是原始值,要么是原始值类型的一个数组。

 图数据库习题与答案(知识点索引)

4. 简述Neo4j中的路径。

答:Neo4j中的路径:路径由至少一个节点,通过各种关系连接组成,经常是作为一个查询或者遍历的结果。

  图数据库习题与答案(知识点索引)
 

•最短的路径是0长度的像下面这样:

 图数据库习题与答案(知识点索引)

 

•长度为1的路径如下:

 图数据库习题与答案(知识点索引)

 

5.Neo4j提供了什么查询语言?

答:Neo4j使用Cypher查询图形数据,Cypher是描述性的图形查询语言,语法简单,功能强大,由于Neo4j在图形数据库家族中处于绝对领先的地位,拥有众多的用户基数,使得Cypher成为图形查询语言的事实上的标准。

 

6.Neo4j 作为一种图形数据库,在构建知识图谱方面有哪些优势?

答:

知识图谱是一种基于图的数据结构,由节点和边组成。其中节点即实体,由一个全局唯一的 ID 标示,关系(也称属性)用于连接两个节点。通俗地讲,知识图谱就是把所有不同种类的信息连接在一起而得到一个关系网络,提供了从“关系”的角度去分析问题的能力。

而 Neo4j 作为一种经过特别优化的图形数据库,有以下优势:

•数据存储:不像传统数据库整条记录来存储数据,Neo4j 以图的结构存储,可以存储图的节点、属性和边。属性、节点都是分开存储的,属性与节点的关系构成边,这将大大有助于提高数据库的性能。

•数据读写:在 Neo4j 中,存储节点时使用了 Index-free Adjacency 技术,即每个节点都有指向其邻居节点的指针,可以让我们在时间复杂度为 O(1) 的情况下找到邻居节点。另外,按照官方的说法,在 Neo4j 中边是最重要的,是 First-class Entities,所以单独存储,更有利于在图遍历时提高速度,也可以很方便地以任何方向进行遍历。

•资源丰富:Neo4j 作为较早的一批图形数据库之一,其文档和各种技术博客较多。

•同类对比:Flockdb 安装过程中依赖太多,安装复杂;Orientdb,Arangodb 与 Neo4j 做对比,从易用性来说都差不多,但是从稳定性来说,neo4j 是最好的。

综合上述以及因素,Neo4j 是做知识图谱比较简单、灵活、易用的图形数据库。

 

7.简述Neo4j与关系数据库的区别。

答:

作为图数据库,Neo4j最大的特点是关系数据的存储。

 估计大部分人压根还不知道啥是图数据库。图数据库除了能够像普通的数据库一样存储一行一行的数据之外,还可以很方便的存储数据之间的关系信息。

 例如,对于一个社交网络的用户数据库,你除了要存储每个用户的姓名、性别、喜好这些基本信息外,你还需要存储一个用户和哪些用户是朋友,和哪个用户是情侣这些关系数据,这个时候Neo4j这样的图数据就可以派上用场啦!

 

通过下图,大家可以了解下什么是图数据库以及什么是关系数据。

 图数据库习题与答案(知识点索引)

关系数据示例

 

在上图中,包含两个标签为“人”的数据节点,分别代表Ann和Dan两个用户。这两个数据节点还包含姓名、出生地等属性信息,用于表示两个用户的基本信息,就如同常规数据库中的两行数据。

 除此之外,两个数据节点之间还包含两条关系数据,即Ann嫁给了Dan,Ann和Dan同居。利用这些关系数据,你就可以方便的作出基于关系的查询,例如你可以查询Ann跟谁结婚了,这就是图数据库的优势。

 

Neo4j的独特优势

可能有人会说,上边写的这种关系数据结构,SQL也可以通过多表join等方法实现,那要Neo4j还有什么用?但毕竟术业有专攻,对于大量、复杂的关系数据处理,Neo4j在性能和使用方便程度上都是要远胜于SQL的。下边给大家简单总结下Neo4j的优势:

•数据底层存储专门针对图数据的特点进行优化,在关系数据的处理上具备远高于其他数据库的性能

•专门为关系数据设计的查询语言,对于关系数据的操作更加的方便。

•没有表结构这个概念,相较SQL在使用上更加灵活。

•自动为数据建立合适的索引(根据数据的标签),免去管理索引的麻烦。

•支持高可用性主从集群部署。

•具备图形化平台等配套工具,帮助开发者快速构建出完整的关系数据平台。

 

8.常见的图数据库有哪些?

答:常见的图数据库有:

Neo4j

Neo4j是一个流行的图形数据库,它是开源的。最近,Neo4j的社区版已经由遵循AGPL许可协议转向了遵循GPL许可协议。尽管如此,Neo4j的企业版依然使用AGPL许可。Neo4j基于Java实现,兼容ACID特性,也支持其他编程语言,如Ruby和Python。

FlockDB

FlockDB是Twitter为进行关系数据分析而构建的。FlockDB迄今为止还没有稳定的版本,对于它是否是一个真正的图形数据库,尚有争议。FlockDB和其它图形数据库(如Neo4j、OrientDB)的区别在于图的遍历,Twitter的数据模型不需要遍历社交图谱。尽管如此,由于FlockDB应用于Twitter这样的大型站点,以及它相比其它图形数据库的简洁性,仍然值得我们值得关注。

AllegroGrap

AllegroGrap是一个基于W3c标准的为资源描述框架构建的图形数据库。它为处理链接数据和Web语义而设计,支持SPARQL、RDFS++和Prolog。

AllegroGraph是Franz Lnz公司(Web语义产品提供商,旗舰产品是基于LISP的企业开发工具)的产品之一,Pfizer、Ford、Kodak、NASA和美国国防部都是该公司的客户。

GraphDB

GraphDB是德国Sones公司在.NET基础上构建的。Sones公司于2007年成立,近年来陆续进行了几轮融资。GraphDB社区版遵循AGPL v3许可协议,企业版是商业化的。GraphDB托管在Windows Azure平台上。

InfiniteGraph

InfiniteGraph基于Java实现,它的目标是构建“分布式的图形数据库”,已被美国国防部和美国中央情报局所采用。

除此之外,还有其他一些图形数据库,如OrientDB、InfoGrid和HypergraphDB。Ravel构建在开源的Pregel实现之上,微软研究院的Trinity项目也是一个图形数据库项目。

 

9.说明Neo4j的高可用方案。

答:

neo4j HA(High Availability)即 neo4j 的高可用特性,不过这个特征只能在neo4j 企业版中可用。neo4j HA使用多台neo4j从数据库设置替代单台neo4j主数据库的容错架构,这种架构可以在一台实体机故障的情况下使数据库具备完善读写操作的能力,由于 neo4j HA 采用主从数据同步,而且写操作也可以在从库中执行(经测试这种方式不如主节点写入可靠),因此采用neo4j HA 比单台neo4j数据库拥有更多的读取负载处理能力。

如果你使用的不是 neo4j 企业版,那么你可能需要自己动手来构建 neo4j 集群以此来实现高可用架构了。当然你可以采用Neo4j+DRBD(DistributedReplicated Block Device)+ Keepalived 方式来构建自己的neo4j 集群, 通过 DRBD 来备份单点上的 neo4j 图库数据,通过Keepalived 来管理你的集群。除此之外你还可以通过 zookeeper 来管理你的集群节点,自己实现将主节点数据修改的Cypher 语句元操作同步到从节点(类似 MySQL 的binlog)来实现主从同步,从而达到读写分离。当然不管你采用方式一还是方式二,都会增大开发和维护成本。

 

10.举例说明图数据库的应用。

答:已经有了相对比较成熟的基于图数据库的解决方案:

(1)金融行业应用

反欺诈多维关联分析场景

 通过图分析可以清楚地知道洗钱网络及相关嫌疑,例如对用户所使用的帐号、发生交易时的IP地址、MAC地址、手机IMEI号等进行关联分析。

反欺诈已经是金融行业一个核心应用,通过图数据库可以对不同的个体、团体做关联分析,从人物在指定时间内的行为,例如去过地方的IP地址、曾经使用过的MAC地址(包括手机端、PC端、WIFI等)、社交网络的关联度分析,同一时间点是否曾经在同一地理位置附近出现过,银行账号之间是否有历史交易信息等。

(2)社交网络图谱

在社交网络中,公司、员工、技能的信息,这些都是节点,它们之间的关系和朋友之间的关系都是边,在这里面图数据库可以做一些非常复杂的公司之间关系的查询。比如说公司到员工、员工到其他公司,从中找类似的公司、相似的公司,都可以在这个系统内完成。

(3)企业关系图谱

图数据库可以对各种企业进行信息图谱的建立,包括最基本的工商信息,包括何时注册、谁注册、注册资本、在何处办公、经营范围、高管架构。围绕企业的经营范围,继续细化去查询企业究竟有哪些产品或服务,例如通过企业名称查询到企业的自媒体,从而给予其更多关注和了解。另外也包括对企业的产品和服务的数据关联,查看该企业有没有令人信服的自主知识产权和相关资质来支撑业务的开展。

企业在日常经营中,与客户、合作伙伴、渠道方、投资者都会打交道,这也决定了企业对社会各个领域都广有涉猎,呈现面错综复杂,因此可以通过企业数据图谱来查询,层层挖掘信息。基于图数据的企业信息查询可以真正了解企业的方方面面,而不再是传统单一的工商信息查询。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有