数据库基础,我们为什么需要图数据库

4747 3552 2023-06-13

本文讲述了图数据库基础,我们为什么需要图数据库?

本文尝试以提问回答的方式来介绍笔者所理解的图数据库。包括图数据库的基本定义,图数据库如何表达数据,图数据相比关系型数据库的优势,图数据库使用场景等。

Q:什么是图数据库?

A:图数据库是图数据库管理系统的简称,使用图形化的模型进行查询的数据库,通过节点、边和属性等方式来表示和存储数据,支持增删改查(CRUD)等操作。图数据库一般用于OLTP系统中,提供在线事务处理能力。与图数据库对应的是图计算引擎,一般用于OLAP系统中,提供基于图的大数据分析能力。

Q:图数据库如何表达数据?或者其建模方式

A:图数据库使用图模型来操作数据。目前使用的图模型有3种,分别是属性图(Property Graph)、资源描述框架(RDF)三元组和超图(HyperGraph)。现在较为知名的图数据库主要是基于属性图,更确切得说是带标签的属性图(Labeled-Property Graph),当然标签不是必须的。下面是使用带标签的属性图的Twitter用户关系。

属性图由顶点(圆圈)、边(箭头)、属性(key:value)和标签组成,顶点和边可以有标签,比如顶点的标签是User,边的标签是FOLLOWS。图中标签为User的顶点有name属性,属性值为Johan或Peter或Emil。边表示了他们的关注关系。图中标签为FOLLOWS的边是单向边,如果是相互关注了,那么需要2条边表示。

如果不算上标签,属性图自身的关系可以用下图表示:

Q:为什么需要图数据库,相比关系型数据库等有什么优势?

A:因为关系型数据库不擅长处理数据之间的关系。

上图是一个使用关系数据库模型实现的商品交易的例子。如果要做商品推荐相关的查询时,可以发现其中一些查询是低效的(例如,“客户购买了什么产品?”),而有些查询可能是无法完成的(例如,“哪些客户购买了该产品?”)。

Q:能举个更详细的对比例子吗?

A:假设我们要查找某个公司的员工Alice属于哪个部门。

在关系型数据库中,一般需要建立员工信息表,员工和部门对应关系表(假设一个员工可以属于多个部门),部门信息表。查找时需分为3步:

A,先要通过员工信息表找到Alice对应的工号;

B,再使用工号去关系表中找到其对应的部门ID;

C,最后使用部门ID在部门信息表中找到部门名称等信息。

A需要一次索引查找过程,B也需要一次索引查找,C可能需要3次索引查找。如果是个大型公司,员工数万甚至十多万,那么员工和部门对应关系表的记录会非常多,B的查找效率会远低于A和C。

但如果在图数据库中,就不需要那么复杂的查询。这正是因为图数据库与关系型数据库的建模方式不同,或者说数据的存储方式不同。在图数据库中,员工和部门都在同一张图中,通过边直接建立关系。在查找时也是分为3步:

a,先通过在员工标签Person上建立的全局索引(可稀疏)来找到Alice对应的节点Na;

b,再通过Na节点保存的标签为BELONGS_TO的边来找到对应的部门;

c,最后读取部门信息。

虽然也可以分为3步,但效率却大不相同。a的效率基本等价于A;b无需进行索引查找,直接可以通过Na节点获取,虽然Na节点可能存在非常多不同标签的边,但跟员工和部门关系表的记录数肯定不是一个数量级的,而且通过Na查找边时还可以走Na节点的局部索引来加速查找;c的效率不同的图数据库会有所不同,对于支持免索引邻接的Neo4J等图数据库,Na直接指向3个部门节点的物理地址,对于其他非原生图存储的数据库,比如JanusGraph,需要查找在部门标签Department上建立的全局索引。

Q:有具体的性能测试数据不?

A:我们举最经典的社交网络中查询的性能作为对比。

上图为一个社交网络,图中包括了朋友、同事、夫妻和恋人等多种关系。有人曾做过一个测试:在一个包含100w人,每人约有50个朋友的社交网络中找到最大深度为5的朋友的朋友。下图为图数据库Neo4J和关系型数据库在寻找扩展朋友时的性能对比。

