一种为半结构化数据构建NoSQL数据库索引的方法及装置的制造方法

文档序号:8472957阅读:905来源:国知局
一种为半结构化数据构建NoSQL数据库索引的方法及装置的制造方法
【技术领域】
[0001] 本申请涉及计算机应用技术领域,特别是涉及一种为半结构化数据构建NoSQL数 据库索引的方法及装置。
【背景技术】
[0002] 数据库管理系统(databasemanagementsystem)是一种操纵和管理数据库的方 式,用于建立、使用和维护数据库。它对数据库进行统一的管理和控制,以保证数据库的安 全性和完整性。
[0003] 随着大数据时代的到来,交易和交互数据也随之不断增大。其中,对TB数据级的 处理,已经成为基本配置;而数据类型也由单一性变为多样性,例如:结构化数据、非结构 化数据、半结构化数据等,其中结构化数据通常是指企业ERP、财务系统等数据信息;非结 构化数据是指语音、图像、视频等数据;半结构化数据是指结构隐含但不严谨的自我描述型 数据,如:邮件、HTML、报表、资源库等数据。
[0004] 传统的关系型数据库管理系统在面对上述大规模及多样性的数据时,存在一定 的局限性,尤其是对于处理非结构化数据和半结构化数据时显得力不从心。为此,提出了 NoSQL的概念。
[0005]NoSQL是指非关系型的数据库,或者称为:非结构化数据存储的数据库。NoSQL存 储中的列式存储(如ffiase,0TS)是基于列的数据库,以方便读写大数据内容。NoSQL存储 模型可以表示为一个表,每个表由很多行组成,每行又有很多列。表创建时需要指定行的主 键列,该主键列通常被用来划分数据,相邻主键的行通常被组织在一起。对NoSQL数据库进 行查询的方式是为其建立索引。
[0006] 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问 数据库表中的特定信息。因此,可以通过为数据库建立索引查找到所需要的信息。
[0007] 倒排索引是NoSQL数据库最常用的数据结构之一,所谓倒排索引(Inverted index),是根据属性的值来查找记录,在倒排索引表中的每一项都包括一个属性值和具有 该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的地 址,所以称之为倒排索引。以常用的NoSQL数据库类型--文档检索系统为例,如果要为存 储在硬盘上的文本文件建立倒排索引,则所述属性值就是文档中的关键字,倒排索引表中 对应每个关键字记录包含该关键字的文本文件所在的硬盘存储位置,该硬盘存储位置称为 索引值。
[0008] 对上述文档检索系统为例,需要为大量文档建立数据库索引时,可以将文档和索 引存入NoSQL数据库的数据表和倒排索引表中,数据表主键是文档ID,值是文档内容;倒排 索引表主键是关键字,值是包含该关键字的文档列表,通过倒排索引表的关键字主键可以 查找包含该关键字的所有文档的文档ID,使用这些文档ID,再通过数据表,可以查找到对 应的文档内容,通过上述方式,就可以实现从海量的信息中快速地提取出用户需求的信息, 实现为NoSQL数据库建立索引的目的。
[0009] 然而,现有基于NoSQL对数据建立的倒排索引,其查询效率很低。原因在于,用户 在根据关键字进行查询时,需要在整个倒排索引表中查找相应关键字,该查找时间随数据 量指数增长,导致查询效率低。
[0010] 此外,现有的NoSQL数据库索引的更新效率过低。以上述文档检索系统为例,现有 的NoSQL系统中,当增加新文档的数据时,需要先读取原有的倒排索引表,找出该新文档的 关键字在倒排索引表中的位置,然后,再将该新文档的文档ID对应这些关键字写入倒排索 引表;由于需要先读取倒排索引表的内容,显著降低了数据库索引的更新速度,当数据库很 大时,更新速度将达到无法接收的地步。
[0011] 综上,由于现有技术中基于NoSQL存储数据构建索引的方式,存在查询效率和更 新效率过低的问题,因此,导致系统吞吐量低,无法处理TB规模文档的写入与查询。
[0012] 所以,如何能够构建一种具有更高吞吐能力的NoSQL数据库索引方法,成为亟待 解决的技术问题。

