图数据库在图书馆的应用研究

2020-12-01 14:53李金阳
图书馆 2020年11期
关键词:标签建模数据库

李金阳

(苏州市吴中区图书馆 江苏苏州 215128)

1 图数据库的关键技术和原理

1.1 图数据库基本原理

在计算机科学中,图形作为一种特定的数据结构,用于表达数据之间的复杂关系,如社交关系、组织架构、交通信息、网络拓扑等等。在图计算中,基本的数据结构表达式是:G=(V,E),V=vertex(节点),E=edge(边)。图形结构的数据结构一般以节点和边来表现,也可以在节点上增加键值对属性。图数据库是NoSQL(非关系型数据库)的一种,它应用图形数据结构的特点(节点、属性和边)存储数据实体和相互之间的关系信息[1]。节点和边是图数据库模型的基础,节点通过边组织起来,按照相互的关系组成复杂的图结构模型。节点和边分别有很多属性,节点通常用来表示实体,边具有方向性以及多个属性的键/值对(keyvalue pair),其中方向性既可以单向,也可以双向。图数据库具备图形结构数据的原生存储和遍历能力,由于图形数据结构关系变化的多样性,图数据库适合对数据结构较为复杂的关联关系、动态关系变化较快的海量数据进行存储和管理,可以对数据关联关系进行快速匹配、遍历和查找。图数据库的基本存储结构如下:

节点:代表数据实体,如读者、书籍、图书馆等。

属性:节点的附属信息,如读者的姓名、性别,书籍的书名、出版社、ISBN等信息。

边:表示节点之间的关系,如读者节点与书籍节点的借阅关系等。

图1 图形数据结构节点关系

数十年以来,关系型数据库(RDBMS)以“表格化结构”的方式对实际中的联系进行建模,对聚合数据进行优化,在结构化数据的处理方面产生了非常重要的作用。但是关系型数据库较难适应快速的数据变化,对于动态变化的数据结构关系较难管理。在处理“联系”的具体问题上,任何强联系增强都会导致数据库连接操作的增加,在这种情况下,关系型数据库的连接查询方式显得非常“昂贵”,并且在反向查询方面代价更高。例如,在探究社交网络查询朋友链的关系时,SQL语句的层级结构使用了递归连接,递归问题的连表查询具有非常高的复杂度,查询效率非常低。以我们的社交关系为例,它是人与人密集关联的网状模型,一个普适性的Schema或切割成无关联性的聚合数据都难以展现它的复杂度。但假如我们采用“图建模”的方式,则可以在现实世界与模型的数据库之间建立更贴切的联系。通过“图建模”的方式,充满联系的世界不再抽象为几个简单的表格,而是由节点、联系和属性组成的关系图。因此,图数据库更适用于相互之间高度关联的数据结构,它在处理多数据关系建模、数据关系动态扩展、实时遍历数据关系等方面具有诸多优点,具体为:①可以通过更贴近现实关系的方式进行图数据的建模;②通过图论的遍历方式访问图结构数据;③在数据集增大时,它的性能趋向于保持不变[2];④通过特殊的查询语言可以直接访问数据[3];⑤基于图结构的天生可扩展能力,具备更佳的灵活性。

1.2 图数据库的遍历搜索和性能对比

在计算机科学的领域,图形是最为灵活的数据结构之一。图形数据结构的遍历算法从开始节点出发,通过与之相连的节点进行查询。图的搜索算法包括广度优先和深度优先两种:

广度优先(breadth first)搜索:是最为简单和便捷的图搜索算法之一,这种查找方法在很多应用中都非常有用,也是很多图形算法的基础和原型。图的广度优先遍历类似于树的层序遍历,它的思想是从一个顶点V0开始,辐射状地优先遍历其周围较广的区域。它属于一种盲目的搜索方法,彻底搜索整个图数据结构,直到找到结果为止。

深度优先(depth first)搜索:图的深度优先搜索和树的先序遍历较为类似,它的搜索思想是:从第一个节点V0出发,依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和V0有路径相通的顶点都被访问到。若尚有其他顶点未被访问到,则另选一个未被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。这是一种基于递归的搜索过程。

很多知名的图数据库采用原生图存储,是专门为存储、搜索和管理图而设计和优化的。这些图数据库的图计算引擎技术支持在大数据集上使用图形理论的算法,并对批处理大规模数据进行优化。当我们把实体事物关系构建成图数据库的实例模型,很多关联型的用例和数据模型采用图数据库可以使性能提升一个甚至几个数量级,而且图数据库还能提供非常灵活的数据构建方式。同样的模型如果采用关系型数据库建模,将造成大量表连接、非空逻辑检查,同时关联关系的连通性增强都将增加数据库表之间的连接操作,从而带来巨大的性能开销。

我们以一个社交关系关注深度查询的例子来比较关系型数据库和图数据库的查询性能(关系型数据库采用MySQL,图数据库采用Neo4j)。

采用MySQL对个人的关注关系进行建模,结构如下:

图2 关系型数据库社交关系建模

采用Neo4j对个人的关注关系进行建模,关联结构如下:

图3 图数据库社交关系建模

当查询“某人的关注的关注”这项深度为2度的内容时,采用SQL查询代码将进行两次的JOIN操作,如果查询深度为4度以上的关注关系时,递归的连表查询使得时间和空间复杂度都非常高,多重JOIN查询效率极为低下,查询时间呈指数级增加,开销非常大;而如果采用图数据库进行关注关系的查询,基于路径遍历的图形数据结构操作与数据本身的关联结构高度一致,随着查询深度的增加,查询时间是线性增长,响应时间表现非常平坦。在超过3度关联关系查询时,图数据库的性能就大幅领先于关系型数据库了。在对100万个用户的数据集进行查询时,两者性能对比如下:

表1 关系型数据库和图数据库深度查询性能对比

从这个简单的例子我们可以看出,在面对大量且复杂的数据连接查询时,图数据库展现出非常优秀的性能,基于图形的算法能够快速遍历图中的节点和关系。在大数据时代,图数据库非常适合特定情况下复杂海量数据的建模和遍历,具有更好的灵活性和可扩展性。

2 Neo4j介绍

2.1 Neo4j基本情况

Neo4j是当前较为主流和先进的原生图数据库之一,提供原生的图数据存储、检索和处理。它由Neo Technology支持,从2003年开始开发,1.0版本发布于2010年,2.0版本发布于2013年。经过十多年的发展,Neo4j获得越来越高的关注度,它已经从一个Java领域内的图数据库逐渐发展成为适应多语言多框架的图数据库。Neo4j支持ACID、集群、备份和故障转移,具有较高的可用性和稳定性;它具备非常好的直观性,通过图形化的界面表示节点和关系;同时它具备较高的可扩展性,能够承载上亿的节点、关系和属性,通过REST接口或者面向对象的JAVA API进行访问。Neo4j的各个特性贴合图形数据结构,其各部分的内容、特点以及数据量支撑情况如下:

节点:节点是主要的数据元素;节点通过关系连接到其他节点;节点可以具有一个或多个属性(存储为键/值对的属性);节点有一个或多个标签,用于描述其在图表中的作用。

关系:关系连接两个节点;关系是方向性的;节点可以有多个甚至递归的关系;关系可以有一个或多个属性(即存储为键/值对的属性)。

属性:属性是命名值,其中名称(或键)是字符串;属性可以被索引和约束;可以从多个属性创建复合索引。

标签:标签用于将节点分组;一个节点可以具有多个标签;对标签进行索引可以加速在图中查找节点。

表2 Neo4j各部分数据量支撑情况[4]

2.2 Neo4j存储结构

Neo4j图数据库的不同部分(节点、关系、属性、标签)分别保存在不同的存储文件(store file)中,Neo4j对这些存储文件作了专门的设计和优化,以提升存储和访问效率,Neo4j运行时引擎可以对这些文件格式进行高效的查找和遍历。其中的核心特点之一是Neo4j按照免索引临近原则存储数据,这样当执行遍历时Neo4j能够直接跟随指针连接节点和关系,相对于关系型数据库的非免索引邻近存储,这种类型的访问速度会更加快[5]。

表3 Neo4j主存储文件及相关的属性