从图中可以发现,深度为2时(即朋友的朋友),两种数据库性能相差不是很明显;深度为3时,很明显,关系型数据库的响应时间30s,已经变得不可接受了;深度到4时,关系数据库需要近半个小时才能返回结果,已经妄称在线数据处理系统了;深度到5时,关系型数据库已经掉入深渊。而对于图数据库Neo4J,深度从3到5,其响应时间均在3秒以内。

可以看出,对于图数据库来说,数据量越大,越复杂的关联查询,约有利于体现其优势。从深度为4/5的查询结果我们可以看出,图数据库返回了整个社交网络一半以上的人数。

Q:除了性能好,图数据库还有其他优势吗?

A:除了很显而易见的性能优势外,灵活性和敏捷性也是图数据库相比关系型数据库的重要优势。图天生就是灵活可扩展的,可以对已存在的图结构增加新的边、节点、标签和子图,但却不会破坏现有的查询和应用程序的功能。这就使我们无需在项目之初,对数据的真实模样和复杂度缺乏了解的情况下被迫设计成最终而完整的数据模型,往往这样的模型并不是最终和完整的。

另一方面,有些业务本身就是灵活多变的,或者说敏捷的。使用图数据库(或其他NoSQL数据库,比如***)可以快速跟上业务的变化而不需要进行Schema变更等代价不菲的管理操作。

Q:图数据库怎么使用,用SQL做增删改查吗?

A:图数据库不使用最传统的SQL作为CRUD语言,原因是SQL作为关系型数据库的查询语言,其也不擅长表达Join等关系查询和操作,在需要做多层的关系Join查询时,SQL往往冗长而难以直观得理解。这是为什么不采用大家最为熟知的SQL却要引入新的图查询语言的主要原因。举个对比的例子:

在英文中“I love my younger sister as well as my grandmother on my father’s side”,与中文的“我爱我的妹妹和奶奶” 是一样的意思,但是在简洁程度上中文远远好于英文。(6个词,9个字) vs (14个词, 70个字)

也就是说,在图数据库中使用专门的图查询语言比使用SQL更加高效。目前主流的图查询语言是Cypher和Gremlin。

Q:目前有哪些比较知名的图数据库?

A:图数据库跟其他数据库一样,有很多种分类方法,本文以是否“完全”开发源代码为标准来分为2类,并举2个最有代表性的例子,分别是Neo4J和JanusGraph。

Neo4J最主流的图数据库,相比其他数据库更加成熟,Neo4J使用Java开发,支持ACID,最新版本是3.3.5。每个版本均有社区版和企业版,其中社区版是免费版,基于GPLv3协议开源,但局限于单机部署,功能受限。企业版包括了Neo4J所有功能,包括主从复制用于高可用和读写分离,可视化管理工具等,但增加了商业协议,需付费使用。Neo4J不是分布式数据库,扩展性不是其优势。但它是一种原生的图数据库,同时也具备了图分析引擎的能力。应该说Neo4J是目前使用最为广泛的图数据库,大量介绍图数据库的书籍都是以Neo4J为基础来介绍的。

Neo4J使用Cypher作为图数据库查询语言,由于Neo4J的成功,Cypher目前被大多数图数据库所支持。Cypher语言例子如下(找出所有Johan所关注的人所关注的人,该人也是Johan关注的人):

MATCH (a:Person {name:'Johan'})-[:FOLLOWS]->(b)-[:FOLLOWS]->(c),        (a)-[:FOLLOWS]->(c)  RETURN b, c

JanusGraph源于Titan,最新版本0.3.1于2018年10月发布,基于Apache 2开源协议,是最有前景的开源图数据库,可支持数十亿级别的顶点和边规模,与Neo4J一样也使用Java开发,由IBM主导并提供云服务。

JanusGraph可以为不断增大的数据和用户量提供了弹性和线性的扩展能力,通过数据多点分布和复制来提高性能和容错能力;支持ACID特性和最终一致性。与Neo4J不同,JanusGraph不是原生的图数据库,相反的,其将数据存储到通用的存储系统上,支持的后端存储包括:Apache ***、Apache ***、Google Cloud Bigtable和*** BerkeleyDB。其中BerkeleyDB一般只做例子演示用。

