基于PostgreSQL的流式文档处理方法、装置以及装置的应用方法与流程

文档序号:25517670发布日期:2021-06-18 20:03阅读:77来源:国知局
本发明涉及文档存储、检索
技术领域
:,尤其涉及一种基于postgresql的流式文档处理方法、装置以及装置的应用方法。
背景技术
::流式文件,能够支持编辑,其内容是流动的,中间键入新内容将导致后面的内容“流”到下一行或下一页去。流式文件在不同的软硬件环境中,显示效果会发生变化。微软的word文档是典型的流式文件。比如同一个word文档,在不同版本的office软件中或者不同分辨率的电脑上,显示效果都是有所不同的。流式文档是一种非结构化的数据,因为其格式不固定。postgresql是一种功能强大的关系型数据库,支持多种数据类型。但是对于流式文档,postgresql只能将其作为一个二进制文件类型进行存储和管理,无法对数据进行高效检索和管理。关系型数据库是一种结构化的存储装置,它只适合处理格式固定的结构化数据。技术实现要素:本发明实施例提供一种基于postgresql的流式文档处理方法、装置以及装置的应用方法,用以解决现有技术中数据库无法对流式文档数据进行高效检索和管理的问题。根据本发明实施例的基于postgresql的流式文档处理方法,包括:在postgresql中构建复合数据,所述复合数据包括第一属性和第二属性;获取流式文档的文档内容并存入所述第一属性;获取所述流式文档的物理存储地址并存入所述第二属性;在postgresql中对所述第一属性进行索引。根据本发明的一些实施例,所述获取流式文档的文档内容并存入所述第一属性,包括:识别流式文档,并对所述流式文档进行解析,以提取所述流式文档的文档内容;将所述文档内容以文本类型存入所述第一属性;所述获取所述流式文档的物理存储地址并存入所述第二属性,包括:将所述流式文档以二进制的形式存入一个内部表;将所述流式文档在所述内部表的位置以oid类型存入所述第二属性。根据本发明的一些实施例,所述在postgresql中对所述第一属性进行索引,包括:在postgresql中,采用n-gram算法,对所述第一属性进行索引。根据本发明的一些实施例,所述方法,还包括:获取更改后的流式文档的文档内容,以更新所述第一属性;利用put_document(oid,bytea)函数,更改所述流式文档的第二属性;所述put_document(oid,bytea)函数的参数包括:所述流式文档的物理存储地址和更改后的流式文档的二进制形式内容。根据本发明实施例的基于postgresql的流式文档处理装置,包括:定义模块,用于构建复合数据,所述复合数据包括第一属性和第二属性;构建模块,用于获取流式文档的文档内容并存入所述第一属性;获取所述流式文档的物理存储地址并存入所述第二属性;索引模块,用于对所述第一属性进行索引。根据本发明的一些实施例,所述构建模块,用于:识别流式文档,并对所述流式文档进行解析,以提取所述流式文档的文档内容;将所述文档内容以文本类型存入所述第一属性;将所述流式文档以二进制的形式存入一个内部表;将所述流式文档在所述内部表的位置以oid类型存入所述第二属性。根据本发明的一些实施例,所述索引模块,用于:采用n-gram算法,对所述第一属性进行索引。根据本发明的一些实施例,所述装置还包括:更新装置,用于获取更改后的流式文档的文档内容,以更新所述第一属性;利用put_document(oid,bytea)函数,更改所述流式文档的第二属性;所述put_document(oid,bytea)函数的参数包括:所述流式文档的物理存储地址和更改后的流式文档的二进制形式内容。根据本发明实施例的基于postgresql的流式文档处理装置的应用方法,所述基于postgresql的流式文档处理装置为根据如上所述的基于postgresql的流式文档处理装置,所述应用方法,包括:通过sql查询语句对复合数据进行检索,符合查询条件的流式文档将返回其文档内容及物理存储地址。根据本发明的一些实施例,所述方法,还包括:根据所述物理存储地址,通过get_document(oid)函数,获取该流式文档的原始文件。采用本发明实施例,可以对流式文档进行高效检索和管理。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。附图说明通过阅读下文实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。在附图中:图1是本发明实施例中流式文档处理方法流程图;图2是本发明实施例中流式文档处理装置的应用方法流程图;图3是本发明实施例中流式文档处理方法流程图;图4是本发明实施例中流式文档处理方法流程图;图5是本发明实施例中流式文档处理装置的应用方法流程图;图6是本发明实施例中get_document(oid)处理流程图;图7是本发明实施例中流式文档更改流程图。具体实施方式下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。本发明第一方面实施例提出一种基于postgresql的流式文档处理方法,如图1所示,包括:s11,在postgresql中构建复合数据,所述复合数据包括第一属性和第二属性;s12,获取流式文档的文档内容并存入所述第一属性;s13,获取所述流式文档的物理存储地址并存入所述第二属性;s14,在postgresql中对所述第一属性进行索引。采用本发明实施例,可以对流式文档进行高效检索和管理。在上述实施例的基础上,进一步提出各变型实施例,在此需要说明的是,为了使描述简要,在各变型实施例中仅描述与上述实施例的不同之处。根据本发明的一些实施例,所述获取流式文档的文档内容并存入所述第一属性,包括:识别流式文档,并对所述流式文档进行解析,以提取所述流式文档的文档内容;将所述文档内容以文本类型存入所述第一属性;所述获取所述流式文档的物理存储地址并存入所述第二属性,包括:将所述流式文档以二进制的形式存入一个内部表;将所述流式文档在所述内部表的位置以oid类型存入所述第二属性。根据本发明的一些实施例,所述对所述第一属性进行索引,包括:采用n-gram算法,对所述第一属性进行索引。根据本发明的一些实施例,所述方法,还包括:获取更改后的流式文档的文档内容,以更新所述第一属性;利用put_document(oid,bytea)函数,更改所述流式文档的第二属性;所述put_document(oid,bytea)函数的参数包括:所述流式文档的物理存储地址和更改后的流式文档的二进制形式内容。本发明第二方面实施例提出一种基于postgresql的流式文档处理装置,包括:定义模块,用于构建复合数据,所述复合数据包括第一属性和第二属性;构建模块,用于获取流式文档的文档内容并存入所述第一属性;获取所述流式文档的物理存储地址并存入所述第二属性;索引模块,用于对所述第一属性进行索引。采用本发明实施例,可以对流式文档进行高效检索和管理。在上述实施例的基础上,进一步提出各变型实施例,在此需要说明的是,为了使描述简要,在各变型实施例中仅描述与上述实施例的不同之处。根据本发明的一些实施例,所述构建模块,用于:识别流式文档,并对所述流式文档进行解析,以提取所述流式文档的文档内容;将所述文档内容以文本类型存入所述第一属性;将所述流式文档以二进制的形式存入一个内部表;将所述流式文档在所述内部表的位置以oid类型存入所述第二属性。根据本发明的一些实施例,所述索引模块,用于:采用n-gram算法,对所述第一属性进行索引。根据本发明的一些实施例,所述装置还包括:更新装置,用于获取更改后的流式文档的文档内容,以更新所述第一属性;利用put_document(oid,bytea)函数,更改所述流式文档的第二属性;所述put_document(oid,bytea)函数的参数包括:所述流式文档的物理存储地址和更改后的流式文档的二进制形式内容。本发明第三方面实施例提出一种流式文档处理装置的应用方法,所述流式文档处理装置为如上所述的流式文档处理装置,如图2所示,所述应用方法,包括:s21,通过sql查询语句对复合数据进行检索,符合查询条件的流式文档将返回其文档内容及物理存储地址。根据本发明的一些实施例,所述方法,还包括:s22,根据所述物理存储地址,通过get_document(oid)函数,获取该流式文档的原始文件。下面参照图3-图7以一个具体的实施例详细描述根据本发明实施例基于postgresql的流式文档处理方法。值得理解的是,下述描述仅是示例性说明,而不是对本发明的具体限制。凡是采用本发明的相似结构及其相似变化,均应列入本发明的保护范围。从1989年起,lotus通过其群件产品notes提出了数据库技术的全新概念-“文档数据库”,文档数据库区别于传统的其它数据库,它是用来管理文档。在传统的数据库中,信息被分割成离散的数据段,而在文档数据库中,文档是处理信息的基本单位。一文档可以很长、很复杂、可以无结构,与字处理文档类似。与关系型数据库相比,文档数据库不提供对参数完整性和分布事务的支持,且文档数据库数据冗余大,难于管理维护,难以对数据进行分类和查找。传统的关系数据库通常将数据存储在相互独立的表格中,这些表格由程序开发者定义,单独一个的对象可以散布在若干表格中。关系型数据库是高度结构化的,而文档类数据却是不断变化的。关系型数据库可以以二进制的方式将文档数据快速存入,但却缺乏对数据进行有效分类和查找的手段。本发明提出一种方法,能够让关系型数据库具备对流式文档的高效检索和管理的能力。具体来讲,就是设计一种新的数据类型,用于保存流式文档数据。上述数据类型包含两个属性,一是流式文档内容,二是流式文档存储位置。为上述数据类型设计输入输出函数,输入函数将对流式文档内容进行提取和保存。为上述数据类型设计索引,此索引仅对上述数据类型的第一个属性进行n-gram索引。设计单独的二进制文件读取函数,以确保信息安全。设计单独的二进制文件写入函数,以确保信息安全。详细的,本发明实施例的本发明实施例基于postgresql的流式文档处理方,包括以下具体步骤:步骤1:设计一种新的数据类型,名为flow_doc,用于存储流式文档数据。flow_doc为一种复合数据类型,其内部包含两个属性,第一个属性是文本类型,用于存储流式文档的文本信息,第二个属性是oid类型,用于存储流式文件的物理存储地址。步骤2:在postgresql中为flow_doc类型数据设计输入处理函数,以实现对流式文档数据的存入和读取。如图3所示,对于要存入flow_doc中的流式文档数据,输入处理函数首先会对其具体的文档类型进行识别,然后调用相应的文档解析模块对文档内容进行提取,提取出的文档内容以文本方式存入flow_doc的第一个属性,即文本类型的属性。之后该流式文档数据会以二进制方式存入一个内部表,其在内部表的位置被存入flow_doc的第二个属性,即oid类型的属性,代表一条唯一的二进制数据。flow_doc类型的输出处理函数,只需将保存在其内部的两种属性信息,即流式文档的文本内容和对应二进制文件的位置信息,输出给数据库的查询执行器即可。步骤3:针对flow_doc类型设计一种索引方法,以实现对流式数据的快速检索。索引采用n-gram算法,且仅对flow_doc的第一个属性(文本类型)进行索引,如图4所示。由此,可快速对流式文档数据进行查找和检索,并支持模糊查找,且检索效率很高。步骤4:数据的检索和查看。经过以上步骤,对流式文档进行了存储和索引,可以使用sql查询语句对数据进行检索,符合查询条件的流式文档数据将返回文档的内容及其二进制文件的oid。如果需要查看流式文档的原始文件,只需根据oid信息从内部表取出对应的条目即可。为了文档数据的信息安全,不允许用户随意访问此内部表,本发明设计了专门的函数get_document(oid)来读取原始文件信息,如图5所示。每一个oid对应一个流式文件的二进制物理文件,get_document函数将根据传入的oid值查询与此oid关联的用户表,然后判断调用get_document函数的用户是否具备此用户表的访问权限,如果具备则读取流式文件的内容并返回给用户。步骤5:设计了专门的函数put_document(oid,bytea)来更改原始文件信息。因为流式文档是可以修改和编辑的,所以需要数据更新的步骤。为了文档数据的信息安全,不允许用户随意更改流式文档的原始文件,本发明设计了专门的函数put_document(oid,bytea)来更改原始文件信息,此函数的第一个参数为要更新的原始文件的地址,第二个参数为更改后的流失文件的内容(二进制类型),如图6所示。如图7所示,当流式文档被修改后,首先调用流式文档解析模块提取更新后的文本内容,并将此文本内容更新对应的flow_doc数据的第一个属性,然后使用put_document函数更新对应的flow_doc数据的第二个属性,最后更新索引。流式文档的更新流程结束。一个具体的列子:1.创建一个表,用于保存流式文档数据。createtabletb1(titletext,authortext,flow_docdocs);2.插入一条数据:insertintotb1values(‘开发规范’,‘张三’,‘./开发规范.docx’)3.创建索引:createindexdoc_indexontb1(docs);4.数据查询:select*fromtb1wheredocslike‘规则%’;5.数据更新updatetb1setdocs=’./开发规范new.docx’whereauthor=’张三’;传统关系型数据库缺少对流式文档数据的高效管理,对存入的流式文档数据难以检索。本发明极大扩展了关系型数据库的文档数据处理能力,使得用户的流式文档数据可以方便地保存于关系型数据库并能高效检索。此发明能够减少用户信息管理系统的复杂度,减少开发工作量。让关系型数据库具备对流式文档的高效检索和管理,无疑极大拓展了关系型数据库的应用场景,简化用户数据管理系统的设计复杂度。需要说明的是,以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。需要说明的是,在本说明书的描述中,单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。在此提供的方法不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1