数据查询方法和装置的制造方法

文档序号:9597893阅读:177来源:国知局
数据查询方法和装置的制造方法
【技术领域】
[0001] 本发明涉及数据库领域,特别涉及一种数据查询方法和装置。
【背景技术】
[0002] 数据库表是数据库中用于存储数据的对象,数据库表中通常以行和列的形式存储 着多个值,一行数据为一个记录(例如在通讯录数据库中某个人全部的信息),一列数据 (一个字段)记录有该数据库表中同一数据类型的所有值(如通讯录数据库中所有人的家 庭住址)。在数据库表中查询数据时,为了更快的获取想要获取的整行数据,通常需要建立 索引。索引是对数据库表中一列或多列的值进行排序的一种结构。索引通常包括主索引 (一级索引)和二级索引,主索引记录有数据库表中的所有行的数据,其中,每行数据称为 一个索引行,每列数据称为一个索引列,每行数据中的任一索引数据都对应于该行的行主 键(Rowkey),二级索引通常是根据主索引中的索引列与这索引列中每个索引数据对应的行 主键建立的。
[0003] 相关技术中有一种数据查询方法,在该方法中,客户端在不知道查询数据(该查 询数据是客户端想要获取的整行数据中的一个索引数据)的所属索引列时,需要查询根据 该查询数据多个可能所属的索引列建立的多个二级索引,而每查询一个二级索引,客户端 就要向服务端(数据库位于服务端)发送一次查询请求(包含有查询数据),服务端在接 收到这一查询请求后,会查询对应的二级索引,在查询完多个二级索引后,服务端向客户端 返回多次查询的结果(若查询到多个二级索引中存在该查询数据,则获取该查询数据对应 的行主键,根据该行主键查询主索引得到行主键对应的整行数据,最后向客户端返回该整 行数据,若在多个二级索引中未查询到该查询数据,则向客户端返回没有满足条件的数据 的指示)。例如:查询数据为电话号码,作为查询数据的电话号码可能属于主索引中手机号 码、家庭号码和办公号码这三列数据中的任一列,客户端在查询时需要根据电话号码向服 务端发送查询根据手机号码、家庭号码和办公号码这三列数据建立的三个二级索引的三个 请求,服务端会根据查询这三个索引的三个请求分别查询这三个索引,之后服务端向客户 端返回查询这三个索引的查询结果。
[0004] 发明人在实现本发明的过程中,发现上述方式至少存在如下缺陷:上述方式在进 行查询时,需要分别查询多个二级索引,查询过程的操作成倍增长,查询效率较低。

【发明内容】