JanusGraph依托于Apache社区构建了完整的图数据库和图计算能力,通过跟Apache中其他组件相配合,提供了一整套完整的图计算生态系统。其中就包括了Apache TinkerPop所提供的图查询语言Gremlin。Cypher例子对应的查询在Gremlin中的表示方式如下:

g.V().has('User','name','Johan').out('FOLLOWS').as('b').out('FOLLOWS').as('c').in('FOLLOWS').has('User','name','Johan').select('b','c').valueMap()

Q:上面提到了原生图数据库,这是什么意思?

A:上面说的原生又可细分为原生图存储和原生图处理,其中原生图存储指的是图数据库,比如Neo4J所使用的后端存储是专门为Neo4J这种图数据库定制和优化的,理论上说能更有利于发挥图数据库的性能。而非原生图存储指的是图数据库,比如JanusGraph使用通用的NoSQL数据库比如***来保存序列化后的图数据。

而原生图处理指的是利用了免索引邻接的图数据库。免索引邻接是指通过边关联的2个节点,其彼此指向是物理的,也就是通过边访问一个节点时,该边保存的就是目标节点在磁盘上的物理地址,这样就需要通过索引去找到目标节点,如果边很多的时候,对性能提升很有帮助。

Q:那么目前有哪些公司使用了图数据库呢?

A:使用图数据库的公司比比皆是,分布式各个行业。举例如下:

根据Neo4J官方描述,上述公司都使用了其产品,更多公司可点击链接:https://neo4j.com/customers/?ref=home

根据JanusGraph官网描述,上述公司用了JanusGraph,附上链接:http://janusgraph.org/

Q:看起来使用图数据库的公司确实不少啊,能归个类不?

A:图数据库确实有很广泛的适用场景,因为连接存在于自然和社会中的各个角落。每个事物都不是孤立的,而是跟其他事物或紧或松得联系着。随着人类社会的进步,各种关系的处理变得越来越重要,不仅是人,物与物之间的连接关系也越来越被我们所重视,万物互联的时代已经到来。下面举六个图数据库最常使用的场景。

一、社交网络应用

社交是人与人之间的连接,以图数据模型为内在的图数据库天生适用于明显的以联系为中心的领域。在社交网络中使用图数据库可以方便得识别人/群组和他们交流的事物之间的直接或间接的联系,使用户能够高效地对其他人或事物进行打分、评论、发现彼此存在的关系和共同关系的事情。可以更加直观得了解社交网络中人与人之间如何互动、如何关联、如何以群组的形式来做事情或选择。

社交网络是最基础的图模型,在此基础上可以叠加更多的内容,比如个人的喜好、购买过的物品、日常的生活方式等,从而演化出更高级的图数据库应用模式,比如实时推荐系统。

二、实时推荐

在零售、招聘、情绪分析、搜索和知识管理领域,社交网络和推荐引擎可以提供关键的差异化能力,有很多种办法可以实现推荐,但使用图数据库在实时性和效率上有其特有的优势。推荐算法在人和事物之间建立联系,而联系建立的基础是用户的行为,比如购买、生产、消费、打分或评论有关资源等行为。推荐引擎可以识别出某些资源会吸引特定个人或群体,或者某些个人或群体可能对特定资源感兴趣。

一个有效的推荐依赖于对事物之间关联的理解,同时也依赖于这些关联的质量和强度,而属性图是所有这些关系密切、关联紧密的数据结构的最佳表达方式。用图数据库存储和查询这些数据使得应用程序可以为最终用户呈现实时结果,反映数据最新的变化,而不是返回给用户那些预计算的状态结果。

三、地理空间管理

地理空间类的应用程序包括公路网、铁路网等,地理空间操作依赖于特定的数据结构,简单的加权带方向的联系,复杂到空间索引如R树。和索引一样,这些数据结构天生就以图的形式呈现,尤其是层级结构,非常适合图数据库。

总的来说,通信、物流、旅游已经路由计算相关领域的地理空间应用经常会使用图数据库。

四、主数据管理(Master Data Managerment)

