首页> 中国专利> 一种文档库系统中文档数据的存储方法

一种文档库系统中文档数据的存储方法

摘要

本发明公开了一种文档库系统中文档数据的存储方法,包括:设置用于描述文档数据的树型层次结构;确定文档库系统中文档数据的存储粒度,并按照该存储粒度将文档库系统中的文档数据拆成碎片数据;按照设置的文档库系统的层次结构,确定并保存各碎片数据间的组织结构,并在相应组织结构下保存拆成的碎片数据。可以实现将文档库中的文档数据拆分成更细的碎片数据并保存。这样,当用户检索或访问文档数据时,可以快速、准确定位到存储粒度的级别,进行灵活高效地数据检索与内容抽取,对于基于网络的文档应用,降低了文档传输过程中的负担。

著录项

  • 公开/公告号CN101369268A

    专利类型发明专利

  • 公开/公告日2009-02-18

    原文格式PDF

  • 申请/专利权人 北京书生国际信息技术有限公司;

    申请/专利号CN200710120325.3

  • 发明设计人 王东临;姜海峰;刘宁胜;王立伟;

    申请日2007-08-15

  • 分类号G06F17/30(20060101);

  • 代理机构11018 北京德琦知识产权代理有限公司;

  • 代理人王琦;王诚华

  • 地址 100089 北京市海淀区紫竹院路81号北方地产大厦5层

  • 入库时间 2023-12-17 21:32:13

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-09-12

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

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

  • 2014-09-17

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

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

  • 2014-04-09

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

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

  • 2012-04-11

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

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

  • 2011-08-24

    授权

    授权

  • 2010-12-01

    专利申请权的转移 IPC(主分类):G06F17/30 变更前: 变更后:

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

  • 2009-04-15

    实质审查的生效

    实质审查的生效

  • 2009-02-18

    公开

    公开

查看全部

说明书

技术领域

本发明涉及文档存储的技术,特别涉及一种文档库系统中文档数据的存储方法。

背景技术

文档库系统是一种复杂的软件系统,提供大量电子文档的组织、管理、安全、存储和展示等功能。在本申请人在先提交的申请号为CN200510131072.0的基础专利申请说明书中,提供了一种文档库系统,该文档库系统可以存储符合通用文档模型的文档、并能对其中存储的文档按照指令进行标准操作。通用文档模型可以具体包括文档集、文档、页、层、对象组、版面对象等多个层次。

目前,在文档库系统中,对于文档数据的存储方式为:将所有的文档数据作为一个文件进行存储。对于数据的更新和查询均是通过访问文件实现的。但是,面临日益增加的信息量,文档库系统中保存的文档数据量也急剧增多。由于这些海量数据均作为一个文件进行存储,因此导致其数据的更新和查询变得非常复杂,不能迅速定位用户感兴趣的内容,使内容抽取效率较低。可见,目前的存储方式已不能适应日益增多的海量数据。要求文档库系统能够提供对海量文档数据有效的组织、管理、安全、展示、存储等诸多方面的功能。

发明内容

有鉴于此,本发明提供一种文档库系统中文档数据的存储方法,能够实现对文档内容进行灵活高效地检索与内容抽取。

为实现上述目的,本发明采用如下的技术方案:

一种文档库系统中文档数据的存储方法,包括:将文档数据拆成碎片数据,并记录所述碎片数据之间的关系。

较佳地,该方法进一步包括:利用树型层次结构描述文档数据;

所述将文档数据拆成碎片数据为:确定文档库系统中文档数据的存储粒度,并按照该存储粒度将文档库系统中的文档数据拆成碎片数据;

所述记录碎片数据之间的关系为:按照描述文档数据的树型层次结构,确定并保存各碎片数据间的组织结构,并在相应组织结构下保存拆成的碎片数据。

较佳地,所述确定文档库系统中文档数据的存储粒度为:根据文档库系统设置的存储粒度结合文档数据的结构信息确定文档数据的存储粒度;和/或,根据用户的选择,确定文档数据的存储粒度。

较佳地,所述文档库系统设置存储粒度为:为文档库系统设置固定的存储粒度;和/或,在对文档库系统进行参数配置时配置所述存储粒度;和/或,在安装文档库系统时指定存储粒度。

较佳地,所述根据存储粒度将文档库系统中的文档数据拆成碎片数据为:分别将文档数据中的存储粒度相关数据和存储粒度无关数据拆成碎片数据。

较佳地,所述将文档数据中的存储粒度相关数据拆成碎片数据的方式为:以所述存储粒度为单位对存储粒度相关数据进行分解,得到所述碎片数据。