【发明内容】

[0013] 本申请提供一种为半结构化数据构建NoSQL数据库索引的方法,所述数据库索引 具有更高的查询效率,以及更便于更新。
[0014] 本申请同时提供一种为半结构化数据构建NoSQL数据库索引的装置。
[0015] 为解决上述技术问题,本申请提供一种为半结构化数据构建NoSQL数据库索引的 方法,包括:将半结构化源数据进行预处理,获得若干待存入数据库的文本段;将所述预处 理后的文本段存储至数据表中,所述数据表具有第一组合主键,每个文本段对应所述第一 组合主键存储至相应的记录中;所述第一组合主键包括结构化线索主键和序列值主键;所 述结构化线索主键标识结构化线索,所述结构化线索以确定的顺序被分割为若干连续区 间,每一区间分配一个特定的键值作为结构化线索主键的键值;所述序列值主键,是为每 个文本段赋予唯一对应所述文本段的序列值;对所述预处理后的文本段建立倒排索引表, 所述倒排索引表的主键为第二组合主键,所述第二组合主键包含结构化线索主键和关键字 主键;所述倒排索引表中,对应上述各个主键的键值,记录相关的文本段序列标识作为索引 值;关键字主键相同,但具有不同的结构化线索主键键值的索引值,在所述倒排索引表中位 于不同的行。
[0016] 优选地,所述第一组合主键包括数据源主键,所述数据源主键标识文本段的数据 来源;所述第二组合主键同样包含上述数据源主键,具有不同的数据来源主键键值的索引 值,在所述倒排索引表中位于不同的行。
[0017] 优选地,对这些文本段建立所述数据表和倒排索引表时,一次性读取同一数据来 源的具有相同结构化线索主键键值的所有文本段。
[0018] 优选地,所述第一组合主键中,所述数据源主键,具体采用文本段的数据源加上文 本段的结构化线索原始值的哈希值;和/或在所述第二组合主键中,所述数据源主键,具体 采用文本段的数据源加上关键字的哈希值。
[0019] 优选地,所述结构化线索为文本段的源数据生成时间。
[0020] 优选地,所述结构化线索以确定的顺序被分割为若干连续区间,是将文本段的源 数据生成时间分为若干时间段;所述每一区间分配一个特定的键值作为结构化线索主键的 键值,是以所述时间段的起点、终点、中点或者所述时间段内的任意一点的时间值作为所述 特定的键值,或者为所述时间段确定一个唯一的标识符号作为所述特定的键值。
[0021] 优选地,所述序列值以基值加偏移值的方式表示;所述基值与所述结构化线索主 键键值对应,即,相同的结构化线索主键键值对应同一个基值;所述偏移值以如下方式获 得:对应同一个结构化线索主键键值的每个文本段,以所述结构化线索原始值的顺序为依 据,按照顺序赋予相应的偏移值。
[0022] 优选地,所述倒排索引表中,记录相关文本段标识作为索引值的具体方法是:为对 应同一个数据源主键键值,并且结构化线索主键键值相同的所有文本段,提供一个基值;同 时,为这些文本段提供一个二进制比特数组,所述比特数组中,以第i位二进制数标识第i 个文本段是否包含所在记录的关键字主键中所列的关键字。
[0023] 优选地,若对应同一个数据源主键并且具有相同的结构化线索主键的所有文本 段,均包括某个关键字,则在倒排索引表对应所述关键字主键的记录中,其索引值记录为一 个特殊符号,所述特殊符号表示所有文本段均包含所述关键字;或者,若对应同一个数据源 主键并且具有相同的结构化线索主键的少量文本段,包括某个关键字,则直接记录以整数 表示的文本段偏移值。
[0024] 本申请还提供一种为半结构化数据构
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1