在Neo4j中,节点、关系和属性等图的组成部分都是基于Neo4j内部的编号进行访问的,而且这些元素是定长存储的。以节点为例,第1个字节是标志位,表示“是否正在使用”,接下来4个字节表示关联到该节点的第一个关系,再接下来的4个字节表示该节点第一个属性的编号,其存储结构如下图所示:

图4 Neo4j节点的存储结构

这样设计的优点在于,知道了某节点/关系/属性的内部编号,就能直接算出该编号在对应文件中的偏移位置,直接进行访问。也就是说在图的遍历过程中不需要基于索引扫描就可以直接找到该元素。例如,我们要查找内部编号为200的相关数据,那么就能够直接计算出这一数据将会在节点存储文件中从2 800字节开始(14字节 * 节点编号200)。通过这样的存储方式,图数据库计算这些数据起始位置的时间复杂度,将远小于搜索一个函数的时间复杂度。当涉及大量数据时,这会带来显著的性能提高,这也是Neo4j具有较高遍历和检索性能的原因之一。

2.3 Cypher查询语言

Neo4j有基于自身优化的图形搜索算法,也具备一套自身的查询语言解析系统。Cypher是几种用来描述和查询属性图的语言之一,也是Neo4j采用的图数据库查询语言。Cypher是一种简洁且富有表现力的语言,以精确的方式程序化地描述图结构。Neo4j使用Cypher对图形数据进行增删查改(CRUD)操作。在搜索功能中,Cypher语言由start、match、where、return四个部分组成:

start:在图中指定一个或多个起始节点,可以通过索引查找获得,也可以通过节点的编号直接获得;

match:图形的匹配模式,也是实例化的需求部分;

where:提供过滤模式匹配结果的条件;

顶岗实习是高校人才培养中的重要一环,是学生在校完成基础技术技能的学习后,去专业对口企业参与实际生产过程,运用所学知识和技能,完成一定生产任务的一种实践性教学形式,是培养学生进一步获得实践技能、创新意识及创业精神的重要途径,在整个高职教育过程中占有举足轻重的地位。实现顶岗实习过程的规范管理对提高顶岗实习的质量和效果有着重要意义。

return:用来指明在已经匹配查询的数据中,哪些节点、关系和属性是需要返回给客户端的。

举例:从用户Tom出发,搜索有同学关系(CLASSMATE)的人:

从大量的应用案例可以证明,Cypher可用性较高,不仅能实现关系型数据库SQL语言的相关功能,还能实现SQL语言不具备的遍历查找功能。Neo4j图数据库凭借其出色的设计思想、高可用的框架、高性能的存储结构、简易灵活的配套语言,在大数据时代的数据建模、检索优化、社交网络等方面发挥着越来越重要的作用。

3 Neo4j数据建模实例

在关系型数据库的数据建模中,将事物的逻辑结构归结为满足一定条件的二维表中的元素,这种表就称为关系表,是使用实体(Entity)对这类事物进行抽象的结果。这样的模型主要描述的是经过抽象后的实体之间的关系,而并非表述自然事物的实例。图数据库的数据建模更加贴近自然,它没有对事物进行抽象和聚类,描述的是具体事物和事物之间的联系。图数据模型中的节点对应的就是具体事物实例。如果要对事物实例进行聚类和抽象,可以使用标签进行标识,与关系数据模型不一样的是,关系数据模型中的表是强制性约束的,而图数据模型中的标签是可选择性的,更具有可扩展性和灵活性。因此,图数据建模更适合关联关系复杂、不断演化的、增量式迭代式的应用场景和软件开发实践案例。

表4 图数据库元素建模功能

我们以图书馆最基本的业务模式来描述Neo4j图数据库的建模过程,以及围绕不断新增的业务需求来不断迭代完善这个数据模型。

首先构建一个读者借阅图书的模型:

图5 图书馆读者模型图(1)

然后加入读者喜好和评论图书功能:

图6 图书馆读者模型图(2)

示例代码:

最后加入读者间的社交功能:

图7 图书馆读者模型图(3)

示例代码:

