CN109376174B - 一种选择数据库的方法和装置 - Google Patents
一种选择数据库的方法和装置 Download PDFInfo
- Publication number
- CN109376174B CN109376174B CN201811644145.XA CN201811644145A CN109376174B CN 109376174 B CN109376174 B CN 109376174B CN 201811644145 A CN201811644145 A CN 201811644145A CN 109376174 B CN109376174 B CN 109376174B
- Authority
- CN
- China
- Prior art keywords
- database
- data
- granularity
- data query
- databases
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种选择数据库的方法及装置,通过获得数据查询请求,从预设的多个数据库中获得与数据查询粒度匹配的数据库,如果与数据查询粒度匹配的数据库的数量为一个,将与数据查询粒度匹配的数据库作为目标数据库,如果与数据查询粒度匹配的数据库的数量为至少两个,根据预设规则从与数据查询粒度匹配的数据库中选择一个数据库作为目标数据库,实现从多个数据库中选择一个数据库作为数据交互的数据库,并且数据查询请求中携带有用于表明查询的数据具有的属性的数据查询粒度,使得选择的数据库与数据查询请求的数据的属性相关,实现根据当前数据查询请求的数据的属性动态地选择数据库,提高数据库的利用率以及数据获取速度。
Description
技术领域
本发明属于数据处理领域,更具体的说,尤其涉及一种选择数据库的方法和装置。
背景技术
目前各大网站的数据存储在多个数据库,每个数据库存储着同一份数据,在需要某一数据时,在多个数据库中均能提供该数据时,如果网站同时从多个数据库获取数据会使得页面同时显示多份数据导致页面混乱。
为了解决这一问题,可以通过采用预先设置网站和数据库的对应关系,如虽然一个网站的数据存储在多个数据库中,但是在数据使用过程中,一个网站仅能从与其有对应关系的数据库中获得数据,使得数据库之间工作分明,但是网站与数据库的对应关系是固定的,存在一个数据库顾不暇接,另一个数据库无所事事的现象,使得数据库的利用率低下,数据获取速度降低。
发明内容
有鉴于此,本发明的目的在于提供一种选择数据库的方法及装置,用于提高数据库的利用率以及数据获取速度。
本发明提供一种选择数据库的方法,所述方法包括:
获得数据查询请求,所述数据查询请求中携带有数据查询粒度,所述数据查询粒度用于表明所述数据查询请求查询的数据具有的属性;
从预设的多个数据库中获得与所述数据查询粒度匹配的数据库,与所述数据查询粒度匹配表明所述数据库存储的数据具有所述数据查询粒度表明的属性;
如果所述与所述数据查询粒度匹配的数据库的数量为一个,将所述与所述数据查询粒度匹配的数据库作为目标数据库;
如果所述与所述数据查询粒度匹配的数据库的数量为至少两个,根据预设规则从所述与所述数据查询粒度匹配的数据库中选择一个数据库作为目标数据库。
优选的,所述从预设的多个数据库中获得与所述数据查询粒度匹配的数据库包括:
对所述预设的多个数据库中的任一数据库:确定该数据库存储的数据中是否有所述数据查询请求查询的数据,如果有将该数据库作为备用数据库;
从多个备用数据库中获得与所述数据查询粒度匹配的数据库。
优选的,所述从预设的多个数据库中获得与所述数据查询粒度匹配的数据库包括:
如果所述数据查询粒度为时间粒度且所述数据查询请求指示查询当前单位时间的数据,获得所述多个数据库中每个数据库存储所述数据查询请求指示的数据的进度,所述数据库以所述单位时间进行分区存储数据;
基于所述每个数据库存储所述数据查询请求指示的数据的进度,选择一个数据库作为与所述数据查询粒度匹配的数据库;
如果所述数据查询粒度为时间粒度但所述数据查询请求指示查询特定时间的数据,确定多个数据库中是否有数据库存储有所述特定时间的数据,如果有,将存储有所述特定时间的数据库作为与所述数据查询粒度匹配的数据库,所述特定时间是位于当前单位时间之前的时间;
如果没有存储有所述特定时间的数据的数据库,基于所述每个数据库存储所述数据查询请求指示的数据的进度,选择一个数据库作为与所述数据查询粒度匹配的数据库。
优选的,所述从预设的多个数据库中获得与所述数据查询粒度匹配的数据库包括:
如果所述数据查询粒度为除时间粒度之外的特定粒度,确定多个数据库中是否有数据库存储有所述特定粒度的数据,如果有,将存储有所述特定粒度的数据库作为与所述数据查询粒度匹配的数据库;
如果没有存储有所述特定粒度的数据的数据库,基于多个数据库中每个数据库存储所述数据查询请求指示的数据的进度,选择一个数据库作为与所述数据查询粒度匹配的数据库。
优选的,所述方法还包括:修改所述多个数据库中一个数据库的查询数据表列表,所述查询数据表列表用于记录所述数据库存储的数据表,且记录所述数据表中存储的数据具有的属性。
本发明还提供一种选择数据库的装置,所述装置包括:
获得单元,用于获得数据查询请求,所述数据查询请求中携带有数据查询粒度,所述数据查询粒度用于表明所述数据查询请求查询的数据具有的属性;
匹配单元,用于从预设的多个数据库中获得与所述数据查询粒度匹配的数据库,与所述数据查询粒度匹配表明所述数据库存储的数据具有所述数据查询粒度表明的属性;
选取单元,用于如果所述与所述数据查询粒度匹配的数据库的数量为一个,将所述与所述数据查询粒度匹配的数据库作为目标数据库,以及用于如果所述与所述数据查询粒度匹配的数据库的数量为至少两个,根据预设规则从所述与所述数据查询粒度匹配的数据库中选择一个数据库作为目标数据库。
优选的,所述匹配单元,具体用于对所述预设的多个数据库中的任一数据库:确定该数据库存储的数据中是否有所述数据查询请求查询的数据,如果有将该数据库作为备用数据库,并从多个备用数据库中获得与所述数据查询粒度匹配的数据库。
优选的,所述匹配单元,具体用于基于数据查询请求中的数据查询粒度执行以下步骤:
如果所述数据查询粒度为时间粒度且所述数据查询请求指示查询当前单位时间的数据,获得所述多个数据库中每个数据库存储所述数据查询请求指示的数据的进度,所述数据库以所述单位时间进行分区存储数据;
基于所述每个数据库存储所述数据查询请求指示的数据的进度,选择一个数据库作为与所述数据查询粒度匹配的数据库;
如果所述数据查询粒度为时间粒度但所述数据查询请求指示查询特定时间的数据,确定多个数据库中是否有数据库存储有所述特定时间的数据,如果有,将存储有所述特定时间的数据库作为与所述数据查询粒度匹配的数据库,所述特定时间是位于当前单位时间之前的时间;
如果没有存储有所述特定时间的数据的数据库,基于所述每个数据库存储所述数据查询请求指示的数据的进度,选择一个数据库作为与所述数据查询粒度匹配的数据库。
优选的,所述匹配单元,具体用于如果所述数据查询粒度为除时间粒度之外的特定粒度,确定多个数据库中是否有数据库存储有所述特定粒度的数据,如果有,将存储有所述特定粒度的数据库作为与所述数据查询粒度匹配的数据库;如果没有存储有所述特定粒度的数据的数据库,基于多个数据库中每个数据库存储所述数据查询请求指示的数据的进度,选择一个数据库作为与所述数据查询粒度匹配的数据库。
优选的,所述装置还包括:修改单元,用于修改所述多个数据库中一个数据库的查询数据表列表,所述查询数据表列表用于记录所述数据库存储的数据表,且记录所述数据表中存储的数据具有的属性。
从上述技术方案可知,通过获得数据查询请求,从预设的多个数据库中获得与数据查询粒度匹配的数据库,如果与数据查询粒度匹配的数据库的数量为一个,将与数据查询粒度匹配的数据库作为目标数据库,如果与数据查询粒度匹配的数据库的数量为至少两个,根据预设规则从与数据查询粒度匹配的数据库中选择一个数据库作为目标数据库,实现从多个数据库中选择一个数据库作为数据交互的数据库,并且数据查询请求中携带有用于表明查询的数据具有的属性的数据查询粒度,与数据查询粒度匹配表明数据库存储的数据具有数据查询粒度表明的属性,由此通过数据查询粒度可以使得选择的数据库与数据查询请求的数据的属性相关,实现根据当前数据查询请求的数据的属性动态地选择数据库,相对现有固定数据库的方式,提高数据库的利用率以及数据获取速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种选择数据库的方法的流程图;
图2是本发明实施例提供的另一种选择数据库的方法的流程图;
图3是本发明实施例提供的一种选择数据库的装置的结构示意图;
图4是本发明实施例提供的另一种选择数据库的装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,其出示了本发明实施例提供的一种选择数据库的方法,用于从多个数据库中选择一个数据库,以实现动态地选择数据库,可以包括以下步骤:
S101:获得数据查询请求,数据查询请求中携带有数据查询粒度,其中数据查询粒度用于表明数据查询请求查询的数据具有的属性,由此能够从数据库存储的多种数据中查询具有数据查询粒度表明的属性的数据,例如数据查询粒度用于表明数据查询请求查询的数据具有的属性可以包括但不限于名称、时间、地域和类型等。
在本实施例中,数据所具备的属性中的名称作为数据的概括,说明数据为哪方面的数据,时间为数据产生的时间,地域为与数据相关的地理位置,类型表明存储数据使用的形式,例如名称可以是天气,表明数据为天气方面的数据,时间可以是2018.10.01,地域可以是省份和国家,如北京市,类型可以是视频、语音、文本,表明数据可以采用视频、语音和文本中的至少一种形式来存储。
在本实施例中,数据查询请求可以是当前需要从数据库中获取数据的设备发送,例如终端在输出某个页面时,需要渲染该页面所需的页面数据,此时终端则可以向服务器发送数据查询请求,其中服务器中存储有多个数据库,且每个数据库中存储的数据表可能相同也可能不同,对于相同的数据表来说每个数据库中存储同一份数据但数据的进度有可能不同,所谓数据的进度表明该种数据在该数据库中存储的数据量,之所以存在进度不同是因为每个数据库自身的性能不同导致,数据表则是存储数据的表格,该数据表中记录有所存储数据的属性。
S102:从预设的多个数据库中获得与数据查询粒度匹配的数据库,与数据查询粒度匹配表明数据库存储的数据具有数据查询粒度表明的属性,其中数据查询粒度可以是从数据查询请求中提取。
从预设的多个数据库中获得与数据查询粒度匹配的数据库的一种可行方式是:对预设的多个数据库中的任一数据库:确定该数据库存储的数据中是否有数据查询请求的数据,如果有将该数据库作为备用数据库,从多个备用数据库中获得与数据查询粒度匹配的数据库。
在本实施例中,确定该数据库存储的数据中是否有数据查询请求的数据的一种可行方式是:获取该数据库的查询数据列表,判断在该数据库的查询数据表列表中是否能找到与数据查询请求的数据的数据存储记录,如果在该数据库的查询数据表列表中能找到对应的数据存储记录,则确定数据库存储的数据中有数据查询请求的数据,否则数据库存储的数据中没有数据查询请求的数据。
其中,查询数据表列表为记录数据库存储的数据表,且记录数据表中存储的数据具有的属性,以通过记录数据具有的属性能够获知数据表存储有哪些数据,这些数据具有哪些方面,例如一个数据表中数据具有的属性的取值分别是:名称是天气、时间是2018.10.01,地域是北京市,类型是视频,则说明在该数据表中以视频方式记录了北京市在2018.10.01的天气数据。
相对应的判断在该数据库的查询数据表列表中是否能找到与数据查询请求的数据的数据存储记录的一种可行方式是:判断数据查询请求的数据所具有的属性与查询数据列表记录数据表中存储的数据具有的属性之间是否存在一致的属性,如果存在,则表明该数据库的查询数据表列表中能找到与数据查询请求的数据的数据存储记录,否则表明该数据库的查询数据表列表中不能找到与数据查询请求的数据的数据存储记录。
将预设的多个数据库和多个备用数据库分别作为当前数据库,从多个当前数据库中获得与数据查询粒度匹配的数据库的可行方式如下,其中多个当前数据库特指预设的多个数据库或者多个备用数据库,而不能将预设的多个数据库和多个备用数据库混合:
一种可行方式是:如果数据查询粒度为时间粒度且数据查询请求是指查询当前单位时间的数据,获得多个数据库中每个数据库存储数据查询请求指示的数据的进度,其中数据库以单位时间进行区分存储数据,并基于每个数据库存储数据查询请求指示的数据的进度,选择一个数据库作为与数据查询粒度匹配的数据库。
可以理解为:因为多个数据库中存储同样的数据,所以进度可以指数据库中存储的数据量,也就是说,第一个数据库中存储的储数据量大于第二个数据库中存储数据量,则说明第一个数据库的进度比第二个数据库的进度快,由于数据库以单位时间区分存储数据,所以需要从数据库中得到与时间粒度匹配的单位时间存储的数据,得到多个匹配的数据库,再基于每个数据库所存储数据的进度从多个匹配的数据库中选择一个,如选择多个匹配的数据库中获取数据库进度最快的数据库作为与数据查询粒度匹配的数据库,进度最快是指所存储数据的数据量最多。
其中,单位时间可以是但不限于以周、天、小时和分钟等中的一种,数据库中的每个存储区(存储数据的区域)对应一个单位时间。在此,以单位时间为当天分小时来举例说明:数据库以当天分小时进行区分存储数据,则数据库中的每个存储区对应一个小时,由此说明数据库中的每个存储区存储一个小时的数据,如一个存储区存储当天15点的数据,但是该存储区在存储数据时不会记录该存储区当前存储到哪个时间点,因此在以单位时间存储数据时需要基于存储的进度来匹配数据库。
如果数据查询粒度为时间粒度但数据查询请求指示查询特定时间的数据,确定多个数据库中是否有数据库存储有特定时间的数据,如果有,将存储有特定时间的数据库作为与数据查询粒度匹配的数据库;如果没有存储有特定时间的数据的数据库,基于每个数据库存储数据查询请求指示的数据的进度,选择一个数据库作为与数据查询粒度匹配的数据库。
其中特定时间是位于当前单位时间之前的时间。也就是说特定时间是当前单位时间之前的历史时间,如可以是一个历史时间段,例如特定时间可以是当前单位时间之前的过去三天,则相对于这一特定时间来说,需要从多个数据库中查找到存储有过去三天时间的数据的数据库,如果能够查找到说明多个数据库中有数据库存储该特定时间的数据,进而将存储该特定时间的数据库作为数据查询粒度匹配的数据库。
在基于特定时间查询时,可以从查询数据表列表中记录的各个数据库所存储的数据表的时间属性中查询,如果时间属性的取值涵盖该特定时间,则说明涵盖该特定时间的数据库中存储有该特定时间的数据。如果没有涵盖该特定时间的数据库,需要获取每个数据库存储该数据查询请求指示的数据的进度,以基于进度选取,如上述选取进度最快的数据库作为与数据查询粒度匹配的数据库,当然也可以选取进度在某个范围的数据库作为与数据查询粒度匹配的数据库。
另一种可行方式是:如果数据查询粒度为除时间粒度之外的特定粒度,确定多个数据库中是否有数据库存储有特定粒度的数据,如果有,将存储有特定粒度的数据库作为与数据查询粒度匹配的数据库,如果没有存储有特定粒度的数据的数据库,基于多个数据库中每个数据库存储数据查询请求指示的数据的进度,选择一个数据库作为与数据查询粒度匹配的数据库。
其中特定粒度是除时间粒度之外的一个粒度,如特定粒度能够表明除时间属性之外的其他属性中至少一个属性,例如对于上述名称、时间、地域和类型这些属性来说,可以从这些属性中选取一个属性来设置特定粒度。例如从这些属性中选取“地域”这一属性,则设置的特定粒度是用来查找具有地域属性的数据,进一步的在特定粒度中还可以设置地域属性的属性值,以查找具有特定属性值的数据。
仍以特定粒度用于查找具有地域属性的数据,且该地域属性的属性值可以为中国,那么在基于该特定粒度查找数据库时,需要确定多个数据库中是否有数据库存储有与中国相关的数据,如中国的天气数据、中国的经济数据和中国的军事数据等等,如果有,则将存储有与中国相关的数据的数据库作为与数据查询粒度匹配的数据库。
如果没有,则也需要同时间粒度一样,获取每个数据库存储该数据查询请求指示的数据的进度,以基于进度选取数据库,如上述选取进度最快的数据库作为与数据查询粒度匹配的数据库,当然也可以选取进度在某个范围的数据库作为与数据查询粒度匹配的数据库。
S103:如果与数据查询粒度匹配的数据库的数量为一个,将与数据查询粒度匹配的数据库为目标数据库,也就是说,当数据查询粒度匹配的数据库仅有一个的情况下不需要再次进行选择,而是直接将该唯一的与数据查询粒度匹配的数据库确定为目标数据库。
S104:如果与数据查询粒度匹配的数据库的数量为至少两个,根据预设规则从与数据查询粒度匹配的数据库中选择一个数据库作为目标数据库。
在本实施例中,预设规则是从与数据查询粒度匹配的数据库中再次选取数据库的规则,该预设规则可根据实际应用而定,例如在本实施例中根据预设规则选择一个数据库的一种方式是:每个数据库具有预先设置的优先级,则可以根据每个数据库预先设置的优先级选择数据库,如将与数据查询粒度匹配的数据库中选取优先级最高的数据库作为目标数据库。
其中预先设置的优先级可根据数据库的性能决定,将高性能的数据库的优先级设置为高,低性能的数据库的优先级设置为低,而数据库性能的高低与数据库中数据读取速度有关,具体的如果数据读取速度快,可以视为数据库的性能高,由此通过优先级的方式选取目标数据库,可以在多数情况下将高性能的数据库作为目标数据库,将低性能的数据库作为备份数据库。此外在本实施例中,多个数据库的类型可以不同,如多个数据库可以是Impala,Infobright和Mysql等类型的数据库,以同时支持多类型数据库的使用,也可以测试多种类型数据库的性能。
在本实施例中根据预设规则选择一个数据库的另一种方式是:确定与数据查询粒度匹配的数据库具有的所有属性,基于与数据查询粒度匹配的数据库具有的属性,确定目标数据库,如将与数据查询粒度匹配的数据库中具有的属性最多的数据库作为目标数据库,通过此方式可以使得从目标数据库中得到的数据涵盖的内容比较全面。
从上述技术方案可知,通过获得数据查询请求,从预设的多个数据库中获得与数据查询粒度匹配的数据库,如果与数据查询粒度匹配的数据库的数量为一个,将与数据查询粒度匹配的数据库作为目标数据库,如果与数据查询粒度匹配的数据库的数量为至少两个,根据预设规则从与数据查询粒度匹配的数据库中选择一个数据库作为目标数据库,实现从多个数据库中选择一个数据库作为数据交互的数据库,并且数据查询请求中携带有用于表明查询的数据具有的属性的数据查询粒度,与数据查询粒度匹配表明数据库存储的数据具有数据查询粒度表明的属性,由此通过数据查询粒度可以使得选择的数据库与数据查询请求的数据的属性相关,实现根据当前数据查询请求的数据的属性动态地选择数据库,相对现有固定数据库的方式,提高数据库的利用率以及数据获取速度。
此外,本实施例中还可以包括:修改多个数据库中一个数据库的查询数据表列表,查询数据表列表用于记录数据库存储的数据表,且记录数据表中存储的数据具有的属性。
如果多个数据库中的任一个数据库增加数据,则该数据库的查询数据表列表中增加所增加数据具有的属性,如果多个数据库中的任一个数据库删除数据,则该数据库的查询数据表列表删除所删除数据具有的属性。
此外在本实施例中,如果多个数据库中有一个数据库为新添加的数据库,这一新添加的数据库需要进行数据测试以获得数据库的性能,那么对于这一新添加的数据库,可以在本实施例中修改该数据库的查询数据表列表,使得该数据库的查询数据表列表中记录的数据表的数量少于其他数据库的查询数据表列表中记录的数据表的数量,这样可以在保证测试新添加的数据库的同时还可以保证其他数据库的数据正常使用。并且为了加快新添加的数据库的测试,可以将该新添加的数据库的优先级设置成高于其他数据库的优先级,这样在通过查询数据表列表和优先级,会增大将该新添加的数据库作为目标数据库的几率,从而缩短新添加的数据库的测试时间,以加快对新添加的数据库的测试。
下面从不同数据查询粒度对本实施例提供的选择数据库的方法进行说明,其中不同数据查询粒度包括:时间粒度和除时间粒度之外的特定粒度,并且时间粒度针对两方面,一方面是查询当前单位时间的数据,另一方面是查询特定时间的数据,具体流程如图2所示,可以包括以下步骤:
S201:获取数据查询请求,数据查询请求中携带有数据查询粒度,其中数据查询粒度用于表明数据查询请求查询的数据具有的属性。
S202:基于数据查询请求,从预设的多个数据库中获得备用数据库。
S203:判断数据查询请求中的数据查询粒度是否为时间粒度且数据查询粒度指示查询当前单位时间的数据。
S204:如果数据查询粒度为时间粒度且数据查询粒度指示查询当前单位时间的数据,基于每个数据库存储数据查询请求指示的数据的进度,选择一个数据库作为与数据查询粒度匹配的数据库。
S205:如果数据查询粒度为时间粒度但数据查询粒度指示查询特定时间的数据,判断多个数据库中是否有数据库存储有特定时间的数据,如果有执行步骤S206,如果没有执行步骤S207。
S206:将存储有特定时间的数据库作为与数据查询粒度匹配的数据库。
S207:基于每个数据库存储数据查询请求指示的数据的进度,选择一个数据库作为与数据查询粒度匹配的数据库。
S208:如果数据查询粒度为除时间粒度之外的特定粒度,判断多个数据库中是否有数据库存储有特定粒度的数据,如果有执行步骤S209,如果没有执行步骤S210。
S209:将存储有特定粒度的数据库作为与数据查询粒度匹配的数据库。
S210:基于多个数据库中每个数据库存储数据查询请求指示的数据的进度,选择一个数据库作为与数据查询粒度匹配的数据库。
S211:从与数据查询粒度匹配的数据库中确定目标数据库,具体的如果与数据查询粒度匹配的数据库的数量为一个,将与数据查询粒度匹配的数据库为目标数据库;如果与数据查询粒度匹配的数据库的数量为至少两个,根据预设规则从与数据查询粒度匹配的数据库中选择一个数据库作为目标数据库。
对于上述S201至S211的具体过程请参阅上述实施例,对此本实施例不再详述。
从上述技术方案可知,通过数据查询粒度可以从不同属性来查询数据库,这样可以在不同的用户需求下查找该用户需求所需属性的数据,当然在实际应用中还可以结合多种属性来查询,满足不同的用户需求。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
与上述方法实施例相对应,本发明实施例还提供一种选择数据库的装置,其结构如图3所示,可以包括:获得单元11、匹配单元12和选取单元13。
获得单元11,用于获得数据查询请求,数据查询请求中携带有数据查询粒度,数据查询粒度用于表明数据查询请求查询的数据具有的属性。对于数据查询粒度的说明以及数据查询请求的获取请参阅方法实施例中的说明,对此不再阐述。
匹配单元12,用于从预设的多个数据库中获得与数据查询粒度匹配的数据库,其中与数据查询粒度匹配表明数据库存储的数据具有数据查询粒度表明的属性。
在本实施例中,匹配单元12获得与数据查询粒度匹配的数据库的一种可行方式是:对预设的多个数据库中的任一数据库:确定该数据库存储的数据中是否有数据查询请求的数据,如果有将该数据库作为备用数据库,从多个备用数据库中获得与数据查询粒度匹配的数据库。对于选取备用数据库的方式请参阅方法实施例中的说明,对此不再阐述。
假设将上述多个备用数据库以及预设的多个数据库分别作为当前数据库,匹配单元12从多个当前数据库中获得与数据查询粒度匹配的数据库的可行方式如下,其中多个当前数据库特指预设的多个数据库或者多个备用数据库,而不能将预设的多个数据库和多个备用数据库混合:
一种可行方式是:如果数据查询粒度为时间粒度且数据查询请求是指查询当前单位时间的数据,获得多个数据库中每个数据库存储数据查询请求指示的数据的进度,其中数据库以单位时间进行区分存储数据,并基于每个数据库存储数据查询请求指示的数据的进度,选择一个数据库作为与数据查询粒度匹配的数据库。
如果数据查询粒度为时间粒度但数据查询请求指示查询特定时间的数据,确定多个数据库中是否有数据库存储有特定时间的数据,如果有,将存储有特定时间的数据库作为与数据查询粒度匹配的数据库;如果没有存储有特定时间的数据的数据库,基于每个数据库存储数据查询请求指示的数据的进度,选择一个数据库作为与数据查询粒度匹配的数据库。
另一种可行方式是:如果数据查询粒度为除时间粒度之外的特定粒度,确定多个数据库中是否有数据库存储有特定粒度的数据,如果有,将存储有特定粒度的数据库作为与数据查询粒度匹配的数据库,如果没有存储有特定粒度的数据的数据库,基于多个数据库中每个数据库存储数据查询请求指示的数据的进度,选择一个数据库作为与数据查询粒度匹配的数据库。
对于上述两种方式的说明请参阅方法实施例,此处不再详述。
选取单元13,用于如果与数据查询粒度匹配的数据库的数量为一个,将与数据查询粒度匹配的数据库作为目标数据库,以及用于如果与数据查询粒度匹配的数据库的数量为至少两个,根据预设规则从与数据查询粒度匹配的数据库中选择一个数据库作为目标数据库。
从上述技术方案可知,通过获得数据查询请求,从预设的多个数据库中获得与数据查询粒度匹配的数据库,如果与数据查询粒度匹配的数据库的数量为一个,将与数据查询粒度匹配的数据库作为目标数据库,如果与数据查询粒度匹配的数据库的数量为至少两个,根据预设规则从与数据查询粒度匹配的数据库中选择一个数据库作为目标数据库,实现从多个数据库中选择一个数据库作为数据交互的数据库,并且数据查询请求中携带有用于表明查询的数据具有的属性的数据查询粒度,与数据查询粒度匹配表明数据库存储的数据具有数据查询粒度表明的属性,由此通过数据查询粒度可以使得选择的数据库与数据查询请求的数据的属性相关,实现根据当前数据查询请求的数据的属性动态地选择数据库,相对现有固定数据库的方式,提高数据库的利用率以及数据获取速度。
上述选择数据库的装置还可以包括:修改单元14,如图4所示。其中修改单元14,用于修改多个数据库中一个数据库的查询数据表列表,查询数据表列表用于记录数据库存储的数据表,且记录数据表中存储的数据具有的属性。基于此,如果多个数据库中有一个数据库为新添加的数据库,这一新添加的数据库需要进行数据测试以获得数据库的性能,那么对于这一新添加的数据库,可以在本实施例中修改该数据库的查询数据表列表,使得该数据库的查询数据表列表中记录的数据表的数量少于其他数据库的查询数据表列表中记录的数据表的数量,这样可以在保证测试新添加的数据库的同时还可以保证其他数据库的数据正常使用。并且为了加快新添加的数据库的测试,可以将该新添加的数据库的优先级设置成高于其他数据库的优先级,这样在通过查询数据表列表和优先级,会增大将该新添加的数据库作为目标数据库的几率,从而缩短新添加的数据库的测试时间,以加快对新添加的数据库的测试。
此外,本发明实施例还提供一种存储介质,该存储介质上存储有计算机程序代码,该计算机程序代码执行时实现上述选择数据库的方法。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种选择数据库的方法,其特征在于,所述方法包括:
获得数据查询请求,所述数据查询请求中携带有数据查询粒度,所述数据查询粒度用于表明所述数据查询请求查询的数据具有的属性;
从预设的多个数据库中获得与所述数据查询粒度匹配的数据库,与所述数据查询粒度匹配表明所述数据库存储的数据具有所述数据查询粒度表明的属性;
如果所述与所述数据查询粒度匹配的数据库的数量为一个,将所述与所述数据查询粒度匹配的数据库作为目标数据库;
如果所述与所述数据查询粒度匹配的数据库的数量为至少两个,根据预设规则从所述与所述数据查询粒度匹配的数据库中选择一个数据库作为目标数据库;
其中,所述预设规则包括:
根据各所述数据库预先设置的优先级,从所述与所述数据查询粒度匹配的数据库中选择数据库;
或者,
确定与所述数据查询粒度匹配的数据库具有的所有属性;
基于与所述数据查询粒度匹配的数据库具有的属性,从所述与所述数据查询粒度匹配的数据库中选择数据库。
2.根据权利要求1所述的方法,其特征在于,所述从预设的多个数据库中获得与所述数据查询粒度匹配的数据库包括:
对所述预设的多个数据库中的任一数据库:确定该数据库存储的数据中是否有所述数据查询请求查询的数据,如果有将该数据库作为备用数据库;
从多个备用数据库中获得与所述数据查询粒度匹配的数据库。
3.根据权利要求1所述的方法,其特征在于,所述从预设的多个数据库中获得与所述数据查询粒度匹配的数据库包括:
如果所述数据查询粒度为时间粒度且所述数据查询请求指示查询当前单位时间的数据,获得所述多个数据库中每个数据库存储所述数据查询请求指示的数据的进度,所述数据库以所述单位时间进行分区存储数据;
基于所述每个数据库存储所述数据查询请求指示的数据的进度,选择一个数据库作为与所述数据查询粒度匹配的数据库;
如果所述数据查询粒度为时间粒度但所述数据查询请求指示查询特定时间的数据,确定多个数据库中是否有数据库存储有所述特定时间的数据,如果有,将存储有所述特定时间的数据库作为与所述数据查询粒度匹配的数据库,所述特定时间是位于当前单位时间之前的时间;
如果没有存储有所述特定时间的数据的数据库,基于所述每个数据库存储所述数据查询请求指示的数据的进度,选择一个数据库作为与所述数据查询粒度匹配的数据库。
4.根据权利要求1所述的方法,其特征在于,所述从预设的多个数据库中获得与所述数据查询粒度匹配的数据库包括:
如果所述数据查询粒度为除时间粒度之外的特定粒度,确定多个数据库中是否有数据库存储有所述特定粒度的数据,如果有,将存储有所述特定粒度的数据库作为与所述数据查询粒度匹配的数据库;
如果没有存储有所述特定粒度的数据的数据库,基于多个数据库中每个数据库存储所述数据查询请求指示的数据的进度,选择一个数据库作为与所述数据查询粒度匹配的数据库。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:修改所述多个数据库中一个数据库的查询数据表列表,所述查询数据表列表用于记录所述数据库存储的数据表,且记录所述数据表中存储的数据具有的属性。
6.一种选择数据库的装置,其特征在于,所述装置包括:
获得单元,用于获得数据查询请求,所述数据查询请求中携带有数据查询粒度,所述数据查询粒度用于表明所述数据查询请求查询的数据具有的属性;
匹配单元,用于从预设的多个数据库中获得与所述数据查询粒度匹配的数据库,与所述数据查询粒度匹配表明所述数据库存储的数据具有所述数据查询粒度表明的属性;
选取单元,用于如果所述与所述数据查询粒度匹配的数据库的数量为一个,将所述与所述数据查询粒度匹配的数据库作为目标数据库,以及用于如果所述与所述数据查询粒度匹配的数据库的数量为至少两个,根据预设规则从所述与所述数据查询粒度匹配的数据库中选择一个数据库作为目标数据库;
其中,所述预设规则包括:
根据各所述数据库预先设置的优先级,从所述与所述数据查询粒度匹配的数据库中选择数据库;
或者,
确定与所述数据查询粒度匹配的数据库具有的所有属性;
基于与所述数据查询粒度匹配的数据库具有的属性,从所述与所述数据查询粒度匹配的数据库中选择数据库。
7.根据权利要求6所述的装置,其特征在于,所述匹配单元,具体用于对所述预设的多个数据库中的任一数据库:确定该数据库存储的数据中是否有所述数据查询请求查询的数据,如果有将该数据库作为备用数据库,并从多个备用数据库中获得与所述数据查询粒度匹配的数据库。
8.根据权利要求6所述的装置,其特征在于,所述匹配单元,具体用于基于数据查询请求中的数据查询粒度执行以下步骤:
如果所述数据查询粒度为时间粒度且所述数据查询请求指示查询当前单位时间的数据,获得所述多个数据库中每个数据库存储所述数据查询请求指示的数据的进度,所述数据库以所述单位时间进行分区存储数据;
基于所述每个数据库存储所述数据查询请求指示的数据的进度,选择一个数据库作为与所述数据查询粒度匹配的数据库;
如果所述数据查询粒度为时间粒度但所述数据查询请求指示查询特定时间的数据,确定多个数据库中是否有数据库存储有所述特定时间的数据,如果有,将存储有所述特定时间的数据库作为与所述数据查询粒度匹配的数据库,所述特定时间是位于当前单位时间之前的时间;
如果没有存储有所述特定时间的数据的数据库,基于所述每个数据库存储所述数据查询请求指示的数据的进度,选择一个数据库作为与所述数据查询粒度匹配的数据库。
9.根据权利要求6所述的装置,其特征在于,所述匹配单元,具体用于如果所述数据查询粒度为除时间粒度之外的特定粒度,确定多个数据库中是否有数据库存储有所述特定粒度的数据,如果有,将存储有所述特定粒度的数据库作为与所述数据查询粒度匹配的数据库;如果没有存储有所述特定粒度的数据的数据库,基于多个数据库中每个数据库存储所述数据查询请求指示的数据的进度,选择一个数据库作为与所述数据查询粒度匹配的数据库。
10.根据权利要求6所述的装置,其特征在于,所述装置还包括:修改单元,用于修改所述多个数据库中一个数据库的查询数据表列表,所述查询数据表列表用于记录所述数据库存储的数据表,且记录所述数据表中存储的数据具有的属性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811644145.XA CN109376174B (zh) | 2018-12-30 | 2018-12-30 | 一种选择数据库的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811644145.XA CN109376174B (zh) | 2018-12-30 | 2018-12-30 | 一种选择数据库的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109376174A CN109376174A (zh) | 2019-02-22 |
CN109376174B true CN109376174B (zh) | 2021-04-27 |
Family
ID=65372002
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811644145.XA Active CN109376174B (zh) | 2018-12-30 | 2018-12-30 | 一种选择数据库的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109376174B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113821708A (zh) * | 2020-06-19 | 2021-12-21 | 广东美的厨房电器制造有限公司 | 烹饪信息的获取方法、获取装置、终端和存储介质 |
CN116821138B (zh) * | 2023-08-24 | 2023-12-15 | 腾讯科技(深圳)有限公司 | 一种数据处理方法及相关设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750384A (zh) * | 2012-06-28 | 2012-10-24 | 用友软件股份有限公司 | 从多数据库引擎获取数据的装置和方法 |
CN103403707A (zh) * | 2010-12-28 | 2013-11-20 | 思杰***有限公司 | 用于数据库代理请求交换的***和方法 |
CN105389352A (zh) * | 2015-10-30 | 2016-03-09 | 北京奇艺世纪科技有限公司 | 日志处理方法和装置 |
CN105573996A (zh) * | 2014-10-09 | 2016-05-11 | 阿里巴巴集团控股有限公司 | 数据库处理方法、装置及*** |
WO2018080187A1 (ko) * | 2016-10-26 | 2018-05-03 | 주식회사 리얼타임테크 | 내장형 데이터베이스 시스템의 다중 데이터베이스 운용 장치 및 그 방법 |
CN108427684A (zh) * | 2017-02-14 | 2018-08-21 | 华为技术有限公司 | 数据查询方法、装置及计算设备 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5926808A (en) * | 1997-07-25 | 1999-07-20 | Claritech Corporation | Displaying portions of text from multiple documents over multiple databases related to a search query in a computer network |
CN1641639A (zh) * | 2004-01-12 | 2005-07-20 | 英业达股份有限公司 | 查询多种数据库的***及其方法 |
CN101458782A (zh) * | 2007-12-11 | 2009-06-17 | 鸿富锦精密工业(深圳)有限公司 | 品质管理横向整合***及方法 |
CN104539713B (zh) * | 2014-12-31 | 2018-10-09 | 北京奇虎科技有限公司 | 业务请求处理方法和装置 |
CN105138143A (zh) * | 2015-08-28 | 2015-12-09 | 百度在线网络技术(北京)有限公司 | 词语数据库的获取方法及装置 |
CN106991029A (zh) * | 2016-01-21 | 2017-07-28 | 阿里巴巴集团控股有限公司 | 一种sequence数据的获取方法及装置 |
CN108984569A (zh) * | 2017-06-05 | 2018-12-11 | 中兴通讯股份有限公司 | 数据库切换方法、***和计算机可读存储介质 |
-
2018
- 2018-12-30 CN CN201811644145.XA patent/CN109376174B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103403707A (zh) * | 2010-12-28 | 2013-11-20 | 思杰***有限公司 | 用于数据库代理请求交换的***和方法 |
CN102750384A (zh) * | 2012-06-28 | 2012-10-24 | 用友软件股份有限公司 | 从多数据库引擎获取数据的装置和方法 |
CN105573996A (zh) * | 2014-10-09 | 2016-05-11 | 阿里巴巴集团控股有限公司 | 数据库处理方法、装置及*** |
CN105389352A (zh) * | 2015-10-30 | 2016-03-09 | 北京奇艺世纪科技有限公司 | 日志处理方法和装置 |
WO2018080187A1 (ko) * | 2016-10-26 | 2018-05-03 | 주식회사 리얼타임테크 | 내장형 데이터베이스 시스템의 다중 데이터베이스 운용 장치 및 그 방법 |
CN108427684A (zh) * | 2017-02-14 | 2018-08-21 | 华为技术有限公司 | 数据查询方法、装置及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109376174A (zh) | 2019-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11580168B2 (en) | Method and system for providing context based query suggestions | |
CN108200220B (zh) | 一种数据同步方法、服务器及存储介质 | |
JP4005425B2 (ja) | 検索結果ランキング変更処理プログラム、検索結果ランキング変更処理プログラム記録媒体、およびコンテンツ検索処理方法 | |
JP5661104B2 (ja) | 検索エンジンインデクシング及びインデックスを使用する検索のための方法とシステム | |
CN106156244B (zh) | 一种信息搜索导航方法及装置 | |
US10007725B2 (en) | Analyzing user searches of verbal media content | |
CN106777179B (zh) | 一种文档在线预览方法及*** | |
CN105608117A (zh) | 一种信息推荐方法及装置 | |
US8352541B2 (en) | Identifying relevant data from unstructured feeds | |
JP6185379B2 (ja) | レコメンド装置およびレコメンド方法 | |
US20150186553A1 (en) | Accessing information content in a database platform using metadata | |
WO2014108038A1 (zh) | 一种生成常用网址的客户端、服务器、***和方法 | |
CN109376174B (zh) | 一种选择数据库的方法和装置 | |
US20150106717A1 (en) | Presenting content related to current media consumption | |
US10877981B1 (en) | Stopword inclusion for searches | |
CN110928895B (zh) | 一种数据查询、数据表建立方法、装置及设备 | |
CN111008198A (zh) | 业务数据获取方法、装置、存储介质、电子设备 | |
JP2020160494A (ja) | 情報処理装置、文書管理システム及びプログラム | |
CN110598009B (zh) | 查找作品的方法、装置、电子设备及存储介质 | |
CN111143711A (zh) | 对象搜索方法及*** | |
CN111427910A (zh) | 数据处理方法及装置 | |
CN106951428B (zh) | 一种页面初始化方法及装置 | |
US20150106351A1 (en) | Automated composition of topical media | |
CN107885828B (zh) | 查找匹配对象的方法、装置、存储介质及电子设备 | |
CN111611282A (zh) | 用于查询数据的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |