首页> 中国专利> 一种可扩展的多类型领域数据协调管理的数据库系统和管理方法

一种可扩展的多类型领域数据协调管理的数据库系统和管理方法

摘要

一种可扩展的多类型领域数据协调管理的数据库系统和管理方法,包括数据资源本体库模块、层次型领域数据库模块、网络型领域数据库模块和领域数据演化模块,其中数据资源本体库模块和多种类型数据库、层次型领域数据库模块以及网络型领域数据库模块共同组成数据库集。本发明可以构建数量庞大的面向业务领域的数据存储库,在此基础上构建可扩展的数据资源本体库系统,快速地扩展出不同类型的领域层次型数据库和网络型领域数据库,并且可以从非结构化的原始文本数据中抽取出新的数据对象以构建新的领域数据。

著录项

  • 公开/公告号CN103412917A

    专利类型发明专利

  • 公开/公告日2013-11-27

    原文格式PDF

  • 申请/专利权人 广西大学;

    申请/专利号CN201310343157.X

  • 发明设计人 陈宁江;肖中正;董世龙;胡丹丹;

    申请日2013-08-08

  • 分类号G06F17/30(20060101);

  • 代理机构11251 北京科迪生专利代理有限责任公司;

  • 代理人成金玉

  • 地址 530004 广西壮族自治区南宁市大学路100号

  • 入库时间 2024-02-19 21:05:45

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-11-05

    专利权的转移 IPC(主分类):G06F17/30 登记生效日:20191017 变更前: 变更后: 申请日:20130808

    专利申请权、专利权的转移

  • 2016-08-10

    授权

    授权

  • 2013-12-18

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20130808

    实质审查的生效

  • 2013-11-27

    公开

    公开

说明书

技术领域

本发明涉及一种可扩展、多类型领域数据协调管理的数据库系统和管理方法,属于数据库和人工智能领域。

背景技术

数据库是按照数据结构来组织、存储和管理数据的仓库,是一个单位或者一个应用领域的通用数据处理系统。随着信息技术和市场的发展,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。随着信息化进程的加快以及“大数据”时代的到来,企业数据越来越趋于海量化、无结构化和复杂化。人工智能和数据库两项计算机技术的有机结合,促进了数据库智能化发展。一般的应用程序是把问题求解的知识隐含地编码在程序中,而基于智能数据库的系统则将应用领域的问题求解要素显式地表达,并单独地组成一个相对独立的程序实体。

随着信息化进程加快,海量复杂数据管理越来越受到企业的重视,但是企业在进行资源管理的过程中,经常会碰到以下问题:海量企业数据存储、管理困难;查找缓慢、效率低下;领域数据版本管理混乱;数据安全缺乏保障;各领域数据库无法有效协作共享。因此应对海量复杂无结构化数据的管理,需要可扩展、可演化并且多类型领域协同管理的智能数据库来对这些数据加以存储、处理和分析。

发明内容

本发明的技术解决问题是:解决非结构化的、具有多种复杂关系的数据的高效存储组织、索引以及查询问题,提供一种可扩展的多类型领域数据协调管理的数据库系统和管理方法。

本发明的技术解决方案:一种可扩展的多类型领域数据协调管理的数据库系统,包括:数据资源本体库模块、网络型领域数据库模块、层次型领域数据库模块和领域数据演化模块,其中:

数据资源本体库模块,定义顶层数据资源模型,实现基本数据单元的逻辑视图设计以及存储结构设计,提供数据存储与访问基础支撑能力,并建立包含大量业务数据对象、关系和概念的数据库;数据资源本体库模块为网络型领域数据库模块、层次型领域数据库模块提供顶层数据抽象规则和数据访问规则;

网络型领域数据库模块,根据数据对象的属性、关系网络以及其他特殊属性,在数据资源本体库的基础上构建基于网络型数据属性的数据库,实现网络型数据对象的数据结构设计、存储设计以及索引设计,形成了包含大量网络型数据对象的关系网,并实现对外部提供网络型数据库访问接口;网络型领域数据模块是对数据资源本体库属于继承以及在网络型领域数据上的实例化实现;向用户、其他模块以及外部系统提供基于网络型领域数据的查询接口;

层次型领域数据库模块,根据层次型数据对象之间的隶属、相邻、交叉、同级等关系特点,构建专门表示数据对象及其层次隶属相关信息的数据库,并实现对外部提供数据对象及其层次隶属数据库的访问接口;层次性领域数据库模块是对网络型领域数据模块的进一步演化,将仅具有层次性结构领域数据以树的形态进行存储组织,实现层次语义,并对用户、其他模块以及外部系统提供基于层次性领域数据的查询接口;

领域数据演化模块,追踪和控制数据资源本体库、网络型领域数据库和层次性领域数据库中的领域数据在用户使用过程中的变化,建立数据对象版本历史,并对用户提供的原始数据集结合已有数据进行分析,从而得到新的领域数据并通过筛选输入到领域数据库中,领域数据演化模块为上述三个库提供基于记录的数据版本控制,自动从用户输入的原始数据中发现新的领域数据,并且使用其接口进行相应的演化管理。

所述数据资源本体库模块包括数据持久化模块、底层词库建立模块、关系定义模块、数据索引模块以及接口模块;

数据持久化模块,定义面向接口的实现方法,根据不同的硬件环境、上下文环境以及其他需求灵活的配置数据持久化实现;基于对象序列化技术,定义领域数据相关对象的序列化和反序列化协议,数据持久化时通过文件组织协议把对象序列化后得到的二进制流输出到文件、数据库或者网络位置;当需要装载未载入对象缓冲池的对象时,根据上层请求发来的逻辑地址信息读取相应数据流,再通过对象的反序列化协议重构对象;数据在文件里的逻辑组织方式为块存储方式,块的管理采用堆结构进行管理。数据资源本体库的数据持久化模块同时也是网络型领域数据库和层次型领域数据库的数据持久化抽象,后两个模块的数据存储功能基于该持久化模块按照不同的持久化协议进行定制和扩展,形成特定数据类型的持久化库;