[0005] 为了解决相关技术中在进行查询时,需要分别查询多个二级索引,查询过程的操 作成倍增长,查询效率较低的问题,本申请提供了一种数据查询方法和装置。所述技术方案 如下:
[0006] 第一方面,提供一种数据查询方法,所述方法包括:
[0007] 数据库端接收客户端发送的包含有查询数据的查询请求,查询数据为主索引中记 录的一个索引数据;
[0008] 数据库端根据接收到的查询请求查询主索引中的目标二级索引,得到查询数据对 应的目标行主键,其中目标二级索引包含有第一索引列,该第一索引列中记录了主索引中 至少两个第二索引列中的索引数据,且每个第二索引列中的每个索引数据各自与主索引中 的一个行主键对应,第一索引列是指二级索引中的索引列,第二索引列是指主索引中的索 引列;
[0009] 数据库端在获取了目标行主键后,根据目标行主键查询主索引,并获取目标行主 键对应的目标索引行中的索引数据,该目标索引行中的索引数据为客户端想要获取的数 据;
[0010] 数据库端向客户端提供目标索引行中的索引数据完成数据的查询。
[0011] 本申请提供的数据查询方法,通过查询数据查询目标二级索引,该目标二级索引 中的第一索引列中记录有至少两个第二索引列中的索引数据,得到查询数据对应的行主 键,再获取该行主键对应的索引数据,解决了相关技术中在进行查询时,需要分别查询多个 二级索引,查询过程的操作成倍增长,查询效率较低的问题;达到了进行一次查询就能够查 询多个第二索引列中的索引数据的效果,查询过程操作简单,查询效率较高。
[0012] 在一个可能的设计中,该方法还包括:
[0013] 在建立二级索引时,数据库端从主索引中获取至少两个第二索引列中的索引数 据;
[0014] 数据库端将获取的至少两个第二索引列中的索引数据映射为一个虚拟列,虚拟列 中记录有至少两个第二索引列中的索引数据;
[0015] 根据虚拟列和虚拟列中每个索引数据对应的行主键建立目标二级索引,虚拟列为 目标二级索引中的第一索引列。数据库端在建立目标二级索引时,可以给目标二级索引设 置一个标识,该标识可以区分与识别目标二级索引。
[0016] 目标二级索引中可以记录有每个索引数据对应的行主键,也可以不记录每个索引 数据对应的行主键,而是建立每个索引数据与主索引中该索引数据对应的行主键之间的映 射,使每个索引数据各自指向主索引中的一个索引行的行主键。
[0017] 此外,建立二级索引的过程可以包含二级索引的定义过程与数据填充过程,其中 二级索引的定义过程为建立二级索引的架构的过程,该架构可以认为是一个表格,且该表 格确定了需要将主索引中的哪几列索引数据填入其中以及二级索引的标识;而数据填充过 程为将虚拟列中的索引数据填入二级索引的架构的过程。
[0018] 本实现方法为建立目标二级索引的过程,数据库端可以以该方法建立任一二级索 引。
[0019] 本申请提供的数据查询方法,通过虚拟列来作为二级索引的第一索引列,达到了 目标二级索引中的第一索引列能够包含主索引中多个第二索引列的效果。
[0020] 在一个可能的设计中,主索引中每个第二索引列各自对应一种数据类型,根据虚 拟列和虚拟列中每个索引数据对应的行主键建立目标二级索,包括:
[0021] 数据库端根据主索引中与虚拟列存在映射关系的至少两个第二索引列中每个索 引列对应的数据类型确定虚拟列中每个索引数据的数据类型;
[0022] 数据库端在建立目标二级索引时,将虚拟列中每个索引数据的数据类型作为目标 二级索引的附加列,该附加列可以指示二级索引的第一索引列中每个索引数据的数据类 型。
[0023] 本申请提供的数据查询方法,通过在二级索引中添加附加列,达到了能够在二级 索引中查询到数据类型的效果。
[0024] 在一个可能的设计中,根据虚拟列和虚拟列中每个索引数据对应的行主键建立目 标二级索引之后,该方法还包括:
[0025] 在对目标二级索引进行更新时,数据库端接收客户端发送的包含有新增索引行的 写入请求;
[0026] 数据库端将新增索引行写入主索引,并为新增索引行分配对应的行主键;
[0027] 数据库端确定目标二级索引中虚拟列对应的至少两个第二索引列,其中虚拟列对 应的第二索引列为与虚拟列存在映射关系的第二索引列;
[0028] 数据库端从新增索引行中获取属于与虚拟列对应的至少两个第二索引列中的索 引数据;
[0029] 数据库端将新增索引行中属于至少两个第二索引列中的索引数据写入目标二级 索引,完成对目标二级索引的更新。
[0030] 本实现方式为对目标二级索引的更新过程,数据库端接收到写入请求后,可以根 据该方式更新任一二级索引。
[0031] 在一个可能的设计中,查询请求中还包含有目标数据类型和目标二级索引的标 识,根据查询请求查询主索引的目标二级索引,得到查询数据对应的目标行主键,包括:
[0032] 数据库端根据目标二级索引的标识确定目标二级索引,该标识可以为目标二级索 引的名称等可以识别目标二级索引的数据;
[0033] 数据库端在目标二级索引中寻找记录有目标数据类型和查询数据的目标索引 行;
[0034] 数据库端获取目标索引行的行主键后,将目标二级索引行的行主键确定为目标行 主键。
[0035] 本申请提供的数据查询方法,通过目标数据类型和查询数据来查询含有附加列的 目标二级索引,达到了缩小搜索范围的效果。
[0036] 第二方面,提供一种数据查询装置,该装置包括:
[0037] 请求接收单元,用于接收客户端的查询请求,查询请求中包含有查询数据;
[0038] 索引查询单元,用于根据查询请求查询主索引的目标二级索引,得到查询数据对 应的目标行主键,目标二级索引包括第一索引列,第一索引列中记录有主索引中的至少两 个第二索引列中的索引数据,至少两个第二索引列中每个索引数据各自对应一个行主键, 行主键对应于主索引中的一个索引行;
[0039] 数据获取单元,用于从主索引中获取目标行主键对应的目标索引行中的索引数 据;
[0040] 数据提供单元,用于向客户端提供目标索引行中的索引数据。
[0041] 在一个可能的设计中,该装置还包括:
[0042] 索引数据获取单元,用于从主索引中获取至少两个第二索引列中的索引数据;
[0043] 虚拟映射单元,用于将至少两个第二索引列中的索引数据映射为一个虚拟列,虚 拟列中记录有至少两个第二索引列中的索引数据;
[0044] 索引建立单元,用于根据虚拟列和虚拟列中每个索引数据对应的行主键建立目标 二级索引,虚拟列为目标二级索引中的第一索引列。
[0045] 在一个可能的设计中,主索引中每个第二索引列各自对应一种数据类型,索引建 立单元,用于:
[0046] 根据主索引中的至少两个第二索引列中每个第二索引列各自对应的数据类型确 定虚拟列中每个索引数据的数据类型;
[0047] 根据虚拟列和虚拟列中每个索引数据对应的行键值以及虚拟列中每个索引数据 的数据类型建立目标二级索引,虚拟列中每个索引数据的数据类型组成目标二级索引的附 加列。
[0048] 在一个可能的设计中,该装置还包括:
[0049] 写入接收单元,用于接收客户端的写入请求,写入请求中包含有新增索引行;
[0050] 索引写入单元,用于将新增索引行写入主索引,并为新增索引行分配对应的行主 键;
[0051] 索引列确定单元,用于确定目标二级索引中虚拟列对应的至少两个第二索引列;
[0052] 新增数据获取单元,用于从新增索引行中获取属于至少两个第二索引列中的索引 数据;
[0053] 数据写入单元,用于将新增索引行中属于至少两个第二索引列中的索引数据写入 目标二级索引。
[0054] 在一个可能的设计中,查询请求中还包含有目标数据类型和目标二级索引的标 识,索引查询单元,用于:
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1