本发明涉及数据存储技术领域,特别涉及一种索引创建方法、装置、存储服务器以及计算机可读存储介质。
背景技术:
在分布式的大数据处理场景中,如果要将大量且持续不断的数据写入数据存储服务器,以便于用户对数据进行存储和查询。
为了保证数据的查询速度,当索引中的文档量到达一定量时需要对其进行分索引操作,相关技术中,公布了一种索引创建方法,当存储的数据量到达一定值时,将该存储的数据作为一个数据组,生成对应的索引;随着时间的推移,存储的数据越来越多,获得的索引越来越多,每个索引对应的数据量相同;当需要对数据进行查询时,通过索引,查询到对应的数据。
但是,采用现有的索引创建方法,利用获得的索引进行数据查询时,数据查询效率较低。
技术实现要素:
本发明的主要目的是提供一种索引创建方法、装置、存储服务器以及计算机可读存储介质,旨在解决现有技术中采用现有的索引创建方法,利用获得的索引进行数据查询时,数据查询效率较低的技术问题。
为实现上述目的,本发明提出一种索引创建方法,应用于存储服务器;所述方法包括以下步骤:
在接收到待存储数据时,将所述待存储数据存储于所述存储服务器;
在所述待存储数据满足预设条件时,在所述存储服务器的可用索引中确定出与所述待存储数据对应的选定索引;
在所述选定索引对应的选定已存储数据的数据量达到预设阈值时,基于所述待存储数据对应的待写入索引信息和时间信息,创建新的可用索引。
可选的,所述基于所述待存储数据对应的待写入索引信息和时间信息,创建新的可用索引的步骤包括:
基于所述待写入索引信息、所述待存储数据的当前存储时间和预设时间,创建所述新的可用索引。
可选的,所述方法还包括:
在所述选定索引对应的选定已存储数据的数据量未超过预设阈值时,利用所述待写入索引信息对所述选定索引进行更新,以获得更新后的选定索引。
可选的,所述选定索引包括所述选定已存储数据的初始存储时间和所述预设时间组成的时间区间;所述基于所述待写入索引信息、所述待存储数据的当前存储时间和预设时间,创建所述新的可用索引的步骤之前,所述方法还包括:
利用所述当前存储时间对所述时间区间中的所述预设时间进行更新,以获得更新后的选定索引。
可选的,所述待存储数据具有顺序标识;所述基于所述待写入索引信息、所述待存储数据的当前存储时间和预设时间,创建所述新的可用索引的步骤之前,所述方法还包括:
利用预设标识对所述顺序标识进行替换,以获得新的待存储数据;
所述基于所述待写入索引信息、所述待存储数据的当前存储时间和预设时间,创建所述新的可用索引的步骤包括:
基于所述新的待存储数据具有的所述预设标识,利用所述待写入索引信息、所述当前存储时间和预设时间,创建所述新的可用索引。
可选的,所述待存储数据为经过sparkstreaming处理后的rdd数据。
可选的,所述存储服务器为elasticsearch。
此外,为实现上述目的,本发明还提出了一种索引创建装置,应用于存储服务器;所述装置包括:
接收模块,用于在接收到待存储数据时,将所述待存储数据存储于所述存储服务器;
确定模块,用于在所述待存储数据满足预设条件时,在所述存储服务器的可用索引中确定出与所述待存储数据对应的选定索引;
更新模块,用于在所述选定索引对应的选定已存储数据的数据量达到预设阈值时,基于所述待存储数据对应的待写入索引信息和时间信息,创建新的可用索引。
此外,为实现上述目的,本发明还提出了一种存储服务器,所述存储服务器包括:存储器、处理器及存储在所述存储器上并在所述处理器上运行索引创建程序,所述索引创建程序被所述处理器执行时实现如上述任一项所述的索引创建方法的步骤。
此外,为实现上述目的,本发明还提出了一种计算机可读存储介质,所述计算机可读存储介质上存储有索引创建程序,所述索引创建程序被处理器执行时实现如上述任一项所述的索引创建方法的步骤。
本发明技术方案提出了一种索引创建方法,应用于存储服务器;所述方法包括以下步骤:在接收到待存储数据时,将所述待存储数据存储于所述存储服务器;在所述存储服务器的可用索引中确定出与所述待存储数据对应的选定索引;在所述选定索引对应的选定已存储数据的数据量达到预设阈值时,基于所述待存储数据对应的待写入索引名和时间信息,创建新的可用索引。
现有的索引创建方法中,按照存储数据的数据量分索引,即,当一个索引对应的已存储数据的数据量达到阈值时,生成新的可用索引,但是,利用生成的索引进行数据查询时,需要基于需求数据的需求索引信息,对与需求索引信息对应的全部索引进行扫描,以查询到需求数据,导致数据查询的效率较低;利用本发明的获得方法,可用索引对应的已存储数据的数据量达到预设阈值时,即基于所述待存储数据对应的待写入索引信息和时间信息,创建新的可用索引,可用索引具有时间信息,在利用本发明的可以用索引进行数据搜索时,基于需求数据的需求索引信息,确定对应的全部需求索引,并利用需求数据的需求时间,在全部需求索引中查找与需求时间对应的待查找索引,并利用待查找对应的已存储数据中进行数据查询即可,数据查询速度较快,所以,利用本发明的索引创建方法,利用获得的索引进行数据查询时,查询效率较高。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1为本发明实施例方案涉及的硬件运行环境的存储服务器结构示意图;
图2为本发明索引创建方法第一实施例的流程示意图;
图3为本发明索引创建装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的存储服务器结构示意图。
存储服务器可以是移动电话、智能电话、笔记本电脑、数字广播接收器、个人数字助理(pda)、平板电脑(pad)等用户设备(userequipment,ue)、手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其它处理设备、移动台(mobilestation,ms)等。存储服务器可能被称为用户终端、便携式终端、台式终端等。
通常,存储服务器包括:至少一个处理器301、存储器302以及存储在所述存储器上并可在所述处理器上运行的索引创建程序,所述索引创建程序配置为实现如前所述的索引创建方法的步骤。
处理器301可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器301可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器301也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器301可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。处理器301还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关索引创建方法操作,使得索引创建方法模型可以自主训练学习,提高效率和准确度。
存储器302可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器302还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器302中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器301所执行以实现本申请中方法实施例提供的索引创建方法。
在一些实施例中,终端还可选包括有:通信接口303和至少一个外围设备。处理器301、存储器302和通信接口303之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与通信接口303相连。具体地,外围设备包括:射频电路304、显示屏305和电源306中的至少一种。
通信接口303可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器301和存储器302。在一些实施例中,处理器301、存储器302和通信接口303被集成在同一芯片或电路板上;在一些其他实施例中,处理器301、存储器302和通信接口303中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路304用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路304通过电磁信号与通信网络以及其他通信设备进行通信。射频电路304将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路304包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路304可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wirelessfidelity,无线保真)网络。在一些实施例中,射频电路304还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏305用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏305是触摸显示屏时,显示屏305还具有采集在显示屏305的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器301进行处理。此时,显示屏305还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏305可以为一个,电子设备的前面板;在另一些实施例中,显示屏305可以为至少两个,分别设置在电子设备的不同表面或呈折叠设计;在再一些实施例中,显示屏305可以是柔性显示屏,设置在电子设备的弯曲表面上或折叠面上。甚至,显示屏305还可以设置成非矩形的不规则图形,也即异形屏。显示屏305可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。
电源306用于为电子设备中的各个组件进行供电。电源306可以是交流电、直流电、一次性电池或可充电电池。当电源306包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
本领域技术人员可以理解,图1中示出的结构并不构成对存储服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有索引创建程序,所述索引创建程序被处理器执行时实现如上文所述的索引创建方法的步骤。因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。确定为示例,程序指令可被部署为在一个存储服务器上执行,或者在位于一个地点的多个存储服务器上执行,又或者,在分布在多个地点且通过通信网络互连的多个存储服务器备上执行。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的计算机可读存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。
先关技术中公布了三种索引创建方法:
按照固定时间分索引:比如一天生成一个索引。缺点是如果每天的数据量太小会导致单个分片的存储数据量太小而浪费资源,而如果数据量太大又可能导致单个分片的数据量过大导致查询效率过低,且按照固定时间进行分索引可能导致某天一天的索引太大,或者某一天的索引的数据量又太小。这样查询效率就没有办法保证一致。
按照文档量来分索引:虽然每个索引的大小基本可以保证一致了,但是在对某时间范围内的数据进行查询时是没有优势的,因为没有严格的时间划分,不清楚每个索引中所包含的时间范围,因此如果根据时间进行条件查询会扫描所有索引,会影响查询效率;
按照索引的存储大小分索引:这种方式跟按照文档量来分索引的特点差不多,缺点也是如果根据时间查询的话也会扫描全部的索引。
基于上述硬件结构,提出本发明索引创建方法的实施例。
参照图2,图2为本发明索引创建方法第一实施例的流程示意图,所述方法应用于存储服务器;所述方法包括以下步骤:
步骤s11:在接收到待存储数据时,将所述待存储数据存储于所述存储服务器。
需要说明的是,本发明的执行主体是存储服务器,存储服务器安装有索引创建程序,存储服务器执行本发明的索引创建程序时,实现本发明的索引创建方法。存储服务器就可以是任何类型的存储服务器,本发明不做限制。
具体应用中,存储服务器可以是elasticsearch,待存储数据为经过sparkstreaming处理后的rdd数据。待存储数据可以是任何类型(不限数据种类)的数据;通常,经过sparkstreaming处理后的rdd数据是分批次发送的,每一个批次的rdd数据均具有id(顺序号),rdd数据的id通常是依次增加的;例如,一个类型的数据(一个类型的数据可以是一种商品对应的全部数据,或某个商品的某个型号对应的全部数据,再或,某个对象在不同情景对应的数据等)在发送的时候,经过sparkstreaming处理后,变成多个批次的rdd数据,第一个批次的rdd数据的id即为0,第二个批次的rdd数据的id为1,依次类推,整个数据的批次分别具有不同的顺序号(顺序标识)。
通常,在接收到待存储数据时,除了将其存储,还需要将待存储数据关联索引,以便于待存储数据的查询等。
步骤s12:在所述待存储数据满足预设条件时,在所述存储服务器的可用索引中确定出与所述待存储数据对应的选定索引。
需要说明的是,待存储数据满足预设条件即为待存储数据为该种类型的数据第一次被存储服务器接收到,例如,一种类型的数据为a商品的数据,待存储数据为a商品的数据第一次被存储服务器接收到,则待存储数据满足预设条件。
可以理解的是,存储服务器存储大量的已存储数据,已存储数据也会关联多个可用索引,一个可用索引与一部分已存储数据对应,可用索引中包括数据量达到预设阈值对应的可用索引(该种索引不会再继续关联新的待存储文件),和数据量未达到预设阈值对应的索引(该种索引可以继续关联新的待存储文件)。通常,一种类型的数据对应多个可用索引,只需要在存储服务器中确定出与待存储数据是同一种类型的已存储数据对应的多个可用索引,并在多个可用索引中确定出最近的可用索引,即为所述选定索引。
例如,待存储数据是b商品的数据,b商品的数据不满足预设条件(表明存储服务器已经存储一部分b商品的数据),b商品对应的可用索引包括7个可用索引,其中,第7个可用索引为最近的可用索引,则只需要依据b商品的数据,在存储服务器确定出与b商品对应的已存储数据对应的该7个可用索引,并在7个可用索引中确定出最近的第7个可用索引为所述选定索引。
步骤s13:在所述选定索引对应的选定已存储数据的数据量达到预设阈值时,基于所述待存储数据对应的待写入索引信息和时间信息,创建新的可用索引。
需要说明的是,预设阈值可以是用户根据需求设定的阈值,本发明不做限制。其中,基于所述待存储数据对应的待写入索引信息和时间信息,创建新的可用索引的步骤包括:基于所述待写入索引信息、所述待存储数据的当前存储时间和预设时间,创建所述新的可用索引。
具体的,所述待存储数据具有顺序标识;步骤s13之前,所述方法还包括:利用预设标识对所述顺序标识进行替换,以获得新的待存储数据;相应的,所述基于所述待写入索引信息、所述待存储数据的当前存储时间和预设时间,创建所述新的可用索引的步骤包括:基于所述新的待存储数据具有的所述预设标识,利用所述待写入索引信息、所述当前存储时间和预设时间,创建所述新的可用索引。
在所述选定索引对应的选定已存储数据的数据量达到预设阈值时,选定索引对应的已存储数据的数据量较多,此时,需要生成该待存储数据对应的新的可用索引;其中,预设标识可以为数据对应的首批数据被存储时对应的顺序标识,例如,数据为rdd数据时,预设标识为0。参照以下步骤进行新的可用索引的生成:
待存储数据为经过经过sparkstreaming处理后的rdd数据,通常,待存储数据包括两种,待存储数据为第一批数据(该类型的数据第一次被接收到),即rdd数据的id为0,和待存储数据为非第一批数据(该类型的数据不是第一次被接收到),rdd数据id不为0。
此处,以rdd不为0的待存储数据为例进行讲解。当选定已存储数据的数据量超过预设阈值时,需要生成新的可用索引,此时,确定待存储数据的顺序标识(即rdd数据的id)不为0,并将待存储数据的顺序标识替换为预设标识(替换该rdd的id为0),以获得新的待存储数据,存储服务器基于新的待存储数据的顺序标识(rdd的id为0),确定需要生成新的可用索引,则基于所述待写入索引信息(待存储数据的索引信息,可能包括数据的名称和类型等)、所述待存储数据的当前存储时间和预设时间,创建所述新的可用索引,在新的可用索引中,可用索引包括索引名、当前存储时间(即所述待存储数据的当前存储时间,也为新的可用索引的创建时间)和预设时间;预设时间通常取最大时间,最大时间为该可用索引对应的已存储数据的数据量到达预设阈值时的时间。通常,一个可用索引创建时,该可用索引可以继续关联新的待存储数据,数据量到达预设阈值时的时间是未知的,预设时间可以取极限靠后的一个时间。
例如,可用索引可以包括索引名和索引别名,索引名通常包括该待存储数据的待写入索引信息,索引别名包括该待存储数据的待写入索引信息、当前存储时间和预设时间,例如,可用索引的索引名为a(a可以为一个类型的数据的索引信息),索引别名可以表示为:a-1608280028000-9999999999999,其中,前面的13为数字为所述待存储数据的当前存储时间,后面的13位数字为预设时间。
当待存储数据的待存储数据的顺序标识(即rdd数据的id)为0时,待存储数据满足预设条件,则进行基于所述待存储数据对应的待写入索引信息、所述待存储数据的当前存储时间和预设时间,创建所述新的可用索引的步骤,具体步骤参照上述描述,此处不再赘述。
进一步的,本发明的存储服务器中的可用索引均可以是采用上述方法获得,对于任何一个可用索引,在其对应的已存储数据的数据量到达预设阈值时,需要对该索引名进行更新,即,修改索引中的预设时间。
所述选定索引包括所述选定已存储数据的初始存储时间和所述预设时间组成的时间区间;修改预设时间的步骤为:利用所述当前存储时间对所述时间区间中的所述预设时间进行更新,以获得更新后的选定索引。
当生成新的可用索引时,选定索引已经不需要继续关联新的数据,此时需要对其时间区间(初始存储时间和所述预设时间组成的时间区间)进行更新,因为,此时选定索引已经对应足够量的数据,不能继续关联新的数据,最大时间即为所述待存储数据的当前存储时间,新的时间区间为初始存储时间和所述待存储数据的当前存储时间组成的区间,其中,初始存储时间为选定索引创建时间(选定索引对应的第一批数据的存储时间)。
具体的,在上述实施例中,索引别名中的两个时间即为时间区间的两个端点,通常将后面的一串数字(预设时间)替换为所述待存储数据的当前存储时间,替换时,数据的位数通常相同,例如,预设时间为13位时间数据,即所述待存储数据的当前存储时间也为13位。
进一步的,所述方法还包括:在所述选定索引对应的选定已存储数据的数据量未超过预设阈值时,利用所述待写入索引信息对所述选定索引进行更新,以获得更新后的选定索引。
需要说明的是,本发明的存储服务器中的可用索引均可以是采用上述方法获得,在选定已存储数据的数据量未超过预设阈值时,选定索引可以继续关联待存储数据,即,进行利用所述待写入索引名对所述选定索引进行更新,以获得更新后的选定索引的步骤,更新后的选定索引与待存储数据关联。
可以理解的是,由于选定索引对应的选定已存储数据并未达到预设阈值,此时不需要对索引别名中的预设时间进行更新,其对应的时间区间还是依旧为初始存储时间和所述预设时间组成的时间区间。
本发明技术方案提出了一种索引创建方法,应用于存储服务器;所述方法包括以下步骤:在接收到待存储数据时,将所述待存储数据存储于所述存储服务器;在所述存储服务器的可用索引中确定出与所述待存储数据对应的选定索引;在所述选定索引对应的选定已存储数据的数据量达到预设阈值时,基于所述待存储数据对应的待写入索引名和时间信息,创建新的可用索引。
现有的索引创建方法中,按照存储数据的数据量分索引,即,当一个索引对应的已存储数据的数据量达到阈值时,生成新的可用索引,但是,利用生成的索引进行数据查询时,需要基于需求数据的需求索引信息,对与需求索引信息对应的全部索引进行扫描,以查询到需求数据,导致数据查询的效率较低;利用本发明的获得方法,可用索引对应的已存储数据的数据量达到预设阈值时,即基于所述待存储数据对应的待写入索引信息和时间信息,创建新的可用索引,可用索引具有时间信息,在利用本发明的可以用索引进行数据搜索时,基于需求数据的需求索引信息,确定对应的全部需求索引,并利用需求数据的需求时间,在全部需求索引中查找与需求时间对应的待查找索引,并利用待查找对应的已存储数据中进行数据查询即可,数据查询速度较快,所以,利用本发明的索引创建方法,利用获得的索引进行数据查询时,查询效率较高。
参照图3,图3为本发明索引创建装置第一实施例的结构框图,所述装置应用于存储服务器;所述装置包括:
接收模块10,用于在接收到待存储数据时,将所述待存储数据存储于所述存储服务器;
确定模块20,用于在所述待存储数据满足预设条件时,在所述存储服务器的可用索引中确定出与所述待存储数据对应的选定索引;
更新模块30,用于在所述选定索引对应的选定已存储数据的数据量达到预设阈值时,基于所述待存储数据对应的待写入索引信息和时间信息,创建新的可用索引。
以上所述仅为本发明的可选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。