在企业或组织中,主数据管理(MDM)包括的数据涉及用户、客户、产品、供应商、部门、区域、站点、成本中心和业务单元等。这些数据来源可能是多种多样的,MDM用来识别、清洗、存储和管理这些数据。其关键问题包括谁组织结构的变化、企业合并和业务规则的变化来管理这些变化;融合新的数据源,用外部源数据补充已有的数据;解决报告需求、鉴定需求和商业智能客户的需求;当数据的值和模式变化时对数据进行版本管理。图数据库的数据模型高效匹配MDM的快速演变和不断变化的业务需求。

五、网络和数据中心管理

图数据库已经成功地使用在了电信、网络管理和分析、云平台管理、数据中心和IT资产管理以及网络影响分析等领域。在这些领域里,他们将影响分析和问题解决的时间时间从数天数小时减少到了分钟级甚至秒级。面对不断变化的网络模式,图数据库的性能和灵活性都是它适合这些领域应用的重要因素。


六、授权和访问控制

图数据库可以存储那些复杂的、高度关联的、跨越数十亿参与者和资源的访问控制结构。尤其适用于内容管理、联合授权服务、社交网络偏好已经软件服务化提供。将这些系统从关系型数据库切换到图数据库后,性能从分钟级提升到毫秒级。

上面仅列举了部分例子,除此之外,图数据库产品还广泛用在金融和保险行业反欺诈、风控,电商和社交类产品防机器人作弊等领域。

总结

图数据库是一种越来越受关注的新型NoSQL数据库,图数据库研究和实践相关的论文占据了数据库领域顶尖会议和期刊中很重要的部分。目前国内有些企业也已推出了自己的图数据库系统,有自主研发的,也有基于开源图数据进行优化的。作为数据库从业人员,有必要对图数据库有最基本的了解。本文以问题驱动的方式简单介绍图数据库,希望对大家了解图数据库有所帮助。

当前,互联网数据呈指数级增长,但是以更快速度增加的是数据之间的关系。企业的 CIO 和 CTO 不仅要管理大量数据,还要从现有的数据中挖掘商业价值,在这种情况下处理数据之间的关系比处理单个数据更为重要。

传统的关系型数据库,在处理复杂数据关系运算上表现很差,随着数据量和深度的增加,关系型数据库无法在有效的时间内计算出结果。所以,为了更好的利用数据间的连接,企业需要一种——将关系信息存储为实体、灵活拓展数据模型的数据库技术,这项技术就是图数据库(Graph Database)。

图数据库具有天然可解释性

图数据库是基于图模型,对图数据进行存储、操作和访问的一项技术,即使没有专业的图论知识储备,也能轻松理解。它可以接受比实时查询更为复杂的分析需求,来挖掘图数据中的潜在价值。从分类上来说,图数据库属于 NoSQL 的一种。

图模型是图数据库中的重要概念。图模型由两个要素组成:节点和边。每个节点代表一个实体(一个人,地方,事物或其他数据),每条边代表两个节点之间的连接,这种通用结构可以对各种场景进行建模,如社交网络以及由关系定义的任何其他事物。

例如:下面这个图模型中包含 3 个节点:中国、四川、大熊猫。其中他们的两条边分别是:大熊猫是四川的特色、四川属于中国。

图模型的基础要素:节点和边

从上面的图模型可以看出,图数据库的目标就是基于图模型以一种直观的方式模拟这些关系。因为是基于事物关系的模型表达,图因此也具有天然的可解释性。

图数据库在处理关联数据时的优势

与关系型数据库相比,图数据库在处理关联数据时有三个非常突出的技术优势:

高性能:随着数据量的增多和关联深度的增加,传统关系型数据库受制于检索时需要多个表之间连接操作,数据写入时也需考虑外键约束,从而导致较大的额外开销,产生严重的性能问题。而图模型固有的数据索引结构,使得它的数据查询与分析速度更快。灵活:图数据库有非常灵活的数据模型,使用者可以根据业务变化随时调整数据模型,比如任意添加或删除顶点、边,扩充或者缩小图模型这些都可以轻松实现,这种频繁的 Schema 更改在关系型数据库上不能到很好的支持。敏捷:图数据库的图模型非常直观,支持测试驱动开发模式,每次构建时可进行功能测试和性能测试,符合当今最流行的敏捷开发需求,对于提高生产和交付效率也有一定帮助。我们可以继续扩展前面介绍到的图模型用例,来展示图数据库的优势。北京也属于中国,长城位于北京,Tom 去过长城,火锅店张师傅出生于四川,Tom 出生在中国喜欢大熊猫,张师傅在北京开店,Tom 是张师傅的顾客。

拓展后的图模型

image.png

如果你是业务 / 产品工作人员,你一定希望你的产品或业务拓展到用户的方方面面。如果你是开发人员你一定希望能够简单高效地描述这个纷繁复杂的世界。

在传统的关系型数据库中,要想进行关联查询,我们需要建立多少张表呢?国家、省 / 市、人、动物、地标、动物与省 / 市的关系、国家与省 / 市的关系、人与省 / 市的关系、人与人..... 粗算一下 至少十几张表。

构建这些表倒没什么。但如果,现在我们需要查询:在哪些城市上班的人最喜欢大熊猫?

首先需要关联动物表、人员表、人喜欢的动物表,关联这三张表就可以查到 Tom 喜欢大熊猫。但是接下来你还需要再关联两张表,找到他们在哪个地标工作,然后再关联两张表找到这些地标在哪个城市。等等,还没完,你还得 group by 一下,再排个序。

你会发现这个查询实在太难了!但这恰恰是数据分析师最基本的工作,也是大数据时代海量信息处理的一个缩影。而使用图数据库,我们可以轻易的描述和查询上图所示的关系。在处理复杂数据关系运算上,图数据库查询效率远高于关系型数据库。

图数据库的应用场景

图数据库技术已经应用于现实生活中的方方面面,诸如 Google、Facebook 等科技巨头已经开始使用图数据库的力量来蓬勃发展业务。据 Gartner 在《十大数据分析技术趋势》预测,2012 年至 2022 年,全球图处理及图数据库的应用都将以每年 100% 的速度迅猛增长。

如果说知识图谱是图数据库的底层应用场景,充分利用了图模型在存储和查询的优势为多行业提供知识服务。那么金融风控则是具有行业特点的高阶应用场景。

知识图谱

知识图谱作为图数据库的底层应用,已服务于多种行业,包括:智能问答、搜索、个性化推荐等。以智能问答为例,产品主要分为聊天机器人、行业智能问答系统两种。开放领域的知识图谱能为聊天机器人提供广泛知识,机器不仅能和使用者聊天还能提供日常知识。行业智能问答系统则使用行业知识图谱,能够为用户有针对性的提供专业领域知识,在法律、医疗行业已得到运用。

在知识图谱的应用落地上,主要有两点因素影响着知识图谱的质量和实现 -NLP 自然语言处理引擎、算法库。NLP 自然语言处理引擎决定了 NLP 爬虫平台获取数据的质量和数量,而这些原始数据作为知识图谱的知识原料又决定了知识图谱的水平。算法库中的图算法决定了图构建、图存储和图操作的能力,知识原料丰富而图算法落后,依然不能构建出强大的知识图谱。

金融反欺诈

图数据库通过利用多维交叉关联信息深度刻画申请和交易行为,可以有效识别规模化、隐蔽性的欺诈网络和洗钱网络;结合机器学习、聚类分析、风险传播等相关算法,可以实时计算用户的风险评分,在风险行为发生前预先识别,有效帮助金融机构提升效率、降低风险。应用图数据库的金融风控场景很多,例如个人信贷、洗钱路径追踪、个人 / 企业征信等

基于图数据库在金融风控的优异表现,很多企业表示对这项技术的看好,在这之中也有一些前瞻性的企业已率先使用此技术并取得竞争性优势。图技术发展多年,这项技术仍然有很多企业没有使用,是什么原因阻碍了技术的推进?

首先是数据存储的问题,在反洗钱的场景中,需对用户的借记卡和信用卡数据存储分析。在存储时发现,仅 10 个月借记卡数据 +1 个月信用卡数据规模就有 5 个 T,这样的数据量是过去图数据库无法支持的。

第二点是多步分析问题。在反洗钱应用场景中需要做到 3-10 步以上的分析,而目前的图数据库在企业级场景下,2 度到 3 度查询时就会出现超时或者内存溢出的问题。这样的性能对于欺诈甄别的帮助很小。