底层词库建立模块,存储无扩展属性和关系的数据对象,建立基本的领域数据对象、序列化协议、反序列化协议以及存储管理器;底层词库的单一数据形式,为网络型领域数据和层次型领域数据的定义提供了数据基础。网络型领域数据库模块和层次型领域数据库模块实现了这里定义的序列化与反序列化接口;

关系定义模块,在底层词库实现的基础上,用新的文件对底层数据对象数据库的词条建立同义关系、反义关系、隶属关系;高度抽象的、一般化的关系定义、组织、存储以及管理,使得网络型领域数据库在此基础上实现灵活扩展;

数据索引模块,先对领域数据对象进行摘要定义,通过快速的双编码算法,将领域数据摘要与领域数据对象的逻辑存储信息进行映射,达到快速检索以及访问控制的目的;网络型领域数据库模块和层次型领域数据库模块都含有索引部分,其中关键字都通过双编码计算后得到一个长整型数字对来实现;

接口模块,基于EJB3.0规范实现,以EJB接口和Web Service接口形式进行发布,实现跨平台服务,网络型领域数据库和层次型领域数据库通过继承数据资源本体库接口模块,实现定制的接口发布功能。

所述网络型领域数据库模块实现过程如下:

(1)在存储设计上基于所述数据资源本体库的存储管理层,定义网络型领域数据相关的领域数据对象、持久化协议;

(2)在定义好的网络型领域数据对象基础上建立存储层,定义属性部分基本结构和过程。将属性部分分为两部分,一部分是数据库设计时即存在的属性,称为基本属性;另一部分是用户自定义属性,称为扩展属性;

(3)在网络型领域数据对象存储结构之上建立数据索引,基于带有快速缓冲区的B树和Bloom Filter实现,在插入网络型数据对象的时候动态生成的B树,并且不限制B树的最大层数,针对网络型数据对象同名的情况,将属性块用指针连在一起形成一个属性块链表,当以名称为关键字查询网络型数据对象时,快速得到同名的网络型数据对象列表;

(4)在实现数据索引之后,针对数据记录的更新,通过实现检查点和日志文件,保障系统的高效存取和高容错性。

所述层次型领域数据库模块实现过程如下:

(1)在存储设计上基于所述数据资源本体库的存储管理层,定义层次型领域数据库相关的领域数据对象、持久化协议;

(2)在层次型领域数据对象以及基于层次型领域数据结构扩展到持久化协议的基础上,进行层次型结构的存储设计;

(3)存储层完成之后,通过限定的二叉树来组织层次型数据对象之间的关系结构。索引文件中的关键字是一个数据对象的双编码数偶构成的,由于此数偶的唯一性,所以无须考虑冲突的问题。在属性文件中,存放父数据对象和子数据对象也是采用此数偶来存储;检索时,通过计算该数据对象的数偶,到索引文件中匹配相同的数偶,得到相应的属性的指针,读出属性,若有多个子数据对象,可以由属性的指向下个属性的指针找到所有的下级数据对象;

(4)索引完成之后,在网络型领域数据库模块的检查点与日志文件功能基础上,构建适合层次型结构的简化日志文件。

所述领域数据演化模块实现过程如下:

(1)首先收集各个数据库的用户活动记录,监测领域数据对象的活性程度的变化。

(2)对收集到的数据对象活性变化数据进行分析,将活性低于系统阈值的领域数据对象纳入警戒后备库;

(3)进一步分析用户的活动记录,对核心属性发生变化的领域数据对象建立该数据对象的版本变化记录;

(4)系统还将用户提供的或者互联网上的文本数据进行分析,构建一个巨大的数据对象分析库;当新的数据输入到数据对象分析库后,将触发读取相关联数据对象的版本信息,然后通过分析数据对象与关联数据对象版本之间的关系,计算出当前数据对象为新的领域数据的概率,并自动或者用户手动对新的领域数据进行修改,并加入对应的领域数据库中。

一种可扩展的多类型领域数据协调管理的数据库管理方法,实现步骤如下:

(1)对用户提供的文本数据文件进行预处理,去掉包括停词、语气词以及标点符号在内的非核心领域数据,获得预处理文本数据;

(2)将步骤(1)中输出的预处理数据输入到LDA概率模型中,与已建立数据模型进行匹配,获得其中的领域相关数据对象;

(3)将步骤(2)中输出的领域相关数据对象进行后缀树的构建,并融合已有的后缀树,对合并的后缀树进行逐步遍历,获得高频度的字符串,然后初始化一个领域相关数据对象;

(4)将步骤(3)获得的领域相关数据对象输入到数据资源本体库进行类型、关系判断和匹配,获得与该领域相关数据对象的类型,即层次型、网络型还是用户自定义类型,以及与该数据对象关联的其他领域数据对象;

(5)将步骤(4)输出的领域相关数据对象及其关联数据输入到对应类型的领域数据库,建立数据变更日志记录,并将该领域相关数据对象输入双编码算法中,获得对应的索引数偶;

(6)将步骤(5)获得的数偶与数据对象以及相关领域数据对象进行业务组合,最终输出含有领域相关性、多种关系、多属性的领域数据对象。

本发明与现有技术相比的优点在于:

(1)本发明基于块存储、堆管理以及多日志组的存储技术,保证底层存储的高效、安全;

(2)基于可扩展的设计方法,通过自定义数据关系,在数据资源本体库之上可以扩展出多个子领域的领域数据库;

(3)本发明实现对大量文本数据自动探测、分析和提取功能,将获取的数据对象在最新版本数据资源本体库的基础上演化新领域数据。

附图说明

图1为本发明系统的组成框图;

