一种数据查询方法和装置与流程

文档序号:12597730阅读:166来源:国知局
一种数据查询方法和装置与流程

本申请涉及数据处理技术领域,特别是涉及一种数据查询方法和一种数据查询装置。



背景技术:

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。随着信息技术和市场的发展,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。而随着大型数据库的广泛应用,如何在数据库中快速进行数据查询就显得尤为重要。

在mysql这种结构化数据库中,由于主键基本上是顺序递增的,因此根据主键进行数据查询是件容易的事情。在HBASE这种半结构化存储环境中,数据以key-value的形式进行分页存储,rowkey是HBASE的存储中的key,类比mysql中的主键,通常用户以rowkey作为查询的字段。而在HBASE中,为了实现数据均衡分布,一般rowkey不会采用自增值,而是使用散列值,也即rowKey是没有规律的。因此,在该情况下,在基于rowkey进行数据查询时,只能在HBASE中一页数据一页数据的依次查找。这种查询方式,尤其在查询大量数据的情况下,耗时较长,效率太低。

因此,目前需要本领域技术人员迫切解决的一个技术问题就是:如何能提高数据查询效率。



技术实现要素:

本申请实施例所要解决的技术问题是提供一种数据查询方法,能提高数据查询效率。

相应的,本申请实施例还提供了一种数据查询装置,用以保证上述方法的实现及应用。

为了解决上述问题,本申请公开了一种数据查询方法,包括:

接收数据查询请求,所述数据查询请求中包含待查询数据信息;

根据预先获得的数据库的数据页信息,确定出与所述待查询数据信息对应的单页数据标识;所述数据页信息中至少包括所述数据库中的各单页数据标识;

向所述数据库请求与所述待查询数据信息对应的单页数据标识所对应的数据;

在所请求到的数据中查询与所述待查询数据信息对应的待查询数据。

进一步,获得所述数据库的数据页信息的方法,包括:

向所述数据库发送数据页信息查询请求;

接收数据页信息并将其加入内存队列,所述数据页信息中至少包括所述数据库中每页数据的单页数据标识。

进一步,所述待查询数据信息包括至少一个待查询数据的rowkey。

进一步,所述待查询数据信息包括待查询数据在数据库中的起止页;所述数据页信息中还包括与所述数据库中每页数据的单页数据标识对应的页码信息。

进一步,所述待查询数据信息包括待查询数据在数据库中的起始页及数据量;所述数据页信息中还包括与所述数据库中每页数据的单页数据标识对应的页码信息及页内数据量。

进一步,当所确定出的与所述待查询数据信息对应的单页数据标识至少为两个时,所述向所述数据库请求与所述待查询数据信息对应的单页数据标识所对应的数据,包括:

启用至少两个线程并行在所述内存队列中拉取与所述待查询数据信息对应的不同的单页数据标识;

占用所述至少两个线程并行向所述数据库请求所拉取的单页数据标识所对应的数据。

进一步,所述数据库为key值无规律的半结构化存储数据库。

本申请实施例还公开了一种数据查询装置,包括:

请求接收单元,被配置为接收数据查询请求,所述数据查询请求中包含待查询数据信息;

确定单元,被配置为根据预先获得的数据库的数据页信息,确定出与所述待查询数据信息对应的单页数据标识;所述数据页信息中至少包括所述数据库中的各单页数据标识;

数据请求单元,被配置为向所述数据库请求与所述待查询数据信息对应的单页数据标识所对应的数据;

查询单元,被配置为在所请求到的数据中查询与所述待查询数据信息对应的待查询数据。

进一步,所述装置还包括:

信息获取单元,被配置为获得所述数据库的数据页信息;

所述信息获取单元包括:

请求子单元,被配置为向所述数据库发送数据页信息查询请求;

存储子单元,被配置为接收数据页信息并将其加入内存队列,所述数据页信息中至少包括所述数据库中每页数据的单页数据标识。

进一步,当所述确定单元确定出的与所述待查询数据信息对应的单页数据标识至少为两个时,所述数据请求单元包括:

拉取子单元,被配置为启用至少两个线程并行在所述内存队列中拉取与所述待查询数据信息对应的不同的单页数据标识;

数据请求子单元,被配置为占用所述至少两个线程并行向所述数据库请求所拉取的单页数据标识所对应的数据。

与现有技术相比,本申请实施例包括以下优点:

本申请实施例通过利用数据库中的单页数据标识获得数据页信息,并依据该数据页信息可以直接获取数据库中的与待查询数据信息对应的某一页或某几页数据进行数据查询,该查询方式无需在数据库中逐页进行数据查询,简化了数据查询过程,提高了数据查询效率。

附图说明

图1是本申请的一种数据查询方法实施例的步骤流程图;

图2是本申请中一种获得数据库的数据页信息的方法实施例的步骤流程图;

图3是本申请的另一种数据查询方法实施例的步骤流程图;

图4是本申请的另一种数据查询方法实施例的步骤流程图;

图5是本申请的另一种数据查询方法实施例的步骤流程图;

图6是本申请的一种数据查询装置实施例的结构框图;

图7是本申请的另一种数据查询装置实施例的结构框图;

图8是本申请中一种信息获取单元的结构框图;

图9是本申请中一种数据请求单元的结构框图。

具体实施方式

为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。

参照图1,示出了本申请的一种数据查询方法实施例的步骤流程图,具体可以包括如下步骤:

步骤101,接收数据查询请求,该数据查询请求中包含待查询数据信息。

本申请实施例中,该用于查询数据的装置(以下简称该装置)接收到数据查询请求后,获取该请求中包含的待查询数据信息,该待查询数据信息可能是包括至少一个待查询数据的rowkey,需要该装置在数据库中查找到该rowkey对应的待查询数据;该待查询数据信息也可能包括待查询数据在数据库中的起止页,需要该装置在数据库中查找到该起止页之间的数据;该待查询数据信息也可以是包括待查询数据在数据库中的起始页及数据量,需要该装置在数据库中查找到该起始页之后的满足该数据量的数据。当然,该待查询数据信息还可以是包括其它用于查询数据的信息,此处不再一一列举。

步骤102,根据预先获得的数据库的数据页信息,确定出与待查询数据信息对应的单页数据标识,该数据页信息中至少包括数据库中的各单页数据标识。

该装置在执行本步骤之前,预先获得数据库的数据页信息,具体可以是该装置预先向数据库请求获得的。该数据页信息中至少包括数据库中的各单 页数据标识,单页数据标识可以唯一标识其所对应的数据页,例如,在HBASE数据库中,marker为数据页的起始标识;该数据页信息中还可以包括与数据库中每页数据的单页数据标识对应的页码信息;也还可以包括与所述数据库中每页数据的单页数据标识对应的页内数据量。

在获得数据页信息后,根据待查询数据信息中包含的内容,即可确定出与待查询数据信息对应的单页数据标识,所确定出的单页数据标识可能是一个,也可以是多个,多个单页数据标识对应的数据页在数据库中可能是连续的,也可能是不连续的。

步骤103,向数据库请求与待查询数据信息对应的单页数据标识所对应的数据。

当确定出的单页数据标识是一个时,可以占用一个线程向数据库请求该单页数据标识所对应的数据,当确定出的单页数据标识是多个时,可以占用多个线程并行向数据库请求各单页数据标识对应的数据。

步骤104,在所请求到的数据中查询与待查询数据信息对应的待查询数据。

在请求到数据后,即可根据待查询数据信息查询到待查询数据。该待查询数据可能就是上步骤中请求到的数据,也可能是所请求到的数据中的部分数据。

本申请实施例通过利用数据库中的单页数据标识获得数据页信息,并依据该数据页信息可以直接获取数据库中的与待查询数据信息对应的某一页或某几页数据进行数据查询,该查询方式无需在数据库中逐页进行数据查询,简化了数据查询过程,提高了数据查询效率。

在本申请的另一实施例中,如图2所示,获得数据库的数据页信息的方法可以包括以下步骤:

步骤201,向数据库发送数据页信息查询请求。

该装置向数据库发送查询请求。数据库接收到该请求后,根据请求至少获得每页数据的单页数据标识,还可以根据请求内容获得与数据库中每页数据的单页数据标识对应的页码信息和/或页内数据量等,生成数据页信息,然 后将其返回至该装置。

步骤202,接收数据页信息,并将数据页信息加入内存队列,该数据页信息中至少包括数据库中每页数据的单页数据标识。

该装置在接收到数据发送的数据页信息后,将其加入内存队列,以便于随时快速的调用。

通过获得该数据页信息,该装置可以简便快速的根据数据查询请求确定数据库中某一页或某几页数据进行数据查询,未简化数据查询过程,提高数据查询效率提供了保障。