较佳地,所述将文档数据中的存储粒度无关数据拆成碎片数据的方式为:确定所述存储粒度无关数据在所述树型结构层次中的对应级,将每一级下的存储粒度无关数据拆分成一个或多个碎片数据。

较佳地,按照存储粒度无关数据的类别或者对应的文件拆分成所述碎片数据。

较佳地,利用可扩展标识语言XML数据库的树型结构表示描述文档数据的树型层次结构;

所述保存各碎片数据间的组织结构为:

将该组织结构映射到XML数据库的树型结构中进行保存。

较佳地,所述保存拆成的碎片数据为:将碎片数据存储为XML数据库中的XML文档,利用XML数据库中的collection描述该XML文档的树型结构。

较佳地,利用文件系统的树型结构表示描述文档数据的树型层次结构;

所述保存各碎片数据间的组织结构为:

将该组织结构存储为所述文件系统中的目录。

较佳地,利用关系型数据库中的相关表表示描述文档数据的树型层次结构;

所述保存各碎片数据间的组织结构为:

将该组织结构存储为所述关系型数据库中的相关表。

较佳地,所述保存拆成的碎片数据为:

将拆成的各个碎片数据作为数据库的XML文档存储;

或者,将拆成的各个碎片数据作为文件系统的文件存储;

或者,将拆成的各个碎片数据作为关系型数据库的大对象存储。

较佳地,所述描述文档数据的树型层次结构为:

由根至叶子节点依次包括以下的一种或任意组合:文档集、文档、页、层、对象组和对象。

较佳地,所述存储粒度为所述树型层次结构的任意一级。

较佳地,为所有文档数据设置相同的存储粒度,或者,为文档数据的不同部分设置不同的存储粒度。

由上述技术方案可见,本发明提供的在文档库系统中存储文档的方法,首先设置文档库的树型层次结构;然后根据文档数据的存储粒度,将文档库中的文档数据拆成碎片数据;确定并保存碎片数据间的组织结构,并保存碎片数据。应用上述方法,可以实现将文档库中的文档数据拆分成更细的碎片数据并保存。这样,当用户检索或访问文档数据时,可以快速、准确定位到存储粒度的级别,进行灵活高效地数据检索与内容抽取,对于基于网络的文档应用,降低了文档传输过程中的负担。

另外,由于本发明进行文档存储时,可以将多种格式的文档进行统一保存,因此对于文档的互通互联带来了极大的便利。

附图说明

图1为本发明提供的文档库系统中文档数据存储方法的总体流程图。

具体实施方式

为使本发明的目的、技术手段和优点更加清楚明白,以下结合附图对本发明作进一步详细说明。

本发明提供的最基本的文档库系统中文档数据的存储方法为:将文档数据拆成碎片数据,并记录碎片数据之间的关系。具体地,图1为本发明提供的在文档库系统中文档数据存储方法的总体流程图。如图1所示,该方法包括:

步骤101,利用树型层次结构来描述文档数据。

步骤102,确定文档库系统中文档数据的存储粒度,并按照该存储粒度将文档库系统中的文档数据拆成碎片数据。

步骤103,按照步骤101中设置的文档库系统的层次结构,确定并保存拆成的碎片数据间的组织结构,并在相应组织结构下保存拆成的碎片数据。

在上述方法中文档库系统中文档数据的存储粒度是与文档库系统所支持的层次结构、以及文档数据本身的结构信息相关的。用于描述文档数据的层次结构是树型的,具体由根到叶子节点依次可以包括下述部分:文档集、文档、页、层、对象组和版面对象。文档数据本身的结构可以为:文档、页面、层等。当文档库系统的层次结构为“文档集、文档、页”时,此时,若文档数据本身也包括页,那么文档数据的存储粒度可以为页,若文档数据本身的结构只有一层,即文档,不能再拆成页,那么文档数据的存储粒度即为文档。但无论怎样,文档库系统中的文档数据本身结构至少支持文档级,文档库系统的层次结构至少为文档集级。因此,与现有技术中将文档库系统中的所有文档数据作为一个文件的存储方式相比,依照本发明的方式进行文档存储,其存储粒度一定更细,也就能够为更新、检索降低复杂性,进行文档数据的检索和内容抽取时,能够快速定位到存储粒度,从而实现灵活高效的检索和内容抽取。

具体地,在本发明提供的文档库系统中,文档库系统的层次结构可以通过三种形式表示:可扩展标识语言(XML)数据库方式、文件系统方式和关系型数据库方式。下面通过三个具体实施例说明上述三种方式的具体实施方式。

实施例一:

本实施例中,文档库系统应用XML数据库方式表示文档库系统的层次结构。在该种方式下,本发明提供的文档库系统中文档数据的存储方法流程包括:

步骤201,设置用于描述文档数据的树型层次结构。

本步骤中,设置的文档库系统层次结构由根到叶子节点依次可以包括下述部分:文档集、文档、页、层、对象组和版面对象。

表示上述文档库系统层次结构的方式可以为:

利用XML数据库的树型结构表示文档库的层次结构,且将文档库中文档级别以上的层次映射到XML数据库中的Collection级。

例如,对文档库设置文档集、文档、页面、层和版面对象,可以利用XML数据库的树型结构表示上述层次,即文档集中包括多个文档,文档中包括多个页面,页面中包括多个层,层中包括多个版面对象。

步骤202,确定文档库系统中文档数据的存储粒度,并根据该存储粒度,将文档库系统中的文档数据拆成碎片数据。

本实施例中,确定文档数据的存储粒度可以为:依据文档库系统设置的存储粒度结合文档数据本身提供的结构信息,确定存储粒度。其中,文档库系统设置存储粒度的方式可以为,为文档库系统设置固定的存储粒度、和/或在对文档库系统进行参数配置时配置所述存储粒度、和/或在安装文档库系统时指定存储粒度;文档数据本身提供的结构信息如文档中是否分页面,页面是否分层等。另外,确定文档数据的存储粒度还可以通过用户指定的方式进行。最终确定的存储粒度可以是该文档库系统树型结构层次中的任意一级,如页、层等,优选地,确定页为存储粒度。对于文档数据的不同部分,可以按照相同的存储粒度进行拆分,也可以为不同的文档数据设置不同的存储粒度。

将文档数据拆成碎片数据的具体方式可以为:对文档数据中的存储粒度相关数据,以确定的存储粒度为单位进行分解,得到碎片数据;进一步优选地,对于文档数据中的存储粒度无关数据,如文档库、文档集的元数据、角色数据、权限数据、导航数据、源文件数据和字库数据等,首先确定该数据在所述树型结构层次中的对应级,然后将每一级下的存储粒度无关数据拆分成一个或多个碎片数据,作为对应级中的一个或多个碎片数据。具体地,得到多个碎片数据时,可以按照存储粒度无关数据的类别进行拆分,例如将导航数据作为一个碎片数据、将权限数据作为一个碎片数据等。其中,具体将存储粒度无关数据作为一个碎片数据还是多个碎片数据根据实际应用确定。对于属于同一类别的存储粒度无关数据,也可以进一步根据其自身特性拆分成多个碎片数据。例如,当存储粒度为文档时,存储粒度相关数据则为该文档中的内容数据等,存储粒度无关数据则为文档共享的字库数据、源文件数据、导航数据等。对于字库数据和源文件数据等存储粒度无关数据,可以将不同文档的源文件数据和字库数据拆分成不同的碎片数据,而不将所有文档的源文件数据和字库数据作为一个碎片数据;但对于导航数据等存储粒度无关数据,则可以将所有文档的导航数据作为一个碎片数据。

步骤203,保存拆成的碎片数据间的组织结构。

在本实施例中,文档库系统的层次结构是利用XML数据库的树型结构表示的。在这种表示方式下,保存碎片数据间组织结构的方式具体为:将该组织结构映射到XML数据库的树型结构中,优选地,可以利用Collection保存该映射后的树型结构。

步骤204,保存拆成的碎片数据。

本步骤中,保存碎片数据的方式具体可以为:将碎片数据转换为XML文档加入到对应的Collection中。或者,还可以将碎片数据作为文件系统中的文件或关系型数据库中的二进制大对象保存到对应的Collection中。

至此,本实施例提供的文档库系统中文档数据的存储方法流程结束。在应用上述方法后,可利用XML数据库的管理功能来管理文档库系统中的文档数据,完成应用程序的请求,定位相应数据并返回给应用程序。

使用XML数据库方式最大的好处是抽取信息时可以获得最大的灵活性,通过XML数据库支持的X路径(XPath)及X查询(XQuery)等方式,应用程序可以方便地访问到文档对象、页面对象、层对象、层内对象(如图片、文字、电子印章等),理论上文档库的结构细化到哪一级,通过XML数据库方式就可以访问到那一级的对象。

另外,在文档库系统中还存在一些描述文档库、文档集层次结构的元数据、权限数据和全局性数据、角色数据等。在不同的文档、或同一文档的不同页面中可能会多次出现上述数据,依照上述存储方式进行文档数据存储时,这些数据会在包括它的不同碎片数据中被多次保存,这样,会降低存储空间的利用率。为提高存储空间的利用率,可以将这些数据进行单独保存,下面以保存全局性数据为例,说明一致性数据的保存方式:

步骤1,提取文档库系统的全局性数据进行单独保存。

本步骤中,对全局性数据进行单独保存的方式可以包括:为全局性数据建立对应的层次结构;在建立的层次结构下,以XML文档、文件或二进制大对象的形式保存全局性数据。

步骤2,在包括全局性数据的碎片数据中记录对全局性数据的引用。

应用上述方式进行全局性数据的保存后,即可以只对全局性数据保存一次,在其它碎片数据中不再记录单独保存的全局性数据,而是记录对该全局性数据的引用,从而大大提高了存储空间的利用率。对于其它诸如权限数据、元数据等一致性数据的保存方式和上述相同,这里就不再赘述。

在本实施例中,步骤1为全局性数据建立对应的层次结构可以为:将全局性数据对应XML数据库的树型结构中的某个层次,将全局性数据保存在该层次下。对于其它元数据、角色数据等也可以建立类似的与其对应的层次结构,并将相应的数据保存在该层次下。

实施例二:

本实施例中,文档库系统应用文件系统方式表示文档库系统的层次结构。在该种方式下,本发明提供的文档库系统中文档数据的存储方法流程包括:

步骤301,设置文档库系统的层次结构。

本步骤中,设置的文档库系统层次结构与实施例一中相同,这里就不再赘述。

表示文档库系统层次结构的方式可以为:利用文件系统的树型结构表示文档库系统的层次结构。

例如,对文档库系统设置文档集、文档、页面、层和层内对象,即可以文件系统的树型结构表示上述层次,即文档集中包括多个文档,文档中包括多个页面,页面中包括多个层,层中包括多个层内对象。可以利用下图表示文档库的层次结构:

-DosBase

 -DocList

  -Doc

   -Page

    -Object.sep

步骤302,确定文档库系统中文档数据的存储粒度,并根据该存储粒度,将文档库系统中的文档数据拆成碎片数据。

本步骤中,确定文档数据的存储粒度、以及将文档数据拆成碎片数据的方式与实施例一中的相同,这里就不再赘述。

步骤303,确定并保存拆成的碎片数据间的组织结构。

本步骤中,确定各个碎片数据间的组织结构,如,确定各个层数据所属的文档集、文档、页面等。并将该组织结构以文件系统中目录的形式进行记录。

假定存储文档Doc1中的文档数据时,该文档Doc1位于DocList1下,Doc1的文档结构为:包含3页,第一页包含3层,后两页包含一层。则在文档库中保存的组织结构如下所示:

步骤304,保存拆成的碎片数据。

本步骤中,保存拆成的碎片数据的方式具体可以为:将拆成的各个碎片数据转换为XML文档保存到对应的目录下;或者,还可以将碎片数据作为一个文件系统中的文件或关系型数据库中的二进制大对象保存到对应的目录下。例如,上述组织结构中相应的目录下。

至此,本实施例提供的文档库系统中文档数据的存储方法流程结束。

在应用上述方法完成文档存储后,在进行文档访问时,可以通过指定文档集名+文档名+页号+层号+...的方式,快速定位到需要访问的存储粒度对象(如层对象),获取数据并返回给应用程序。

在本实施例中,也可以对文档库、文档集的元数据、角色数据、权限数据和全局性数据进行单独保存以提高存储空间的利用率,其具体方式与实施例一中步骤1~2类似。区别在于,对应本实施例中表示文档库系统层次结构的方式,为上述数据建立对应的层次结构的方式具体为:在文件系统的目录中建立一个特殊的目录作为全局性数据对应的层次结构,在该目录下保存全局性数据。具体地,上述全局性数据等可以是以XML文档、文件或二进制大对象的形式保存的;其它包括上述全局性数据的碎片数据不需要再单独保存,而只是包括对相应数据的引用,从而大大提高了存储空间的利用率。

当然,本实施例是以层为存储粒度为例进行说明的,事实上,还可以建立更粗或更细的存储粒度对应的目录,以实现以更粗或更细的存储粒度对文档数据进行存储。

实施例三:

本实施例中,文档库系统应用关系型数据库方式表示文档库系统的层次结构。在该种方式下,本发明提供的文档库系统中文档数据的存储方法流程包括:

步骤401,设置用于描述文档数据的树型层次结构。

本步骤中,设置的描述文档数据的树型层次结构与实施例一中相同,这里就不再赘述。

表示树型层次结构的方式为:利用关系型数据库中的树型结构表示文档库系统的层次结构。