图2为本发明数据资源本体库模块概念关系示意图;

图3为本发明数据资源本体库模块三元组基本数据模型示意图;

图4为本发明数据资源本体库索引示意图;

图5为本发明数据资源本体库模块访问过程示意图;

图6为本发明数据资源本体库定义新字段名流程示意图;

图7为本发明数据资源本体库插入新关系流程示意图;

图8为本发明数据资源本体库检索数据对象过程示意图;

图9为本发明网络型数据库基本结构与关系示意图;

图10为本发明层次型领域数据库基本结构与关系示意图;

图11为本发明层次型数据领域库查询流程示意图;

图12为本发明层次型领域数据库新建领域数据对象流程示意图;

图13为本发明领域数据演化模块LDA模型表示图;

图14为本发明领域数据演化版本控制结构示意图。

具体实施方式

本发明通过高效的数据存储组织方法,实现数据对象、关系的有效存储、查询。并且可以通过用户提供的大量数据发现新的数据对象和领域数据;实现了数据资源本体库、网络型领域数据库、层次型领域数据库,并且可以进行领域数据库的扩展。

本发明包括数据资源本体库模块、层次型领域数据库模块、网络型领域数据库模块和领域数据演化模块,其中数据资源本体库模块、层次型领域数据库模块和网络型领域数据库模块共同组成数据库集,提供进行信息抽取和数据对象的检索,建立领域数据库系统所需的各种相关数据对象库,为多类型领域数据协调管理提供数据存储与访问基础支撑能力;领域数据演化模块追踪和控制领域数据的变化,实现领域数据库本身的演化和领域数据版本管理。

1、数据资源本体库模块

属性的定义:一个事物的性质与关系,称为这个事物的属性。某类事物的特有属性,是从具体事物中抽象出来的,比如人的语音、思维是特有属性。某类事物的偶然属性,是某类的有些事物具有、但不是所有事物都具有属性,比如人的肤色、民族都是偶然属性。

概念的定义:概念是反映事物的特有属性(固有属性或者本质属性)的思维形态。概念具有抽象性、普遍性。概念有真假之分,真实的概念是正确反映事物的特有属性的概念。概念的内涵是概念所反映的事物的特有属性。概念的外延,是具有概念所反映的特有属性的事物。一般用“is-a”关系来表示某个概念模型是某个概念模型的外延。关系是概念的一个外延。角色也是概念的一个外延。概念要求是明确的,即要求从内涵和外延两个方面去明确一个概念。根据概念的外延是一个事物还是多个事物,概念可以分为单独概念和普遍概念。单独概念的外延是一个独一无二的事物,比如具体的时间和具体的空间。而普遍概念的外延,可以包含许多的事物。比如“城市”、“商品”这样的概念。“城市”包含很多个具体城市,“商品”也是大量实体商品的概念集合。“is”和“is-a”都是一种独一无二的概念。概念还可以分为集合概念和非集合概念。集合概念是反映集合体的概念。非集合概念是不反映集合体的概念。概念还可以分为正概念和负概念。正概念是反映具有某种属性的事物的概念。负概念是反映不具有某种属性的事物的概念。概念还分为相对概念和绝对概念。相对概念是反映具有某种关系的事物的概念。绝对概念是反映具有某种性质的事物的概念。

概念之间的关系有以下4种基本关系,如图2所示:

(1)全同关系:如果所有的a都是b,同时,b都是a,那么a和b就有全同关系。两个概念具有全同关系,那么这两个概念的外延是同一的。

(2)隶属关系:如果所有b都是a,但是有a不属于b,那么a与b是上属关系,b与a的关系是下属关系。

(3)交叉关系:如果有的a是b,而且,有的a不是b,而且,有的b又不是a,那么,a与b是交叉关系。

(4)全异关系:所有的a都不是b,那么a与b是全异关系。

“Concept A-Relation-Concept B”这种三元组的基本数据模型是领域数据库的基础,即是基础的逻辑结构,也是基础的物理存储结构(图3)。“概念”是领域数据库中的基本元素,它表达了人们对事物的认知,是反映事物的特有属性的思维形态。概念既可以是一种真实存在的物体,也可能是一种人类的想象或设计,即可以是一种属性,也可能是一种活动。该三元组表达的逻辑意思是“概念A”与“概念B”之间是这个“关系(Relation)”,“概念A”在这三元组中,是拥有者的身份,“概念B”在这个三元组中是参与者的身份。“概念A”和“概念B”还可以拥有或参与其它关系。从而通过关系在n个概念中建立一个非常复杂的网状结构,这个结构复杂程度由用户或实际运行环境决定。“概念”根据抽象层次可分为“类”(Class)和“个体”(Individual)。“关系”用来在概念之间建立联系,可分为“类间关系”、“类与个体关系”和“个体间关系”。在数据模型设计中,把“关系”都统一看成为一种“概念”,因此,领域数据库中一切都是“概念”,每个“概念”都有一个唯一的标识。所有领域数据均可采用这种概念-关系-概念的方式来表达,如果某个领域的数据构成很复杂,那么领域数据表的这种结构,很可能是一个非常复杂的网状结构,但是脉络却很清晰。世界上很多领域数据直接或间接的都会有一定联系,通过领域数据和关系这种表达结构,可以很容易找到关联的数据,与关系数据结构不同,这里的概念关系这种结构,几乎能够容纳所有的关系和数据,能够随意修改和创建新的关系和数据,而不像关系数据库,从数据库设计完成以后,数据与数据之间的关系就不再被改变,从这一点上看,概念关系这种数据组成方式,在进行模型搜索或数据挖掘的时候,占有无可比拟的优势。

1.1数据资源本体库结构描述