下面分别对不同应用场景下的数据查询方法进行说明。

参照图3,示出了本申请的另一种数据查询方法实施例的步骤流程图,具体可以包括如下步骤:

步骤301,接收数据查询请求,该数据查询请求中包含至少一个待查询数据的rowkey。

本实施例的应用场景是根据数据的rowkey进行查询。

步骤302,根据预先获得的数据库的数据页信息,确定出数据库的所有单页数据标识。

该情况下,预先获得的数据库的数据页信息中可以只包含数据库中每页数据的单页数据标识。本实施例中由于要查询具体的某一数据,而不是某一指定的数据页,所以需要对数据库中所有的数据页进行查询,本步骤确定出的单页数据标识为数据库的所有单页数据标识。

步骤303,启用至少两个线程并行在内存队列中拉取所有不同的单页数据标识。

在本步骤中需要启用多个线程,多个线程并行执行,每个线程在内存队列中拉取一个单页数据标识,不同线程拉取的单页数据标识不同。

步骤304,占用该至少两个线程并行向数据库请求所拉取的单页数据标识所对应的数据。

上步骤中每个线程在拉取单页数据标识后,并行向数据库请求所拉取的单页数据标识所对应的数据。

步骤305,在所请求到的数据中查询与待查询数据的rowkey对应的待查询数据。

上步骤中每个线程在请求到所拉取的单页数据标识对应的数据后,并行在请求道的数据中查询步骤301中的rowkey对应的待查询数据。

上述各线程并行执行,当一个线程查询结束时,该线程可以重复调用执行步骤303~305,直至拉取数据库中所有的单页数据标识。

本实施例中并行调取各数据页进行数据查询的方式,相比较现有技术中依次逐页查询的方式,大大提高了数据查询效率。

参照图4,示出了本申请的另一种数据查询方法实施例的步骤流程图,具体可以包括如下步骤:

步骤401,接收数据查询请求,该数据查询请求中包含待查询数据在数据库中的起止页。

本实施例的应用场景是查询数据库中指定数据页起止页之间的数据。该起止页也可以是同一页,也即请求数据库中某一页数据。

步骤402,根据预先获得的数据库的数据页信息,确定出数据库中该起止页之间数据页的单页数据标识,该数据页信息中包括数据库中每页数据的单页数据标识及其对应的页码信息。

在本步骤中,该装置可以根据数据库中每页数据的单页数据标识及其对应的页码信息,确定出该起止页之间的数据页的单页数据标识。

步骤403,启用至少两个线程并行在内存队列中拉取确定出的不同的单页数据标识。

如果确定出的单页数据标识只有一页,则直接启用一个线程从内存队列中拉取该单页数据标识,并向数据库请求该单页数据标识对应的数据即可。

本实施例中,当确定给出的单页数据标识有多个时,则启用至少两个线程分别在内存队列中拉取出不同的单页数据标识。

启用多个线程拉取单页数据标识的过程与前述实例中的步骤303类似。

步骤404,占用该至少两个线程并行向数据库请求所拉取的单页数据标识所对应的数据。

该过程与前述实施例中的步骤304类似,此处不再赘述。

本实施例中,步骤404所请求到的数据即为步骤401中所请求的数据库起止页之间的数据。

本实施例通过利用单页数据标识来向数据库请求对应数据,简化了数据库的操作过程,并且可以通过多个线程同时获得数据,提高了数据查询效率。

参照图5,示出了本申请的另一种数据查询方法实施例的步骤流程图,具体可以包括如下步骤:

步骤501,接收数据查询请求,该数据查询请求中包含待查询数据在数据库中的起始页及数据量。

本实施例中的应用场景是,该装置需要查询自起始页之后的达到该要求数据量的数据。

步骤502,根据预先获得的数据库的数据页信息,确定出数据库中与该起始页与数据量对应的单页数据标识,该数据页信息中包括数据库中每页数据的单页数据标识及其对应的页码信息及页内数据量。

本步骤中,根据单页数据标识对应的页码信息确定起始页对应的单页数据标识,然后根据单页数据标识对应的页内数据量及请求中包含的数据量推算起始页之后的数据页,并确定出这些数据页对应的单页数据标识。有可能请求中包含的数据量正好对应确定出的数据页内的所有数据,也有可能请求中包含的数据量小于确定出的数据页内的所有数据,例如在确定出的最后一数据页中只需查询其中的部分数据。