以上是一个比较简单的图数据库构建示例,我们从最基本的图书借阅功能,逐步扩展了个性化表达、社交网络等功能,跟随图书馆业务的发展维度,我们还可以对这个模型进行更多的功能扩展,而且可以非常方便地做到。从这个例子中,我们可以发现:相对于关系型数据库建模,图数据库建模的方式更加灵活,它的模型不需要进一步的抽象,更贴合现实的事物关系,因此更适应于迭代式和增量式的开发模式。它可以一个特性接着一个特性、一个用户故事接着一个用户故事,不断加入新的元素来满足新的需求,在模型中加入新的事物和连接关系不会对既有的数据模型、范式、约束造成影响,从而具有更强的可塑性。在实际应用方面,图数据模型降低了事物对象模型和关系表模型之间的翻译困难,消除了技术领域和业务领域的沟通障碍,使得大家都可以用同样的模型和思路来探讨业务中的核心问题,再将其整合到应用程序之中。除此以外,图数据模型在关系网络查询方面还有关系型数据库不具备的性能优势。基于这些优点,图数据库在当今IT和互联网产业中得到非常广泛的应用,很多知名的大公司如IBM、Microsoft、Walmart、eBay、VOLVO都采用了这一技术方案。在各行各业都在拥抱互联网的今天,图书馆行业也不例外,图数据库在图书馆行业未来的发展和应用中有非常多的“用武之地”,我们将在下一节进行阐述。

4 图数据库在图书馆业务中的应用

4.1 读者图书推荐系统

在线推荐系统是许多电子商务网站的核心构建之一。以当前热门购物网站为例,当我们浏览若干个商品或购买某件物品之后,网站便会根据我们最近这段时间的浏览习惯和购物需求推荐它认为值得我们购买的物品;在新闻类网站或App中,系统也会针对我们最近的阅读偏好推送它认为我们想要阅读的内容。目前业界较为主流的推荐算法包括:基于流行度的推荐算法、基于协同过滤的推荐算法、基于内容的推荐算法、基于模型的推荐算法等等。图书馆对于读者的图书推荐工作,一般围绕当前热点、编辑推荐、类别推荐等方面展开,这些推荐方法都有很大的局限性。对于图书馆而言,只有针对每位读者的个性化需求进行智能化推荐的系统,才是真正意义上的推荐系统。公共图书馆的个性化图书推荐系统与商业购书网站、社交书评网站(如豆瓣)有非常大的不同。图书馆的个性化智能推荐系统需要满足两个条件:第一是存在信息过载的问题,第二是读者大部分时间没有明确的需求,因为如果读者有明确的需求,就可以通过检索系统找到自己需要的书籍了。同时,图书馆对于读者个人资料的掌握往往也较为有限,图书馆与读者、读者与读者这两种联系都是“弱联系”关系,图书馆的“生态环境”也是弱社交化的交流环境,图书馆与读者、读者与读者之间的主要是通过书这样一种介质产生关联。在这种情况下,我们可以引入图数据库,以阅读内容为联系节点构建群体阅读网状模型,按照“人以群分”的思路对读者群体进行分类集体画像,构建一种基于图书关联的新型网状结构模型:我们将每一位读者作为一个节点,同时又将他(她)阅读的每一本书作为一个节点,两者之间的关系就是阅读关系;当这本书被其他读者借阅时,那么另一位读者与这本书又产生了阅读关系,读者与读者之间是通过阅读共同(或相似)的一本书而产生联系的。通过这种错综复杂的阅读关系,不同的读者之间便产生了社交联系。这样,所有的读者、书籍、阅读关系便构成了一张庞大的社交关系网,系统基于相似群体阅读内容的特性,可以为读者推荐适合他们需要的、个性化的阅读内容。除此以外,基于图数据库的阅读推荐方法还能很好地解决“冷启动”的问题:读者只要在图书馆开始借书,就可以根据图书的关联特点很快获得推荐图书;读者借的书越多,推荐的样本就越丰富,推荐的内容就更加趋于合理。

4.2 数据资源管理