在数据资源本体库中,库里面存放的本体数据具有概念明确、词形简练、单义性等特点。一个本体只表述一个概念,而且是以名词和名词性词组为主。有些数据对象有着特定的关系,例如同义关系、反义关系和隶属关系。首先设计一个底层数据库,里面是无扩展属性和关系的数据对象。底层数据库为实现同义、反义和隶属三种关系提供服务。另一个重要部分是内存索引,其结构有对象Hash值、磁盘块地址;对象Hash值是唯一的数字,假设两个数据对象发生冲突,即Hash值相等,则它们存到磁盘相同的块中,这样一个块就可存放多条记录。

磁盘文件:将指定大小的磁盘空间划分为一个块;一个块存放多条记录,如果记录多出块的上限,则通过指针指向下一块。通过程序把源数据对象文件通过映射,写入二进制数据文件。在数据文件中,是以数据块为单位,一个数据块中存储的是Hash值相同,即发生Hash冲突的数据对象。这个数据块中存储的是数据对象的多个属性字段。如果有需要,可以添加其他字段,比如为同义数据库添加它的同义数据对象的地址字段。要查找某个数据对象时,就利用Hash函数计算其Hash值,根据映射关系,就可以直接找到数据对象的相对物理块号,然后交给数据库管理器和对象管理器进行数据读取与解封。该方法中间设置有数据库快速缓冲区,避免了将大量数据对象调入内存,节省存储空间,存取效率很高。

独立数据对象:即数据对象跟其他数据对象没有任何关系,查询时只返回词该数据对象,没有展示其他的关系。这个部分直接利用底层数据库,而底层数据库没有实现数据对象之间的关系。领域数据存储逻辑结构包括(结构如图4所示):

(1)索引:数据对象通过哈希函数计算得到的一个值,用来定位数据对象地址。

(2)块地址:存放数据对象的块的相对物理地址。

(3)数据对象记录:数据对象本身。

带关系数据对象:这个关系包括同义关系、反义关系和隶属关系。这些关系在底层数据库的基础上,利用其提供的数据对象的地址来实现。

数据对象关系实现如下:在底层数据库的基础上,分别建立索引表文件和记录集文件。索引表文件和记录集文件在物理存储结构上分别被划分成特定大小的连续的块,此处将一块简称为一条记录,每条记录对应唯一的编号(即首记录编号为0,第二条记录编号为1,以此类推)。在索引表文件中,索引记录包含有正关联组编号、逆关联组编号、下级数据对象组编号、上级数据对象相对物理地址(这些编号都是指在记录集文件中的编号)。在记录集文件中,每条记录都有两个标识来记录本记录的前一条记录编号和后续记录编号,同时可存储一定数量的数据对象相对物理地址,当一条记录空间用完时,可根据需要再分配其后续记录。当要给某数据对象添加正关联(逆关联/下级关联)数据对象时,首先用Hash函数处理数据对象,产生唯一的数据对象相对物理地址,然后在索引表文件中给该数据对象分配一个索引记录,根据数据对象地址在数据块管理层特定位置记录该数据对象的索引记录编号。接着,在记录集文件分配一条记录,该记录专用于保存本数据对象的同义词正关联地址(逆关联/下级关联)数据对象相对物理地址,然后将新分配记录编号写入本数据对象的索引记录词中。之后,在记录集文件中的对应记录中添加同义词正关联地址(反义逆关联/下级关联)数据对象相对物理地址。若是添加下级词关联数据对象,则需要在下级词关联数据对象的索引词记录中设置其上级词关联数据对象的相对物理地址。当执行删除正关联、逆关联、下级关联等操作完后,要对相应的记录集文件记录、相应的索引记录进行检查,若相应记录内容为空或是索引记录内容为空,则记录它们的编号,并解除它们与相应数据对象之间的关系,这样空闲磁盘空间可回收利用,极大提高磁盘空间的利用率。

1.2定义数据库

设立本模块的目的主要是为了便于数据对象库的管理和扩展。只有定义某字段名后,数据对象库中的数据对象方可添加该字段以及其字段值;若修改某字段名,则库中拥有该字段的数据对象将会自动将该字段名修改为新的字段名,但对应字段值不变;若删除库中已经定义的某字段名,则数据库中拥有该字段的所有数据对象将自动删除该字段以及其字段值。同理,定义某关系名后,数据库中的数据对象方可建立该关系;若修改某关系名,则数据库中拥有该关系的数据对象之间将会自动将该关系修改为新的关系;若删除数据库已经定义的某关系名,则数据库中拥有该关系的所有数据对象之间将自动解除该关系。对于数据库已定义的默认字段名和关系名是不能进行修改和删除等操作,对于用户自定义的字段名和关系名,用户可进行添加、修改、删除等操作。图5显示了数据资源本体库抽象架构以及访问过程。以定义字段名为例,

图6是定义字段名的执行流程。步骤如下:

(1)客户端接口服务组件向服务器伺候服务组件发出定义字段名的请求。

(2)服务端调用领域数据库管理器的方法定义字段名。数据库管理器调用数据库存取对象检查是否已经定义字段名。数据库存取对象返回检查结果。若数据库库已经定义字段名,则向服务端返回整数0。服务端向客户端返回操作结果0,则过程结束。

(3)数据库库管理器向数据库存取对象发出读取记录日志中旧检查点(记录日志有效段末尾位置)的请求。

(4)数据库存取器返回旧检查点,赋值给startPos。数据库管理器向抽象数据访问对象发出读取当前数据库有效备份版本号的请求。数据库存取对象返回请求结果,数据库管理器将返回结果赋给变量version。复制数据库注册表,简称新注册表。

(5)若新注册表中记录的字段名为空,则直接将字段名添加到新注册表,字段名编码为1;否则:读取新注册表中当前最大字段名编码。在新注册表中若存在空闲字段名编码i小于当前最大字段名编,则将该编码分配给新增的字段名;否则当前最大字段名编码自动加1。将当前最大字段名编码分配给新增的字段名。重新设置当前最大字段名编码。