步骤503,启用至少两个线程并行在内存队列中拉取确定出的不同的单页数据标识。

步骤504,占用该至少两个线程并行向数据库请求所拉取的单页数据标识所对应的数据。

在确定出单页数据标识后,步骤503~504与前述实施例中的步骤403~404类似,此处不再赘述。

步骤505,在所请求到的数据中查询与待查询数据在数据库中的起始页及数据量对应的待查询数据。

当请求中包含的数据量正好对应确定出的数据页内的所有数据时,步骤504请求到的数据即为步骤501中所请求的数据。当请求中包含的数据量小于确定出的数据页内的所有数据时,例如在确定出的最后一数据页中只需查询其中的部分数据,则可以根据请求中的数据量查询获得待查询数据。

在按照上述实施例获得待查询数据后,可以进一步根据获得的数据进行数据处理,例如进行数据比对,数据备份等等。

上述方法实施例可以应用于数据库为key值无规律的半结构化存储数据库,如HBASE,其中单页数据标识为marker。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。

参照图6,示出了本申请一种数据查询装置实施例的结构框图,具体可以包括如下单元:

请求接收单元601,被配置为接收数据查询请求,所述数据查询请求中包含待查询数据信息。

确定单元602,被配置为根据预先获得的数据库的数据页信息,确定出与所述待查询数据信息对应的单页数据标识;所述数据页信息中至少包括所述数据库中的各单页数据标识。

数据请求单元603,被配置为向所述数据库请求与所述待查询数据信息对应的单页数据标识所对应的数据。

查询单元604,被配置为在所请求到的数据中查询与所述待查询数据信息对应的待查询数据。

该装置通过上述单元利用数据库中的单页数据标识获得数据页信息,并依据该数据页信息可以直接获取数据库中的与待查询数据信息对应的某一 页或某几页数据进行数据查询,该装置的查询方式无需在数据库中逐页进行数据查询,简化了数据查询过程,提高了数据查询效率。

在另一实施例中,如图7所示,该装置还可以包括:

信息获取单元701,被配置为获得所述数据库的数据页信息。

该信息获取单元701,如图8所示,可以进一步包括:

请求子单元801,被配置为向所述数据库发送数据页信息查询请求。

存储子单元802,被配置为接收数据页信息并将其加入内存队列,所述数据页信息中至少包括所述数据库中每页数据的单页数据标识。

在另一实施例中,待查询数据信息可以包括至少一个待查询数据的rowkey。

在另一实施例中,待查询数据信息还可以包括待查询数据在数据库中的起止页;所述数据页信息中还包括与所述数据库中每页数据的单页数据标识对应的页码信息。

在另一实施例中,待查询数据信息还可以包括待查询数据在数据库中的起始页及数据量;所述数据页信息中还包括与所述数据库中每页数据的单页数据标识对应的页码信息及页内数据量。

在另一实施例中,当确定单元602确定出的与所述待查询数据信息对应的单页数据标识至少为两个时,如图9所示,数据请求单元603可以包括:

拉取子单元901,被配置为启用至少两个线程并行在所述内存队列中拉取与所述待查询数据信息对应的不同的单页数据标识。

数据请求子单元902,被配置为占用所述至少两个线程并行向所述数据库请求所拉取的单页数据标识所对应的数据。

上述数据库可以为key值无规律的半结构化存储数据库,如HBASE,其中单页数据标识为marker。

本申请实施例还提供了一种电子设备,包括存储器、收发器和处理器。

处理器与存储器、收发器通过总线相互连接;总线可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。

其中,存储器用于存储一段程序,具体地,程序可以包括程序代码,所 述程序代码包括计算机操作指令。存储器可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。

收发器用于接收数据查询请求,所述数据查询请求中包含待查询数据信息;向所述数据库请求与所述待查询数据信息对应的单页数据标识所对应的数据。

处理器用于读取存储器中的程序代码,执行以下步骤:

根据预先获得的数据库的数据页信息,确定出与所述待查询数据信息对应的单页数据标识;所述数据页信息中至少包括所述数据库中的各单页数据标识;

在所请求到的数据中查询与所述待查询数据信息对应的待查询数据。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

在一个典型的配置中,所述计算机设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体 可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非持续性的电脑可读媒体(transitory media),如调制的数据信号和载波。

本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦 得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本申请所提供的一种数据查询方法和一种数据查询装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1