图书馆作为一个信息服务中心,具备各式各样的自建和外购数据资源以及与之匹配的各种检索系统。目前大多数数据资源和检索系统都构建于关系型数据库之上,系统根据用户输入的关键字在数据库中进行查询,并返回相关的网页、图片、视频等资源。如果图书馆管理的数据资源过多,分散式的信息检索系统会给读者带来诸多不便,这样就需要引入统一资源检索平台对数据资源检索进行管理。统一资源检索平台一般通过数据接口、特定协议、页面分析技术,对异构系统的信息进行抓取,然后汇总在一个页面上进行展示。但这样的异构系统数据资源检索和管理方式存在诸多不足:第一,仅从视图层对信息进行了组织和展示,内在的逻辑关系未打通;第二,基于关键词的检索具有较大的冗余性,可能把仅仅名字相同而非实际相关的内容展示出来;第三,这样抽取的只是零散的数据而不是有组织的知识,而当前人们不再满足于简单搜索引擎返回的信息,他们更希望获得符合个人需求的有实际价值的知识。检索系统的发展势必要更多地关注于关联关系挖掘、关系存储、知识表示和关系推理等[6]。对于这种情况和未来数据资源管理的发展趋势,图数据库的特性支撑它在图书馆的数据管理和检索优化中有更大的作为空间。使用图数据库作为数据资源管理的构建支撑系统,基于图理论对数据进行存储和检索结果反馈,可以更好地对异构系统数据的关联关系进行挖掘、分析和推理,展示的结果内容会更加立体化,也具有更强的延伸性。这种构建过程可以围绕某个行业领域、热点事件、讨论话题等单元内容展开,首先对基础数据内容进行采集和预处理,将信息内容、信息来源、信息来源间的关系转换成存储的节点和关系的属性,构建这个单元板块的数据资源图谱,并根据数据内容的特点构建索引,提升资源管理效率。对于用户的检索请求,系统通过算法智能对检索结果进行加权反馈,对内容进行自动的优先级优化,而不是像大杂烩一样呈现;另外,还可以根据图模型的特性,在反馈结果中展示出源数据到最后整合数据的整个数据生成链路,方便用户对数据关联关系进行更细粒度的分析。

4.3 信息构建与知识构建

美国建筑学家沃尔曼(Richard Saul Wurman)于1975年首次提出信息构建, 将其定义为“组织数据的模式,使复杂信息清晰化”,并且提出了信息构建的五项规则[7]。目前普遍认为信息构建是以合理的方式对信息进行组织,是信息技术管理和资源管理的核心。对于图书馆而言,有学者提出以信息构建的四大核心系统为评价参考,以信息构建的五项原则为标准,对数字图书馆的评价指标体系进行构建[8]。知识构建是在信息构建基础上的信息组织形式,是信息资源链更高级的组合和服务,使信息更加清晰化和便于理解。在图书馆中,对于知识和信息的管理需要对大量信息进行收集,将收集的信息按照不同的门类和需求进行组织和存储,不断对显性知识和隐性知识进行挖掘,对知识之间的关系进行揭示,方便人们获取所需知识资源。知识地图是知识构建过程中常用的管理方式,被普遍认为是一个具备知识导航和管理功能的信息图,使得资源信息按照一定规律组织在一起,能够有效展示信息和知识在图中的存储和分布情况,并提供明确的访问途径。知识地图还能显示出知识点之间、知识点与个人或组织之间的相互联系,进而能够清晰向用户展示各知识、条目的关系,获取相应的知识内容,并借助可视化、形象化的手段对知识信息进行查询。对于知识地图和仓库一般采用关系型数据库或RDF描述语言进行构建,关系型数据库可以对知识内容进行抽象和快速查询,但在关联关系方面存在不足;RDF描述语言基于XML可以表达数据和数据之间的语义关系,但它在本质上是一种简单本体语言,缺乏统一管理和版本控制,在海量数据构建和检索方面也存在短板。图数据库在图书馆知识仓库构建和语义关联方面则具备更多优势,文本知识结构中的知识元是知识结构体系中最小的单位,可以使用图数据库的节点进行记录;知识之间的关联、要素之间的联系,可以使用图数据库的关系进行表达,进而建立知识与信息之间、知识与持有者之间、知识与用户之间的各种联系;再基于图数据库优秀的检索性能,可以为用户沿着知识分布图或树,快速地找到位置并将结果进行反馈。除此以外,系统还可以凭借图数据库的特性对隐性知识进行挖掘、捕获和组织。