(6)将注册表中当前最大字段名编码设置为1。创建一条日志记录对象。为日志对象各个变量标识赋值,包括它所装载的数据和所要执行的动作,然后将日志记录写入记录日志文件。

(7)返回日志文件中新的有效检查点(简称新检查点)。将新检查点写入日志文件头部。将日志文件中新写入的日志记录内容写入数据文件(简称提交)。

(8)返回提交结果,若提交发生错误或者失败,数据库管理器向服务端返回操作结果-1,结束过程。若提交成功则:检查日志文件的大小,若超过一定大小,将重置日志文件。数据库管理器向服务端返回操作结果1。服务端向客户端返回请求操作结果1,定义字段名成功。

1.3管理数据对象信息

主要负责对数据对象信息进行管理,提供增加、删除、修改数据对象信息等功能。当销毁某个数据对象时,将该数据对象的全部信息(包括该数据对象所拥有的字段以及它与其它词的关系)从数据库中彻底删除。要往数据库中添加某个数据库有三种途径:一是直接添加某数据对象,不附带其任何信息;二是在为某数据对象新增某字段时,若数据库还未存在该数据对象,则数据库将自动添加该数据对象,然后再为其添加新增字段信息;三是在为两个数据对象建立某个关系时,若其中一个数据对象或两个数据对象不存在于数据库中,则系统自动先将数据库中不存在的数据对象添加到库中,然后再为它们建立相应的关系。在为数据对象新增或修改字段时,该字段名必须是数据库已经定义的字段名;同理,在为两个数据对象建立关系时,关系名也必须是数据库已经定义的关系名。与此同时,可通过本模块对数据对象的频率词频进行设置,可将数据库文件进行导入和导出。下面以插入数据对象字段为例简介相关操作流程,图7是插入数据对象字段的顺序图。顺序图对应步骤如下:

(1)用户服务接口向服务端发出给关键词添加字段,字段值为content。

(2)服务端调用词库管理器的方法为数据对象添加字段以及字段内容。

(3)数据库管理器调用双编码器计算关键词的双编码。

(4)双编码器返回关键词双编码对象key(简称索引键);若返回结果为空,则转向步骤5;否则转向步骤7。

(5)对关键词计算双编码失败,数据对象管理器向服务端返回操作结果-1。

(6)服务端向客户端返回操作结果-1,宣告请求操作失败,转到步骤40。

(7)数据对象管理器向抽象数据访问对象发出获取注册表中字段名的编码请求。

(8)数据库存取对象返回对应字段名的编码,若返回值不为空值(即字段名已经定义)。则转到步骤11。

(9)数据库管理器向服务端返回操作结果0,宣告数据库未定义字段名fieldName,不能为关键词插入该字段以及其内容(字段值)。

(10)服务端向客户端返回操作结果0,宣告词库未定义字段名fieldName,请求操作失败。

(11)数据库管理器向数据库存取对象发出获取索引表中索引键key的索引值。

(12)数据库存取对象返回索引键key所映射的索引值value,若value为空,说明数据库不存在关键词,转到步骤13;否则转到步骤16。

(13)向数据库添加关键词,返回添加结果(整数);若添加失败,转到步骤6,否则转到步骤14。

(14)再次向数据汇库存取对象发出获取索引表中索引键key的索引值。

(15)数据库存取对象返回索引键key的索引值value。

(16)数据库管理器向数据库存取对象发出读取记录日志中旧检查点(记录日志有效段末尾位置)的请求。

(17)数据库存取对象返回旧检查点,数据库管理器将返回结果赋值给变量startPos。

(18)数据库管理器向抽象数据访问对象发出读取当前数据库有效备份版本号的请求。

(19)数据库存取对象返回读取结果,数据库管理器将返回结果赋值给变量version。

(20)复制数据库注册表,称之为新注册表。

(21)数据库管理器向数据库存取对象发出读取关键词的字节数据信息。

(22)数据库存取对象返回关键词的字节数据信息和磁盘地址集的载体(称为数据车)。

(23)数据库管理器向数据加工工厂发出对关键词的字节数据进行加工,转化成可视信息对象的请求。

(24)数据加工工厂向数据库管理器返回关键词内容载体,数据库管理器检查关键词内容载体;若已经存在所要添加的字段名以及其对应字段值,则转到步骤25,否则转到步骤27。

(25)数据库管理器向服务端返回操作结果2,表示所要添加的内容已经存在。

(26)服务端向客户端返回操作结果2,表示所要添加的内容已经存在。

(27)将fieldName和content添加到关键词内容载体中。

(28)数据库管理器向数据加工工厂发出对关键词的数据进行加工,转化成字节数据。

(29)数据加工工厂向数据库管理器返回关键词内容的字节数据,数据库管理器将返回的字节数据装进数据车。

(30)根据数据车的数据和新注册表的信息重新分配所需磁盘块的地址,修改新注册表的信息。

(31)创建新的日志记录对象,并将数据车、新注册表和所要执行的动作装载到日志记录对象中。

(32)数据库管理器向数据库存取对象发出向日志记录文件中写入新建的日志记录对象的请求。

(33)数据库存取对象向数据库管理器返回日志文件新的有效检查点(简称新检查点)。

(34)数据管理器向数据库存取对象发出将新检查点写入日志文件头部的请求,数据库存取对象响应请求。

(35)数据库管理器向数据库存取对象发出将日志文件中新写入的日志记录内容写入数据文件(简称提交)。

(36)数据库存取对象返回提交结果,若提交成功,则转到步骤38,否则转到步骤37。

(37)若提交失败或以上各步骤抛出异常,则转向步骤6。

(38)数据库管理器向服务端返回操作结果1。

(39)服务端向客户端返回请求操作结果1,插入字段成功。

(40)结束。

1.4检索数据对象信息

检索功能如下:

(1)检查数据对象存在性:检查数据库中是否存在某数据对象;