例如,对文档库系统设置目录、文档、页面三个层次,即可以关系型数据库中的3张表(目录表、文档表、页表)构建一个具有目录、文档、页面三级结构的虚拟目录系统,其中,目录表的定义如表1所示,文档表的定义如表2所示,页表的定义如表3所示。

 

字段名类型说明DirIDINT目录的唯一ID号DirNameCHAR目录的名称ParentIDINT父目录的ID(为0表示根目录)

表1

 

字段名类型说明DocIDINT文档的唯一ID号DocNameCHAR文档的名称

 

DirIDINT文档所在目录的ID

表2

 

字段名类型说明PageNoINT页号(0页代表全局性数据)DocIDCHAR页面所属文档的IDPageDataBLOB页面数据

表3

步骤402,确定文档库系统中文档数据的存储粒度,并根据该存储粒度,将文档库系统中的文档数据拆成碎片数据。

本实施例中,确定文档数据的存储粒度、以及将文档数据拆成碎片数据的方式与实施例一中的相同,这里就不再赘述。

步骤403,确定并保存拆成的碎片数据间的组织结构。

本步骤中,确定各个碎片数据间的组织结构,如,确定各个层数据所属的文档集、文档、页面等。并将该层次结构以关系型数据库中相关表的形式进行记录。

假定存储文档Doc1中的文档数据时,该文档Doc1位于DocList1下,Doc1包含3页,存储粒度为页面。则在文档库中保存的组织结构和具体的碎片数据可以通过下面表4~6的相关表的方式存储。

 

DirIDDirNameParentID1DocBase02DocList113DocList21

表4

 

DocIDDocNameDirID1Doc12

表5

 

PageNoDocIDPageData11Doc1第1页数据21Doc1第2页数据31Doc1第3页数据

表6

步骤404,保存拆成的碎片数据。

本步骤中,保存拆成的碎片数据的方式具体可以为:将拆成的各个碎片数据转换为XML文档保存到对应的相关表中;或者,还可以将碎片数据作为文件系统中的一个文件或关系型数据库中的二进制大对象保存到对应的相关表。

至此,本实施例提供的文档库系统中文档数据的存储方法流程结束。

在应用上述方法完成文档存储后,在进行文档访问时,可以通过指定文档集名+文档名+页号+层号+...的方式,快速定位到需要访问的存储粒度对象(如页对象),获取数据并返回给应用程序。

在本实施例中,也可以对文档库、文档集的元数据、角色数据、权限数据和全局性数据等进行单独保存以提高存储空间的利用率,其具体方式与实施例一中步骤1~2类似。区别在于,对应本实施例中表示文档库系统层次结构的方式,为全局性数据等建立对应的层次结构的方式具体为:在关系型数据库的相关表中建立一个特殊的项作为相应数据对应的层次结构,在该目录下保存数据。

在具体实现时,对步骤401中设置的层次结构定义进行修改,将其中的存储粒度表定义(即页表定义)修改为表7。

 

字段名类型说明PageNoINT页号(0页代表全局性数据)DocIDCHAR页面所属文档的IDPageDataBLOB页面数据

表7

在进行碎片数据存储后,形成的页面表即变为表8:

 

PageNoDocIDPageData01Doc1全局性数据11Doc1第1页数据21Doc1第2页数据31Doc1第3页数据

表8

可以看出,其中利用页号为0的页面对应的相关表表示全局性数据对应的层次结构。可以将一致性数据作为关系型数据库中的二进制大对象、文件系统中的文件或数据库中的XML文档保存在对应的相关表中。其它包括一致性数据的碎片数据不需要再单独保存一致性数据,而只是包括对一致性数据的引用,从而大大提高了存储空间的利用率。

当然,本实施例是以页面为存储粒度为例进行说明的,事实上,还可以建立更细的存储粒度对应的相关表,以实现以更细的存储粒度对文档进行存储。

通过上述本发明具体实施方式的描述,可以看出在本发明的方法中,首先设置文档库的层次结构;然后确定文档库系统中文档数据的存储粒度,并按照该存储粒度将文档库系统中的文档数据拆成碎片数据;确定并保存各碎片数据间的组织结构,并保存碎片数据。应用上述方法,可以实现将文档库系统中的文档数据拆分成更细的碎片数据并保存。这样,当用户检索或访问某文档时,可以快速、准确定位到最细存储粒度的级别,进行灵活高效地文档检索与内容抽取。对于基于网络的文档应用,可以只传输用户感兴趣的内容,降低了文档传输过程中的负担。

另外,由于本发明进行文档数据存储时,可以将多种格式的文档进行统一保存,因此对于文档的互通互联带来了极大的便利。

以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号