您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 基于图数据库的在线族谱编录系统
龙源期刊网基于图数据库的在线族谱编录系统作者:姜洋彭智勇彭煜玮来源:《计算机应用》2015年第01期摘要:针对目前国内族谱系统中数据共享度不高、扩展性不好、编录效率较低等问题,提出并实现了一种基于浏览器/服务器(B/S)架构和图数据库的在线族谱编录系统。首先,该系统采用B/S架构,支持多人在线协同录入,提高了数据录入效率;其次,系统使用数据库存储数据,便于集中管理和统计检索,提高了数据的共享程度;然后,考虑到族谱数据具有图的结构特性,在系统中采用图数据库进行管理,大大提高了数据处理效率;最后,使用真实族谱数据进行了系统的效率对比,验证了系统的有效性。在实验中,使用了约20万人的刘氏族谱数据,对关系数据库PostgreSQL和图数据库Neo4j管理数据进行了存储和查询的效率对比。实验结果表明,Neo4j比PostgreSQL节省约50%的存储空间,而在人物后代查询、人物祖先查询、人物亲缘关系查询以及人物后代性别统计4种常见查询中,使用Neo4j的平均响应时间约为基于PostgreSQL数据库的20%、80%、16%和15%。由此可知,基于图数据库的在线族谱编录系统可用于高效处理大量族谱数据,并且支持多用户在线协同编录。关键词:族谱;数字化;浏览器/服务器(B/S)架构;图数据库;查询性能中图分类号:TP319;TP311文献标志码:A0引言族谱[1]又称为家谱、宗谱,是记录家族世代繁衍和重要人物事迹的图文体裁。族谱文献对于人们了解人文历史有很大的帮助,并且在政治经济学、地理学、群体遗传学等方面都有着潜在的研究价值[2]。过去用竹简和纸张记录族谱信息,随着世代增加,族谱中的人物呈指数级增长,手工编修族谱需花费大量人力财力,并且用竹简纸张记录族谱信息,难以快速检索族谱数据,信息分散使得无法利用海量族谱数据作相关的研究。族谱数字化利用计算机技术将族谱人物数据和文字图片信息合理地组织起来,存储更灵活,检索更快速,能够满足和适应现代对族谱管理的需求。数字化的族谱数据可以为族谱相关的研究提供便利,具有很大的研究意义和价值。到目前为止,国内外族谱数字化研究已经有了一定的发展,文献[3-4]分别实现了一种族谱系统,但是只适用于管理少量的以家庭为中心的族谱数据。在台湾著名的族谱网站FamilySearch[5]上,用户可以方便地创建和管理个性化族谱空间,该网站提供丰富的检索和展示功能,但无法将族谱数据输出成谱志文档。国内有文献[6-7]对族谱元数据规范进行了探索,但尚未成为标准。文献[8-9]实现了基于单机形式的族谱录入软件,以文本文件存储族谱数据。但是该系统存在着以下问题:首先单机软件的架构不利于数据的共享,当多用户同时录入编辑龙源期刊网同一族谱时,需要通过拷贝的方式来合并多个文本文件;其次,由不同人员编辑的族谱文件之间冗余严重,在合并数据的过程中往往需要人工干预才能完成;最后,该系统只能支持族谱数据的录入和输出为PDF(PortableDocumentFormat)文稿,无法对一般用户提供族谱数据的查询检索功能,限制了族谱数据的进一步利用。基于目前族谱数字化研究存在的不足,本文实现了基于B/S架构的在线族谱编录系统,支持多人在线协同录入,数据集中管理,提供各种检索查询;并且考虑到族谱人物关系的图特性,采用先进的图数据库存储,能够高效地处理族谱数据。该系统提供族谱数据录入、在线文档编排、谱志PDF生成以及统计检索等核心功能。1系统概述族谱数字化本质是将族谱信息用数字媒介存储起来。数字化存储的族谱数据在不同领域有不同的用途。本系统提供了族谱数据录入、检索展示以及谱志输出等功能,系统不仅仅是将族谱信息存储起来,更注重高效录入数据、快速查询检索以及生成多种体例的谱志文档。本章接下来分别从相关概念、系统功能和技术架构三个方面来阐述系统。1.1相关概念本系统中所涉及的相关概念列举如下。世系数据一系列人物信息的集合,其中的人物之间存在父子(儿女均看作子)、母子、配偶、过继、兼祧等关系。把人物和关系分别作为节点和边,那么世系数据构成了一种图结构,如图1所示。由于世系人物具有世代属性,这种图结构可看作成有层次关系的树结构。文中所提到的人物树即是表达这种有层次关系的一种形式。世系体例图也称世系图,是行传和吊线图的统称。以特殊的表格或图来描述世系数据,通常世系体例图有很多种模板,所呈现的样式也有区别。行传对世系数据中每个人物的文字描述,通常会将多个人物(同一世代)的行传排放在一起,呈现特殊的表格形式。吊线图又称吊线,是一种描述人物之间关系的图示,以一种类似树型结构的图示将世系人物之间的关系展示出来,人物之间的关系用连线表达,由于连线采用的是垂线,故又称为吊线。1.2系统功能介绍本系统核心功能分为4大部分:系统管理、数据服务、数据录入和谱志生成,系统功能如图2。下面将简介各部分功能。龙源期刊网系统管理系统管理包括两个部分:用户管理和数据管理。1)用户管理。用户管理主要用来管理使用系统的用户,包括添加删除用户、管理用户注册登录、给用户添加角色等。角色和权限管理则定义用户使用系统的功能限制。代理商和团队管理则是管理使用系统的特殊群体:代理商和专业的录入团队。2)数据管理。数据管理涉及系统数据库级别的维护管理。其中谱志管理描述了族谱的编录状态,是否完成,完成进度如何等;造字管理维护了系统的造字库,可以在线造字扩充字库;导入可将某个族谱的一部分数据导入到另一个族谱中,导出则是将族谱一部分数据导出为一份独立的族谱数据;备份和恢复指数据库的备份和恢复操作。1.2.2数据录入数据录入包括两个部分:世系数据录入和文档录入。1)世系数据录入。世系数据录入包括人物基本信息的录入,以及人物照片的上传管理。在录入一部分世系数据后,通过人物树整合将分散的人物数据合并为一份较完整的世系数据,校对修改供用户对录入的信息进行校对并批量修改。在世系数据录入中,用人物树结构表示人物之间的关系,子节点代表儿女(配偶、兼祧等关系可看作子节点,只需特殊标记即可)。在世系人物录入时需要构造这种人物树结构,便于添加子节点并保存该节点的关系信息。2)文档录入。文档录入提供了在浏览器中编辑WORD文档的功能。文档均保存在服务器端,用户可以新建和删除,将多个文档合并成一个,保存文档时会同步到服务器中。谱志文档具有多种不同的版式,系统提供了多种WORD模板供用户选择,可以在线加载和预览。1.2.3谱志生成谱志生成包括两个部分:谱志编排和谱志PDF生成。1)谱志编排。谱志编排功能是控制一卷谱志PDF以一定顺序显示指定内容,包括文档和世系数据。谱志编排主要有3个步骤:第1步建立多个分卷;第2步对世系数据进行分房;龙源期刊网步对每一卷谱志,将文档和世系数据按一定顺序排列。2)谱志生成。谱志生成是将文档和世系数据根据预先编排的顺序以及设置的参数生成为完整的谱志PDF文档。生成PDF之前,可以设置世系体例图的样式。系统提供了多种设置,包括基本设置、常规设置、样式设置、格式设置以及高级设置。在生成PDF过程中会根据设置规则完成内容的生成。1.2.4数据服务系统服务包括两个部分:数据展示和统计检索。1)数据展示。族谱展示功能是以网页形式显示一个族谱的基本信息;信息查看即查看族谱的详细信息,比如某个人物及其子女配偶的信息;PDF浏览则是在线浏览已生成好的族谱PDF;对照预览是对照显示不同世系体例图的样式。2)统计检索。统计检索提供了对系统中的族谱数据进行统计和检索的功能。其中单项统计和多项统计分别是在人物某个或某几个属性上进行统计,如男性人数以及在世的男性人数分别对应于单项统计和多项统计。族谱统计则是显示整个族谱的统计信息,如总人数、男女比例、生死状况等。简单检索和组全检索是在族谱中对某个或某些属性上进行查询的功能。1.3系统技术架构系统基于JavaEE平台,采用Struts2+Spring3+Hibernate4的技术架构,使用Maven工具管理项目的包依赖。系统技术架构如图3所示,由表示层、中间层和数据层组成。表示层使用Java服务器页面(JavaServerPages,JSP)技术,结合丰富的Struts2标签,负责显示与用户交互的界面,包括系统管理、数据服务、数据录入和谱志生成。中间层又可分为控制层、业务层、数据访问层以及持久化对象层。控制层使用了Struts来拦截用户的请求,并调用业务层的业务逻辑方法,处理用户请求,并根据结果返回给展示层。业务层,即Service层,使用Spring框架来管理业务层的各种服务接口,该层调用数据访问层完成各种业务逻辑。数据访问层,即数据库访问对象(DataAccessObject,DAO)层,封装了各种数据访问以及操作接口,对持久化对象进行增删改查等基本操作。持久化对象层,使用Hibernate将数据库中的数据映射成一系列的Java对象,通过操作这些对象来操作数据库数据。数据层存储了系统中所有数据,采用了应用比较广泛的开源图数据库Neo4j[10]来存储数据。2核心功能实现龙源期刊网本章介绍系统部分核心功能的实现过程,着重介绍大量数据库查询方面的实现过程,包括族谱人物树的构造、世系图的生成,以及统计检索。2.1人物树构造在录入世系数据时,需要显示人物及关系信息。由于族谱数据具有层次关系,用树状结构显示族谱数据更加直观。在实现时只需将配偶、兼祧等关系作为特殊的子节点即可。为保证系统的灵活性,应支持构造指定代数以内的人物树,一般10代以内即可满足系统大部分需求。系统使用了一个开源的JavaScript树插件zTree[11],利用这个插件在前端显示人物树结构,并扩展实现了与树相关的各种操作,列举如下:1)异步加载树节点。使用POST方法请求人物的后代,服务器查询数据库构造人物树数据转换成JSON字符串返回给浏览器。2)离线保存节点数据。加载树节点时将人物信息保存到树节点的一个属性中,使得查看人物详细信息时无需再去请求服务器。3)动态编辑节点。录入的人物保存成功后动态更新浏览器中的树节点,保持前端显示与数据库一致。如果未保存成功则不更新树节点,并给予提示。4)节点拖拽挂接。即更改人物关系。将节点拖至另一个节点下,服务器程序自动将前一节点更改为后一节点的子节点。服务器端构造人物树实质是查询一个人物的后代,并附带上人物的关联信息,将构造的数据转换为JSON字符串返回给浏览器进行解析处理。2.2世系图生成世系图中的行传和吊线均有多种模板,每种模板都用可扩展样式表语言(eXtensibleStylesheetLanguage,XSL)文件控制样式,用可扩展标记语言(ExtensibleMarkupLanguage,XML)文件保存世系图生成过程的中间数据。不同模板的XSL和XML文件格式不同,在此只介绍一种典型的行传和吊线。XSL文件一般是预定义好的,而XML文件内容是查询数据库构造的,故着重介绍XML文件的生成方法,其他模板生成方法大同小异。新苏式行传是一种常见的行传样式,是由三列多行内容组成的表格,表头是父亲谱名、本世派名和简介,如图4。行传中每个人物简介占表格中的一行,简介内容根据XML中的元信息生成,元信息包括个人的详细信息,以及父亲、孩子和配偶的基本信息。在XML中用一个节点元素来存储这些信息。生成XML算法如下。算法1生成新苏式行传XML文件。龙源期刊网输入:族谱基本信息。输出:新苏式行传XML数据文件。1)查询数据库,得到分房人物根节点集合S。2)对S中每一个人物,创建XML人物节点,获取人物基本信息以及其父亲、配偶和子女等信息,根据这些信息构造节点,并将子节点信息添加到集合R中。3)S循环完毕,如果R不空则将其赋值给S,返回步骤2);否则进入步骤4)。4)保存XML文件,结束。在生成XML
本文标题:基于图数据库的在线族谱编录系统
链接地址:https://www.777doc.com/doc-4235261 .html