(2)检索数据对象的数据包:检索数据对象的所有可视化的数据信息(字段、字段值、关系、关系词),并封装成数据包,用于网络或其它形式传输;

(3)检索数据对象字段值:检索数据对象某字段的字段值(字段内容);

(4)检索数据关系词:检索数据对象某关系的所有关系词;

(5)按字段名检索:分为按单字段检索和按双字段组合检索。按单字段检索是指检索出拥有某一字段的所有数据对象的数据包;按双字段组合检索是指检索出同时拥有某两个字段的所有数据对象的数据包;

(6)按关系名检索:检索出存在某种关系的所有数据对象的数据包;

(7)向后匹配检索:检索出以某关键词为首的所有数据对象的数据包;

(8)模糊匹配检索:检索出含某关键词的所有数据对象的数据包;

(9)检索高频词:按频率从高到低检索出指定数量的数据对象或数据对象数据包;

(10)检索低频词:检索出词频低于某频数的所有数据对象;

(11)检索频率词频:检索某一数据对象的频率(被检索的次数);

(12)检索数据库已定义的所有字段名;

(13)检索数据库已定义的所有关系名。

图8展示检索数据对象数据包的顺序图。顺序图简介:

(1)客户端向服务端发出检索关键词的数据对象的数据包的请求。

(2)服务端调用数据库检索器的方法检索数据对象数据包。

(3)数据库管理器调用双编码器计算关键词的双编码。

(4)双编码器返回关键词双编码对象key(简称索引键)。

(5)数据库检索器向数据库存取对象发出获取索引表中key对应的索引值的请求。

(6)数据库存取对象向数据库检索器返回key所映射的索引值value,若value为空值,说明数据库不存在关键词,转到步骤7;否则转到步骤9。

(7)数据库检索器向服务端返回检索结果null。

(8)服务端向客户端返回检索结果null,转到步骤14。

(9)将关键词的频率进行加1,然后数据库检索器向数据库存取对象发出更新数据库索引表中关键词词频的请求,数据库存取对象自动响应请求。

(10)数据库检索器向数据库存取对象发出更新数据文件中关键词频率的请求,数据库存取对象自动响应请求。

(11)数据库检索器根据关键词在磁盘的首地址调用自身的方法检索关键词的数据包。

(12)数据库检索器向服务端返回关键词的数据包。

(13)服务端向客户端返回关键词的数据包。

(14)结束。

2、网络型领域数据库模块:

2.1基本原理

每个网络型领域数据汇存储分为索引部分和属性部分,索引部分存储到name.dct文件中,属性部分存储到attr.dct文件中。网络型数据的名称索引部分是在插入数据对象的时候动态生成的无限制B树。

在索引文件中使用了指针操作,所以定义N个指针,它们分别对应于GB2312-80编码中的N个常用汉字。指针指向以该字为首字的名字所在的B树的树根。以同一个字为首字的所有名字都存放在同一个B树中。

在检索时,可以使用名称作为关键字对网络型数据进行检索,关键字是通过Hash函数,利用名称的GB2312-80编码计算得到的。检索时先找到B树,再用B树检索算法找到姓名。索引文件中的名称与属性文件中的属性是一一对应的,即在索引文件中找到了数据对象的摘要信息则在属性文件中必然存在该网络型数据对象的属性。在索引文件中以摘要信息作为关键字(key)进行查找,以摘要信息对应的网络型数据属性在属性文件中的位置为查找结果。当在索引文件中查找到摘要信息时,可以根据摘要信息前对应的属性索引直接从属性文件中直接读取相关属性。因此对属性文件的操作是非常快的,时间主要耗费在索引文件的查找上。在索引文件中,摘要信息的存储和查找使用了Hash算法和B树算法,该算法基于硬盘的检索,同时寻址操作是按照指针直接寻找的,因此算法效率较高。

2.2索引存储结构

在索引文件中,网络型数据的摘要信息的存储和查找使用了Hash算法和B树算法。在这里把摘要信息的第一个字符称为“首字”,去除首字的其余部分称为“后缀”。首先在索引文件中建立一个有N个表项的区位表,每个表项由单个字符与其GB2312-80值构成。每个表项中的字符只要通过Hash函数计算出其关键值即可得到其在区位表中的地址。表项中还存放指向B树树根的指针。该B树用来存储摘要信息的后缀。

在存储网络型数据的名称时,先根据摘要信息首字在区位表中找到该字对应的B树,然后将其后缀插入到B树中。摘要信息的查找过程与存储类似,先根据摘要信息的首字在区位表中找到与其对应的B树,在B树中查找摘要信息的后缀。

B树的结构:B树用来存储摘要信息的后缀,后缀在B树中作为关键字进行存储。为了减少磁盘读取次数,根据实际需要使用了n阶B树。B树中每个节点都包含下列信息:

(n,C0,A1,K1,C1,A2,K2,C2,…,An,Kn,Cn,Father)

其中n为节点中关键字的个数;Ki(i=1,…..,n)为关键字(摘要信息的后缀),且Ki<Ki+1(i=1,…..,n);Ci(i=1,…..,n)为指向子树根节点的指针,且指针Ci-1所指子树中的关键字均小于Ki(i=1,…..,n),Cn所指子树中所有节点的关键字均大于Kn;Ai(i=1,…..,n)为属性文件的指针,该指针指向以节点所在B树对应的字符为首字、以Ki为后缀的摘要信息属性在属性文件中的位置;Father为指向双亲节点的指针。

当要查找一个数据对象时,先根据其给定摘要信息的首字通过Hash计算得到该字在区位表中的表项地址,然后读取表项的内容找到该字对应的B树树根地址,然后在B树中查找摘要信息的后缀。查找一次使用的时间为一次Hash计算的时间加上B树查找的时间,因此该检索算法效率比较高。使用内存映射技术,不需要将索引文件读入内存,只需将使用到的节点读入内存即可,大大减少了磁盘读取时间,提高内存利用率。