4.4 其他应用方面

图书馆信息治理:随着图书馆业务体系的不断发展,基于总分馆服务模式的外延也在不断地拓展,除过去的传统分馆外,各类载体都加入了图书馆的服务体系,再加上硬件、软件、网络服务设备的扩容,各类型数据中心的建设、虚拟化服务的实施、整体拓扑结构也变得越来越复杂,这也给图书馆的信息治理工作带来了更大的工作量和难度。图数据库在网络和数据中心管理方面已有成功应用案例,在基础架构、网络规划、路由分布、服务质量映射以及网络影响分析等诸多方面可以发挥作用。例如,对图书馆的通信体系进行图建模,将各种硬件设备、软件、数据中心等实体以图数据库节点的方式进行映射,将各种实体之间的联系以图数据库关系的方式进行表示,可以较为全面和准确地展示出图书馆通信体系的整体拓扑结构、数据链接路径、路由节点以及网络流量等各方面的信息,还可以协助做好信息治理中的问题诊断和原因分析,在信息安全方面发挥较大的作用。

图书馆标签系统:标签系统在图书馆中是一个广义的概念,一方面是物理上的标签,如RFID电子标签,另一方面是对资源属性进行标识的标签,这种标签既可来自原生出版方或图书馆采编工作方,也可以来自用户对感兴趣的内容和资源进行的标注,还可以来自人工智能技术等对资源进行的标识和分类。用户、各种类型的标签、资源三者间呈网状关系,是标签系统最重要的三种元素。标签系统是联系资源和用户的纽带,对于图书馆资源管理和读者服务具有重要意义。基于标签系统的图结构,图数据库相较于关系型数据库具有更多的优势:面对标签系统的超大数据集以及复杂的连接结构,图数据库都展现出了更好的契合度,而且具有更丰富的表现形式。资源、标签、用户在图数据库模型中可以以节点进行标识,相互之间的关联可以用关系进行标识。标签系统在图数据库建模的基础上可以展示出直观的聚类关系,通过上下文环境的语义和相似度算法能运用在检索系统、推荐系统等领域。

用户行为分析:用户行为分析是图书馆面对不断变化的读者需求,准确了解读者个人偏好、使用习惯、阅读特征的重要手段,并且在分析的过程中不断揭示读者个人和群体的行为规律,对于资源购买、内容推荐、需求引导、预测用户行为、改进服务措施等方面具有重要意义。在大数据时代,用户行为更加复杂化和多元化,通过各种手段和方法采集的数据具有网状和交叉特点,各种用户、行为和终端之间又有很大的关联性,这些特征都适合引入图模型,将图数据库作为后台的行为数据存储工具。在图数据库中,可以将用户、终端、资源、介质作为节点进行标识,将行为作为关系进行标识,这些节点产生联系,根据时间、坐标等属性描述出用户行为轨迹;通过图模型聚类信息我们还可以清晰地看出群体行为聚集和流量情况,有利于对图书馆各方面存在的问题进行针对性的解决,也有利于对不同用户群体的差异化特征进行分析,针对不同的对象和应用场景提出具有指导性的服务建议,从而提升图书馆的整体服务质量。

5 结语

随着相关理论研究的逐渐深入,图数据库技术从实验室走出来得到越来越广泛的重视和应用。图数据库在某些方面具备关系型数据库不具备的优势,但在数据完整性、可维护性等方面也存在很多挑战,整体来说图数据库技术处于发展的初期,还有不断扩展的空间。在大数据环境下,以数据和关系为中心的图结构模型在图书馆中将越来越常见,期待能够继续加强图数据库在图书馆行业的应用研究,未来有更多的实用性工具和产品落地,推动图书馆信息和数据服务能力得到更好的发展。

猜你喜欢
标签建模数据库
基于FLUENT的下击暴流三维风场建模
联想等效,拓展建模——以“带电小球在等效场中做圆周运动”为例
求距求值方程建模
基于PSS/E的风电场建模与动态分析
无惧标签 Alfa Romeo Giulia 200HP
不害怕撕掉标签的人,都活出了真正的漂亮
数据库
数据库
数据库
数据库