针对这些问题,图数据库厂商正在积极构建成熟的解决方案来满足这两点要求,市面上有越来越多高性能图数据库出现。目前,部分企业采取的替代方案是通过图数据库 + 大数据平台的方式实现大数据量的效果,但是这样的解决方案由于技术门槛较高无法轻易掌握。

工业领域

图模型具有强大的表现力对于快速更新的事物有很强的适应性,在工业领域用来管理快速变化的库存、供应链关系。目前已有沃尔沃等汽车制造商,依靠图数据库优化生产流程和供应链管理。

在制造业,供应链的管理涉及到多人协作和实时库存信息的反馈,包括汇总后的信息和明细数据的查询,查询过程涉及实体很多且关系复杂。此时图数据库在面对这类深度关联的场景时,优势就显现出来了,因为只需要通过边的查询就能找到相关联的数据,而无需对某一顶点做全局扫描,图数据库能够做到对于流入数据的实时更新和数据深度遍历。

图数据库技术的架构

图数据库的技术架构如下图所示,整体上采用分层架构的模式,由上至下分别是:接口层、计算层、存储层。

图数据库的系统架构

image.png

(1)接口层:接口层对外提供服务,有如下几种方式:

查询语言接口:提供除该图数据库原有查询语言之外的语言查询,例如 Cypher、Gremlin 等主流图查询语言接口。API:提供 ODBC、JDBC、RPC、RESTful 等接口与应用端交互。SDK:在 Python、Java、C++ 等编程语言中通过库函数的方式调用图数据库的接口。可视化组件:通过图形化界面的形式展示和实现用户的交互。(2)计算层:提供对操作的处理和计算,包括语法解析、查询引擎、优化器、事务管理、任务调度和图算法实现等。其中,图算法可能是由图数据库本身提供,也可能是提供接口与图处理引擎对接

(3)存储层:图数据库有原生和非原生存储两种存储方式,图存储引擎提供了图数据结构、索引逻辑上的管理。

图查询语言标准统一代表市场认可度提升

与关系型数据库不同,图数据库领域目前没有统一的查询语言,大多数查询语言与产品紧密关联。当企业需要使用新的图数据时需要重新学习语法,这带来了不必要的学习成本。是否拥有一个统一的查询语言标准,也标志着图数据库市场的成熟度。

在 2019 年 9 月 17 日,SQL 标准国际委员会投票决定,将 GQL 作为一种新的图数据查询标准语言。目前还无法确定 GQL 的第一个可实现版本,但很有可能在 2020 下半年会推出 GQL 图查询语言的完备草案。

查询语言统一带来的好处:

降低企业学习成本—前期的学习成果是能够积累在将来发挥作用的。新的查询语言不只是简单的语法,还是一种新的语言使用思考方式。统一语言后,使用不同的图数据库将只意味工具不同,但是语言基础是相通的。提升技术成熟度—企业不只担心学习成本,更担心的是整个技术的成熟程度。如果业界有一门统一的查询语言,也就是当企业认为这种分析方式是稳定而成熟的,才会认可它。云让数据查询和分析变得简单易用目前将图数据库上云的厂商并不多,少数图数据库厂商提供云上图数据库部署,供数据科学家,开发人员,业务分析师,学生和其他爱好者使用。开发者可以在短时间里通过简单的步骤开启基于图的解决方案配置。

大数据时代时代的业务增长带来了数据量的剧增和数据关联的复杂化,与此同时企业对数据价值的期望也越来越高。根据 DB Engines 近 7 年数据库流行趋势显示,图数据库相较其他主流数据库受欢迎程度遥遥领先,目前,国内越来越多的厂商进入图数据库领域,开始构建自己的图数据库,图数据库的建设既需要全面的大数据技术又需要图数据库工程师和业务专家的持续协作,是一项长期持续的工作,未来,图数据库技术必将成为最为热点的技术之一。

上文就是小编为大家整理的图数据库基础,我们为什么需要图数据库的相关内容。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:一篇带给你跨数据源实现数据同步
下一篇:聊一聊MySQL的共享锁和独占锁
相关文章