2.3网络型数据的属性存储结构

网络型数据对象的属性中除了名称以外其它都保存在属性文件中,属性分为两部分,一部分是数据库设计时即存在的属性,称为基本属性,保存在基本属性文件中;另一部分是用户自定义属性,称为扩展属性,保存在扩展属性文件中。网络型数据对象基本属性是以属性块的形式进行存放,一个数据对象的属性存储在一个属性块中,数据对象的基本属性块根据数据对象的插入顺序依次存放在基本属性文件中。数据对象扩展属性以链表的形式保存。属性文件的存储结构如图9所示。基本属性块由数据对象的基本属性块、指针a、指针b等构成。在基本属性块中指针a指向同名属性块,指针b指向扩展属性文件中数据对象的扩展属性首地址。

查找网络型数据对象属性时,先用数据对象的名称在索引文件中查找,在找到数据对象的名称的同时,可以在存储名称的节点中找到数据对象属性块在属性文件中的位置指针,根据该指针直接到属性文件的相应地址读取基本属性,然后根据属性块中的相关指针再到扩展属性文件中读取扩展属性。因此在属性文件中的检索效率非常高。

3、层次型领域数据库模块:

3.1基本原理

根据层次型数据之间的关系特点可以知道,层次型数据之间主要有隶属、相邻、交叉、同指四种关系,其中隶属关系是主要关系,一个层次型数据对象可能既有上级,也有可能有下级,这里规定每个层次型数据对象直接对上一级负责,或领导下一级,如此设计是出于层次型数据中存在很多基本主属性完全相等的考虑。

对于每个层次型数据对象,可以将其作为数据库的关键字来唯一标识该数据对象。关键字是通过基于双编码的Hash函数计算得到数偶对,作为该数据对象的逻辑地址。即每个数据对象的关键字与其在磁盘上的存储地址是一一对应的,要查找某一个数据对象,只要通过Hash函数计算出其关键值就相当于得到了该数据对象的逻辑地址,然后将数据存取任务交给对象管理器和日志管理器完成。这种方法避免了搜索匹配,时间耗费主要是在Hash值的计算上,而且不用将全部数据块调入到内存中,只要将所需要的数据对象读入内存即可,无论在算法的执行效率,还是在内存空间的利用率上,都是可行的。同时由于寻址是按照指针直接查找的,数据对象的检索效率极高。

3.2索引文件的结构

索引文件结构体主要包含以下各域,其作用说明如下:

·Key即为通过Hash计算得到的关键值,这个关键值对于每个数据对象来说都是唯一的;

·Father/Son域表示隶属关系,Father表示上一级层次型数据对象的Key,Son表示下一级层次型数据对象的Key;

·Neighbour域表示相邻关系,neighbour表示关系结构上相邻的层次型数据对象的Key,该域可能不止一个Key;

·Cross域表示交叉关系,cross表示关系结构上有交叉关系的层次型数据对象的Key,同样该域也可能不止一个Key;

·Co-ref域表示同指关系,co-ref表示在语义理解上都是指同一个域内的层次型数据对象,该域也可能不止一个Key;

·0/1域表示该层次型数据对象可能会有重名现象,即名字相同,但却是两个完全不同的意义。如果设置为0表示没有重名,为1则表示有重名,后面紧跟着的Fathers域则记载着所有包含该数据对象的上一级数据对象;

·Fathers域记载着有重名现象时所有包含该层次型数据对象的上一级数据对象,所以该域也可能不止一个Key。如果没有重名则为NULL。

以上每个域都占四个字节。

3.3数据文件的结构

数据文件是存放层次型数据对象本身的文件,它与索引文件的结合才能实现对数据对象的存取操作。数据文件是数据逻辑上的数据对象线性表,线性表中的表项——数据条目通过指针建立与结构体中各域之间的联系,如图10所示。其中Wi、Wj分别是一个层次型数据对象的条目,Father,Son,Neighbour,Cross,Co-ref,Fathers域的指针分别指向该数据对象条目的上一级数据对象、下一级数据对象、相邻数据对象、交叉数据对象、同指数据对象,及其当有基本属性完全相等时,该数据对象的所有上一级数据对象。通过上一级数据对象可以区别出这两个数据对象。

当需要查找某个数据对象时,只要通过Hash计算得到该数据对象的地址,并将其调入到内存中就可以很轻易地构建该数据对象与其他相关数据对象的组织结构。而且无需检索匹配等过程,整个检索的时间主要耗费在Hash计算上,算法时间效率极高,Hash的装填因子在0.8以上。

图11、图12显示了层次型领域数据库的相关业务算法过程。

4、领域数据演化模块:

4.1基于LDA的信息抽取

领域数据演化的首要步骤是对大量有价值的文本信息进行分析处理。本系统采用基于LDA(Latent Dirichlet Allocation)概率生成模型的文本聚类挖掘技术,它通过将文本集中相似的文本自动聚集成不同的类别,帮助发现相关领域数据。文本用向量空间模型来表示,文本表示矩阵通常具有很高的维数,在聚类过程中往往会因“维灾”而导致相似性度量失去意义。通过LDA主题模型具有很好的文本表示能力,能够挖掘文本的潜在语义信息,得到文档在主题空间的表示,降低文档表示的维度。通过对文本的建模,可以对文本进行特征选择、主题分类、判断相似度等。LDA模型采用了词袋的方法,该方法将每一篇文本数据资源视为一个词频向量,从而将文本信息转化为易于建模的数字信息。

LDA模型的三层贝叶斯模型表示如图13所示。Φk表示主题K中的词项概率分布,θm表示第m篇文档的主题概率分布,Φk、θm又作为多项式分布的参数分别用于生成主题和单词。K代表主题数目,M代表文档数目,Nm表示第m篇文档的文档长度,ωm,n和Zm,n分别表示第m篇文档中第n个单词及其主题。α和β是Dirichlet分布的参数,通常是固定值且对称分布,因此用标量表示。Φk、θm均服从Dirichlet分布,该分布函数如下式所示:

>Dir(μ|α)=Γ(α0)Γ(α1)...Γ(αk)Πk=1Kμkαk-1>   (公式一)

其中,0≤μk≤1,Γ是伽马函数。LDA的生成过程如下所示。

(a)对于主题采样

(b)对于语料中第m个文档,m∈[1,M];

(c)采样主题概率分布θm~Dir(α);

(d)采用文档长度Nm~Poiss(ξ);

(e)对于文档m中的第n个单词,n∈[1,Nm];

(f)选择隐含主题zm,n~Mult(θm);

(g)生成单词

LDA的参数估计,首先计算单词序列下主题序列的条件概率,公式如下:

>p(z|w)=p(w,z)Σzp(w,z)>   (公式二)

然后对主题序列进行Gibbs采样,采样公式如下:

>p(zi=k|z...i,w)nk,...,i(t)+βt[Συ=1Vnk(υ)+βυ]-1·nm,...,i(k)+αk[Σz=1Knm(z)+αz]-1>     (公式三)

获得每个单词ω的主题z的标号,最终的参数计算公式表示如下:

   (公式四)

>θm,k=nm(k)+αkΣz=1Knm(z)+αk>

已经训练好的模型M,任给新文档其中每个单词的隐含主题采样公式如下:

>p(z~t=k|ω~i=t,z~i,ω~i;M)=nk(t)+nk,i(t)+βtΣυ=1Vnk(υ)+n~k,i(υ)+βυ·nm~,i(k)+αk[Σz=1Knm~(z)+αz]-1>    (公式五)

其中,代表新文档对应的主题向量。

通过上述的Gibbs采样方法,得到每个单词的主题标号,使用公式六,计算出该文档在各个主题分量上的值后,一项此项空间的文档就获得了在主题空间中的表示。

>θm~,k=nm~(k)+αkΣz=1Knm~(z)+αz>    (公式六)

经过以上步骤之后,可以进行聚类过程。利用LDA选出一定比例的特征之后,选用K-means算法对文本进行聚类。文本聚类流程如下:

(1)对原始文本进行预处理,包括分词、去除停用词;

(2)用LDA模型进行特征选择;

(3)对选出的特征,统计每个特征在每篇文本中的权重,特征在文本中的权重W(d,w)的计算公式如下:

>W(d,w)=log(tf(d,w)+1)×log((M+1)/(df(w)+0.5))Σlog(tf(d,w)+1)×log((M+1)/(df(w)+0.5))>     (公式七)

其中,M为总体文本数目,tf(d,w)为词元w在文本d中出现的次数,df(w)为词元w的文本频数。得到文本的表示之后,便可生成一个向量空间模型。

(4)随机选取初始点,利用K-means算法得到最终聚类结果。其中K-means聚类算法需要对文本之间的距离进行度量,采用余弦相似度来计算。对于两个文本d和d′,它们的相似度计算公式如下:

>sim(d,d)=Σwd,dW(d,w)×W(d,w)d×d>    (公式八)

4.2领域数据库版本控制

领域数据库版本控制模块引用版本控制的理论与方法来实现数据库的演化过程管理与控制。数据的每一次演化状态可视为一个版本,本模块提供了版本生成、版本恢复、版本删除等功能。具体而言,由于领域数据库的修改与演化等因素,领域数据库会随着时间的前进而不断演化,本模块的功能记录这一系列的演化过程。它一方面记录了具体领域数据的演化历程,让用户可以随时查看,并能恢复某个领域数据到过去的某个版本,另一方面用户也可以标记某个状态的数据库为一个版本,以便在未来的某个时刻使整个数据库恢复到此版本。在需要的时候,用户可以删除某个非关键版本。其结构如图14所示。

4.3新数据对象发现

新数据对象的发现需要用户提供大量的基础文本数据,系统通过上述基于LDA的分析模型来分析这些数据,构建一个巨大的数据对象分析库;当新的数据输入到数据对象分析库后,将触发读取相关联领域数据的版本信息,然后通过分析数据对象与关联领域数据版本之间的关系,计算出当前数据对象为新的领域数据的可能性,并自动的或者用户手动的对新的领域数据进行修改,并加入领域数据库中。数据对象分析库的核心结构是一个后缀树。该部分还有另外一个重要部分是目录监视模块,用于系统自动感知新数据的到达,进而自动进行演化处理,其处理方法如下:

(1)系统启动,检查配置文件以获取领域数据演化数据源目录。

(2)启动目录监视器(AutoDectector)监听数据源目录的状态变化。当有新的文件增加的时候,目录监视器会探测到该变化,然后检查其文件格式,如果为文本文件、PDF文件、HTML文件和Word文档中的一种,则对其进行读取分析。

(3)根据输入文件的类型不同,实现了不同的文件分析器:TxtAnalyzer、PdfAnalyzer、HtmlAnalyzer、WordAnalyzer。其中PdfAnalyzer和WordAnalyzer使用了开源工具Apache POI实现。通过文件分析器之后,得到文本或者文本流(当数据量巨大时候返回文本流)。

(4)对于获得的文本或文本流输入到分析库中,即插入到当前最新的后缀树中。在后缀树发生变化时候会触发对相关变化的词条的检查:词条的频率达到阈值t之后,则从数据资源本体库中查询与该词条相关的领域数据,并根据查询结果来确定是否构建新的基本领域数据。

(5)分析完毕文件之后,将该文件重命名为以“.analyzed”结尾的文件,以区分于未分析的文件。此后,检查数据源目录中的元数据文件,如果当前已分析文件数量容量或者大小达到了上限则删除最早分析的一些文件。

本发明说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号