发明内容
为克服相关技术中存在的问题,本说明书提供了创建索引、数据查询方法、装置及计算机设备。
根据本说明书实施例的第一方面,提供一种创建索引的方法,包括:
获取目标对象在目标时间范围内的交易数据;
利用所述交易数据确定所述目标对象在所述目标时间范围内发生交易的初始日期以及指示目标日期是否发生交易的状态标识,所述目标日期包括所述目标时间范围内在所述初始日期之后的每个日期;
创建所述目标对象的时间索引,所述时间索引至少包括:目标对象标识、所述初始日期以及所述状态标识。
可选的,所述状态标识包括:0或1。
可选的,所述状态标识按照对应日期的时间顺序从前往后排列。
可选的,所述目标对象对应一条时间索引。
可选的,所述目标对象对应两条或两条以上时间索引,每条所述时间索引还包括:目标对象所对应的时间索引的总条数、以及该条时间索引在该目标对象对应的所有时间索引中的序号。
可选的,所述时间索引采用基于Key-Value的分布式缓存系统存储。
可选的,所述时间索引还包括:所述目标对象发生交易的时区信息。
可选的,在所述创建所述目标对象的时间索引之后,还包括如下更新所述时间索引的步骤:
获取当前更新周期内的交易数据,确定目标对象在所述当前更新周期内各个日期的状态标识;
将确定的状态标识添加至所述时间索引的尾部。
根据本说明书实施例的第二方面,提供一种数据查询方法,包括:
接收查询请求,所述查询请求携带有目标对象标识以及查询时间范围;
利用所述目标对象标识查找所述目标对象的时间索引,其中,所述时间索引利用前述创建索引的方法创建得到;
利用所述目标对象的时间索引查找如下参数:在所述查询时间范围内该目标对象发生交易的交易日期;
基于所述目标对象标识和所述参数在交易数据中进行查询,获得查询结果。
可选的,所述交易数据采用基于Key-Value的分布式缓存系统存储。
可选的,所述交易数据的主键包括:目标对象标识以及交易日期的组合。
根据本说明书实施例的第三方面,提供一种创建索引的方法,所述方法包括:
获取目标对象在目标时间范围内的数据;
利用所述数据确定所述目标时间范围内的初始周期以及指示目标对象在目标周期的状态标识,所述目标周期包括在所述目标时间范围内所述初始周期之后的每个周期;
创建所述目标对象的时间索引,所述时间索引至少包括:所述目标对象标识、所述初始周期以及所述状态标识。
可选的,所述状态标识包括:0或1。
可选的,所述目标对象对应一条时间索引。
可选的,所述目标对象对应两条或两条以上时间索引,每条所述时间索引还包括:目标对象所对应的时间索引的总条数、以及该条时间索引在该目标对象对应的所有时间索引中的序号。
可选的,所述时间索引采用基于Key-Value的分布式缓存系统存储。
可选的,在所述创建所述目标对象的时间索引之后,还包括:
获取当前更新周期内的数据,确定目标对象在所述当前更新周期内各个目标周期的状态标识;
将确定的状态标识添加至所述时间索引的尾部。
根据本说明书实施例的第四方面,提供一种数据查询方法,包括:
接收查询请求,基于所述查询请求确定目标对象标识、查询时间范围及目标状态;
利用所述目标对象标识查找所述目标对象的时间索引,其中,所述时间索引利用所述创建索引的方法创建得到;
利用所述目标对象的时间索引查找如下参数:与所述目标状态匹配的日期;
基于所述目标对象标识和所述参数在对象数据中进行查询,获得查询结果。
可选的,所述对象数据采用基于Key-Value的分布式缓存系统存储。
可选的,所述对象数据的主键包括:目标对象标识以及交易日期的组合。
根据本说明书实施例的第五方面,提供一种创建索引的装置,包括:
获取模块,用于:获取目标对象在目标时间范围内的交易数据;
确定模块,用于:利用所述交易数据确定所述目标对象在所述目标时间范围内发生交易的初始日期以及指示目标日期是否发生交易的状态标识,所述目标日期包括所述目标时间范围内在所述初始日期之后的每个日期;
创建模块,用于:创建所述目标对象的时间索引,所述时间索引至少包括:目标对象标识、所述初始日期以及所述状态标识。
可选的,所述状态标识包括:0或1。
可选的,所述状态标识按照对应日期的时间顺序从前往后排列。
可选的,所述目标对象对应一条时间索引。
可选的,所述目标对象对应两条或两条以上时间索引,每条所述时间索引还包括:目标对象所对应的时间索引的总条数、以及该条时间索引在该目标对象对应的所有时间索引中的序号。
可选的,所述时间索引采用基于Key-Value的分布式缓存系统存储。
可选的,所述时间索引还包括:所述目标对象发生交易的时区信息。
可选的,所述装置还包括更新模块,用于在所述创建所述目标对象的时间索引之后,按照如下方式更新所述时间索引:
获取当前更新周期内的交易数据,确定目标对象在所述当前更新周期内各个日期的状态标识;
将确定的状态标识添加至所述时间索引的尾部。
根据本说明书实施例的第六方面,提供一种数据查询装置,包括:
接收模块,用于:接收查询请求,所述查询请求携带有目标对象标识以及查询时间范围;
索引查找模块,用于:利用所述目标对象标识查找所述目标对象的时间索引,其中,所述时间索引由所述创建索引的装置创建得到;
参数查找模块,用于:利用所述目标对象的时间索引查找如下参数:在所述查询时间范围内该目标对象有进行交易的交易日期;
查询模块,用于:基于所述目标对象标识和所述参数在交易数据中进行查询,获得查询结果。
可选的,所述交易数据采用基于Key-Value的分布式缓存系统存储。
可选的,所述交易数据的主键包括:目标对象标识以及交易日期的组合。
根据本说明书实施例的第七方面,提供一种创建索引的装置,所述装置包括:
获取模块,用于:获取目标对象在目标时间范围内的数据;
确定模块,用于:利用所述数据确定所述目标时间范围内的初始周期以及指示目标对象在目标周期的状态标识,所述目标周期包括在所述目标时间范围内所述初始周期之后的每个周期;
创建模块,用于:创建所述目标对象的时间索引,所述时间索引至少包括:所述目标对象标识、所述初始周期以及所述状态标识。
可选的,所述状态标识包括:0或1。
可选的,所述目标对象对应一条时间索引。
可选的,所述目标对象对应两条或两条以上时间索引,每条所述时间索引还包括:目标对象所对应的时间索引的总条数、以及该条时间索引在该目标对象对应的所有时间索引中的序号。
可选的,所述时间索引采用基于Key-Value的分布式缓存系统存储。
可选的,所述装置还包括更新模块,用于在所述创建所述目标对象的时间索引之后,按照如下方式更新所述时间索引:
获取当前更新周期内的数据,确定目标对象在所述当前更新周期内各个目标周期的状态标识;
将确定的状态标识添加至所述时间索引的尾部。
根据本说明书实施例的第八方面,提供一种数据查询装置,包括:
接收模块,用于:接收查询请求,基于所述查询请求确定目标对象标识、查询时间范围及目标状态;
索引查找模块,用于:利用所述目标对象标识查找所述目标对象的时间索引,其中,所述时间索引所述创建索引的装置创建得到;
参数查找模块,用于:利用所述目标对象的时间索引查找如下参数:与所述目标状态匹配的日期;
查询模块,用于:基于所述目标对象标识和所述参数在对象数据中进行查询,获得查询结果。
可选的,所述对象数据采用基于Key-Value的分布式缓存系统存储。
可选的,所述对象数据的主键包括:目标对象标识以及交易日期的组合。
根据本说明书实施例的第九方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如下方法:
获取目标对象在目标时间范围内的数据;
利用所述数据确定所述目标时间范围内的初始周期以及指示目标对象在目标周期的状态标识,所述目标周期为在所述目标时间范围内所述初始周期之后的每个周期;
创建所述目标对象的时间索引,所述时间索引至少包括:所述目标对象标识、所述初始周期以及所述状态标识。
根据本说明书实施例的第十方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如下方法:
接收查询请求,基于所述查询请求确定目标对象标识、查询时间范围及目标状态;
利用所述目标对象标识查找所述目标对象的时间索引,其中,所述时间索引由所述创建索引的方法创建得到;
利用所述目标对象的时间索引查找如下参数:与所述目标状态匹配的日期;
基于所述目标对象标识和所述参数在对象数据中进行查询,获得查询结果。
本说明书的实施例提供的技术方案可以包括以下有益效果:
本说明书实施例中,通过“初始日期”和“状态标识”的设计,状态标识指示从初始日期之后的每个日期该目标对象是否发生交易,因此能够显著地节省时间索引的数据量,并可以简洁地指示目标对象在哪些日期存在交易,因此在涉及时间范围的数据查询过程中,可以通过时间索引先找出在查询时间范围内哪些日期发生交易,进而可以在交易数据中快速地获取到查询结果。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
数据库采用数据库表存储数据,数据库表中通常以行和列的形式存储着多个值,一行数据为一个记录(例如在通讯录数据库中某个人全部的信息),一列数据(一个字段)记录有该数据库表中同一数据类型的所有值(如通讯录数据库中所有人的家庭住址)。在数据库表中查询数据时,为了更快地获取想要获取的整行数据,通常需要建立索引。
索引是对数据库表中一列或多列的值进行排序的一种结构,索引提供指向存储在表的指定列中的数据值的指针,然后根据指定的排序顺序对这些指针排序。数据库使用索引以找到特定值,然后顺指针找到包含该值的行。这样可以使对应于表的SQL(StructuredQuery Language,结构化查询语言)语句执行得更快,可快速访问数据库表中的特定信息。
数据库技术领域中,常常会有一类涉及对目标对象在一定时间范围内的数据查询,例如查询某段时间范围内股票的交易情况、查询某段时间范围内用户交易情况、查询某段时间范围内某些地区的降水量等等。此类查询需求中,由于查询的对象并不一定每天都有交易/不一定每天都有降雨,此类涉及时间范围的查询会有一定的难度。以股票交易等交易场景为例,从时间上考虑,目标对象并不一定每日都有产生交易数据;而当需要查询某个时间范围内该目标对象的交易数据,需要知道该目标对象在这个时间范围内哪些日期发生交易,基于这些存在交易的日期,可进一步从交易数据中查询,获得查询结果。
一种处理思路是利用目标对象的交易数据,记录每一个交易日期作为时间索引,可以理解,日期至少涉及年月日,该日期字段将会占用较大的存储空间,使得时间索引的数据量较大。
基于此,本说明书实施例提供了一种创建索引的方法,如图1所示,该方法包括:
在步骤102中,获取目标对象在目标时间范围内的交易数据。
在步骤104中,利用所述交易数据确定所述目标对象在所述目标时间范围内发生交易的初始日期以及指示目标日期是否发生交易的状态标识,所述目标日期包括所述目标时间范围内在所述初始日期之后的每个日期。
在步骤106中,创建所述目标对象的时间索引,所述时间索引至少包括:所述目标对象标识、所述初始日期以及所述状态标识。
首先通过如下表格示出目标对象AA的部分时间索引:
表1
其中,初始日期是指在该目标时间范围内第一个发生交易的日期,该表1表示目标对象AA存在交易的初始日期是2017年1月1号;
状态标识采用0和1表示,可选的,本实施例以“0”表示没有发生交易,以“1”表示发生交易。表1中的状态标识包括4个,每个状态标识对应在初始日期之后的每个日期,各个状态标识按照对应日期的时间顺序从前往后排列,表示从初始日期之后的4个日期,“0101”分别表示:
20170102没有发生交易;
20170103发生交易;
20170104发生交易;
20170105发生交易。
由上述实施例可见,本说明书实施例通过“初始日期”+“状态标识”的设计,状态标识所占用空间非常小,能够显著地节省时间索引的数据量,并可以简洁地指示目标对象在哪些日期发生交易、哪些日期没有发生交易。
本实施例中采用二进制的0和1作为状态标识,则每个发生交易的日期只占用一个比特的大小,即使有1万个交易日,所有交易日的状态标识也占用1250个字节,时间索引的数据量较小。当然,本说明书实施例也不排除其他状态标识的实现方式,可选的,状态标识可以根据需要灵活选取其他数字或字符等进行表示,本实施例对此不作限定。
其中,在创建目标对象的时间索引时,所选取的目标时间范围可以根据需要灵活确定。在一些例子中,该目标时间范围可以是该目标对象从第一个交易日至当天的范围;在另一些例子中,也可以是基于某些业务需要而设定的时间范围,例如,假设目标对象从第一个交易日至当天的时长较大,而实际应用中只会涉及某个时间段的查询,则可以只针对这个时间段建立索引,将该时间段确定为该目标时间范围。
在一些例子中,由于通过状态标识表征了目标对象是否发生交易,状态标识所占用的数据量非常小,因此,目标对象可以只对应一条时间索引。而在另一些例子中,若发生交易的日期较多,目标对象也可以对应两条或两条以上时间索引,在有多条时间索引的情况下,每条所述时间索引还包括:目标对象所对应的时间索引的总条数、以及该条时间索引在该目标对象对应的所有时间索引中的序号,以将目标对象的各条时间索引进行区别,便于后续的数据查询。例如,在时间索引的总条数和序号的指示下,可以在对目标对象进行时间范围的查询时,知道该在哪一条时间索引中查询交易日期。作为例子:
总条数 |
序号 |
对象标识 |
初始日期 |
状态标识 |
2 |
1 |
AA |
20170101 |
01100101000…… |
表2
总条数 |
序号 |
对象标识 |
初始日期 |
状态标识 |
2 |
2 |
AA |
20170101 |
00111010111001…… |
表3
其中,表2示出了从20170101之后的第1至第n日是否有交易,表3示出了从20170101之后的第n+1至第m日是否有交易。本实施例中,对于目标对象的多条时间索引,采用了相同的初始日期进行示意,在另一些例子中,也可以采用不同的初始日期,作为例子:
总条数 |
序号 |
对象标识 |
初始日期 |
状态标识 |
2 |
1 |
BB |
20070101 |
01100101000…… |
表4
总条数 |
序号 |
对象标识 |
初始日期 |
状态标识 |
2 |
2 |
BB |
20170101 |
00111010111001…… |
表5
其中,表4示出了目标对象BB从20070101至20161231之间十年内各个日期是否有交易;表5示出了从20170101之后的各个日期目标对象BB是否有交易。
可以理解,在创建有时间索引之后,目标对象可能还持续地发生交易,因此,本实施例还提供了对已创建的时间索引的更新方式,可选的,在所述创建所述目标对象的时间索引之后,还可包括:
获取当前更新周期内的交易数据,确定目标对象在所述当前更新周期内各个日期的状态标识;
将确定的状态标识添加至所述时间索引的尾部。
本实施例中,所述更新周期可以是每天、两天或一周等时间,时间索引创建后,可按照更新周期持续更新。以表1为例,目标对象AA的时间索引记录了从20170101至20170105的状态标识,若更新周期为每天,在20170106当日结束后,可根据当日的交易数据,确定目标对象AA在20170106的状态标识,本实施例中,AA在该天未发生交易,状态标识为0。之后,将20170106的状态标识添加至该时间索引的尾部,更新后的时间索引为:
表6
由上述实施例可见,基于本实施例的时间索引的设计,时间索引的更新可以是直接在尾部添加状态标识即可,更新速度也非常快速。
实际应用中,交易数据中会涉及多个目标对象,而各个目标对象发生交易的地理位置可能不同;由于世界各地区与国家经度不同,地方时也有所不同,而发起查询请求的用户所处时区也可能与目标对象发生交易的时区不同,因此,时间索引还可以包括目标对象发生交易所处时区的时区信息。
作为例子,假设处于东八区的用户要查询目标对象在3月4号的交易数据,而目标对象处于西五区,对于设备来说,查询请求是在东八区发起的,该目标对象处于西五区,东八区比西五区早13个小时,东八区“3月4号”对应了西五区的“3月3号”至“3月4号”,基于此,设备可以根据时区信息,查询该目标对象在“3月3号”至“3月4号”两天的交易数据,同时,在输出查询结果时,还可以对目标对象所处时区信息进行展示,以使用户知悉本次查询涉及时区转换。当然,实际应用中,也可以忽略时区,直接以用户所期望查询的“3月4号”,查询目标对象“3月4号”的交易数据并反馈。
为了提高数据查询效率,本说明书实施例的时间索引可以采用基于Key-Value的分布式缓存系统存储,此类存储系统的存储模式支持使用一个Key查找对应Value的缓存存储方式,例如Memcached系统、Tair(mdb)系统等。
基于上述时间索引,本说明书实施例还提供了对应的数据查询方法,如图2A所示,包括如下步骤:
在步骤202中,接收查询请求,所述查询请求携带有目标对象标识以及查询时间范围;
在步骤204中,利用所述目标对象标识查找所述目标对象的时间索引。其中,所述时间索引采用前述创建索引的实施例方法创建得到。
在步骤206中,利用所述目标对象的时间索引查找如下参数:在所述查询时间范围内该目标对象有进行交易的交易日期;
在步骤208中,基于所述目标对象标识和所述参数在交易数据中进行查询,获得查询结果。
本说明书实施例中,在接收到涉及时间范围的查询,由于时间索引中记录了发生交易的初始日期、以及在初始日期之后每个日期是否发生交易的状态标识,因此可以依次读取每个状态标识,可以基于时间索引快速查找出在所述查询时间范围内该目标对象有进行交易的交易日期。作为例子,假设查询时间范围是从初始日期开始至第N天,则初始日期是第一个交易日期,之后读取第1至第N-1个状态标识。若查询时间范围是第K天至第P天,则可以计算第K天与初始日期的差值j,基于该差值j,从第j个状态标识开始读取。实际应用中,上述查询过程还可以根据需要灵活配置,本实施例对此不作限定。
其中,目标对象可能对应一条时间索引,则可以直接在该条时间索引中查找有进行交易的交易日期。在另一些例子中,目标对象可能对应两条或两条以上时间索引,查询请求中所涉及的查询时间范围可能只需要涉及其中一条时间索引,也可能涉及多条时间索引。
作为例子,如图2B所示,示出了数据查询的一种处理过程,用户期望查询目标对象(本实施例以股票AA为例,AA为该目标对象的标识)在x月x日至y月y日的报价。在用户发起查询请求后,本实施例的数据查询方法可以先在时间索引数据中查询在x月x日至y月y日这个时间范围内,股票AA发生交易的日期有哪些。本实施例的时间索引数据采用KV缓存的方式,可选的,在时间索引数据的查询中,查询的主键为标识与时间范围的组合。如key=AA.TRADEDAY,key表示主键,等号后面表示主键值,AA表示该目标对象的标识,TRADEDAY表示交易时间;本实施例的查询关键字为AA.x月x日至y月y日。
作为例子,假设股票AA的时间索引如表2和表3所示包括两条,x月x日至y月y日可能需要在两条时间索引数据中进行查询,基于关键字key=AA.TRADEDAY,可能在表2的时间索引中查询到多个交易日期,在表3的时间索引中查询到多个交易日期。而表2和表3的查询结果获取后可以进行合并,合并结果即为股票AA在x月x日至y月y日这个时间范围内所有交易日期。图2B中AA.X.X1,AA.X.X2~AA.Y.Y作为例子,表示AA在X月X1日、以及X月X2日至Y月Y日发生交易。
基于该合并结果,可以在股票交易数据中查询AA在X月X1日、以及X月X2日至Y月Y日的交易数据。作为例子,股票交易数据也采用KV缓存方式存储,股票交易数据的查询关键字为标识和交易日期的组合。因此,将上述合并结果作为关键字:keys=AA.X.X1,AA.X.X2~AA.Y.Y,keys表示多个key,每个key即标识和交易日期的组合。可选的,可以采用批量处理的方式在股票交易数据中查询AA在上述各个交易日期的交易数据,最终返回报价数据。
本实施例中,以查询时间范围涉及目标对象的多条时间索引为例进行说明,根据时间索引中包含的总条数和序号,可以确定查询时间范围需要在哪一些时间索引中查询,而基于多条时间索引查询到的多个结果可以进行拼接合并,最终获得查询时间范围内该目标对象有进行交易的交易日期结果。
基于该结果和目标对象的标识,可以从交易数据中进行查询,最终获得查询结果。在一个可选的实现方式中,交易数据也可以采用基于Key-Value的分布式缓存系统存储,其中,交易数据的主键可以是:目标对象标识以及交易日期的组合,则目标对象标识和通过时间索引查找的参数可以组合作为主键值,进而可以快速地在交易数据中查询得到结果。
上述实施例示出了交易场景下的创建索引方案和数据查询方案,实际应用中,也有较多的其他应用场景会涉及时间范围的查询,例如查询某些地区的降雨量、查询某些地区的污染指数等等。基于此,本说明书实施例还提供了另一种创建索引方案和数据查询方案,可适用于任何涉及时间范围查询的应用场景。
如图3所示,图3是本说明书根据一示例性实施例示出的另一种创建索引的方法的流程图,包括以下步骤:
在步骤302中,获取目标对象在目标时间范围内的数据;
在步骤304中,利用所述数据确定所述目标时间范围内的初始周期以及指示目标对象在目标周期的状态标识,所述目标周期为在所述目标时间范围内所述初始周期之后的每个周期;
在步骤306中,创建所述目标对象的时间索引,所述时间索引至少包括:所述目标对象标识、所述初始周期以及所述状态标识。
本实施例中,目标对象的状态根据不同应用场景可以有不同的含义,在交易场景中,状态可以包括是否发生交易;天气信息查询场景下,状态可以包括该天是否发生该类天气状况,例如是否下雨、当天空气质量是否到达污染水平等等。在另一些例子中,状态可以不止上述的“是”或“否”两类情况,还可以包括两种以上,实际应用中可根据具体场景灵活设定。
另一方面,所述周期也可以根据不同应用场景可以有不同的配置,可以是2个小时、6个小时、12个小时、一天、两天或一周等等,本实施例对此不做限定。具体的创建过程可参考前述图2A至图2B所示实施例的描述,再次不再赘述。
可选的,所述状态标识包括:0或1。
可选的,所述状态标识按照对应周期的时间顺序从前往后排列
可选的,所述目标对象对应一条时间索引。
可选的,所述目标对象对应两条或两条以上时间索引,每条所述时间索引还包括:目标对象所对应的时间索引的总条数、以及该条时间索引在该目标对象对应的所有时间索引中的序号。
可选的,所述时间索引采用基于Key-Value的分布式缓存系统存储。
可选的,在所述创建所述目标对象的时间索引之后,还包括:
获取当前更新周期内的数据,确定目标对象在所述当前更新周期内各个目标周期的状态标识;
将确定的状态标识添加至所述时间索引的尾部。
如图4所示,图4是本说明书根据一示例性实施例示出的一种数据查询的方法的流程图,包括以下步骤:
在步骤402中,接收查询请求,基于所述查询请求确定目标对象标识、查询时间范围及目标状态;
在步骤404中,利用所述目标对象标识查找所述目标对象的时间索引,其中,所述时间索引利用图3所示实施例的创建索引的方法创建得到;
在步骤406中,利用所述目标对象的时间索引查找如下参数:与所述目标状态匹配的日期;
在步骤408中,基于所述目标对象标识和所述参数在对象数据中进行查询,获得查询结果。
可选的,所述交易数据采用基于Key-Value的分布式缓存系统存储。
可选的,所述交易数据的主键包括:目标对象标识以及交易日期的组合。
与前述创建索引的方法及数据查询方法的实施例相对应,本说明书还提供了创建索引的装置、数据查询装置及其所应用的服务器的实施例。
本说明书创建索引的装置/数据查询装置的实施例可以应用在计算机设备上,例如服务器等。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在文件处理的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本说明书实施例创建索引的装置/数据查询装置所在计算机设备的一种硬件结构图,除了图5所示的处理器510、内存530、网络接口520、以及非易失性存储器540之外,实施例中装置531所在的服务器,通常根据该计算机设备的实际功能,还可以包括其他硬件,对此不再赘述。
如图6所示,图6是本说明书根据一示例性实施例示出的一种创建索引的装置的框图,所述装置包括:
获取模块61,用于:获取目标对象在目标时间范围内的数据;
确定模块62,用于:利用所述数据确定所述目标时间范围内的初始周期以及指示目标对象在目标周期的状态标识,所述目标周期为在所述目标时间范围内所述初始周期之后的每个周期;
创建模块63,用于:创建所述目标对象的时间索引,所述时间索引至少包括:所述目标对象标识、所述初始周期以及所述状态标识。
可选的,所述状态标识包括:0或1。
可选的,所述状态标识按照对应日期的时间顺序从前往后排列。
可选的,所述目标对象对应一条时间索引。
可选的,所述目标对象对应两条或两条以上时间索引,每条所述时间索引还包括:目标对象所对应的时间索引的总条数、以及该条时间索引在该目标对象对应的所有时间索引中的序号。
可选的,所述时间索引采用基于Key-Value的分布式缓存系统存储。
可选的,所述时间索引还包括:所述目标对象发生交易的时区信息。
可选的,所述装置还包括更新模块,用于在所述创建所述目标对象的时间索引之后,按照如下方式更新所述时间索引:
获取当前更新周期内的交易数据,确定目标对象在所述当前更新周期内各个日期的状态标识;
将确定的状态标识添加至所述时间索引的尾部。
如图7所示,图7是本说明书根据一示例性实施例示出的一种数据查询装置的框图,包括:
接收模块71,用于:接收查询请求,基于所述查询请求确定目标对象标识、查询时间范围及目标状态;
索引查找模块72,用于:利用所述目标对象标识查找所述目标对象的时间索引,其中,所述时间索引所述创建索引的装置创建得到;
参数查找模块73,用于:利用所述目标对象的时间索引查找如下参数:与所述目标状态匹配的日期;
查询模块74,用于:基于所述目标对象标识和所述参数在对象数据中进行查询,获得查询结果。
可选的,所述交易数据采用基于Key-Value的分布式缓存系统存储。
可选的,所述交易数据的主键包括:目标对象标识以及交易日期的组合。
如图8所示,图8是本说明书根据一示例性实施例示出的一种创建索引的装置的框图,包括:
获取模块81,用于:获取目标对象在目标时间范围内的交易数据;
确定模块82,用于:利用所述交易数据确定所述目标对象在所述目标时间范围内发生交易的初始日期以及指示目标日期是否发生交易的状态标识,所述目标日期为所述目标时间范围内在所述初始日期之后的每个日期;
创建模块83,用于:创建所述目标对象的时间索引,所述时间索引至少包括:目标对象标识、所述初始日期以及所述状态标识。
可选的,所述状态标识包括:0或1。
可选的,所述目标对象对应一条时间索引。
可选的,所述目标对象对应两条或两条以上时间索引,每条所述时间索引还包括:目标对象所对应的时间索引的总条数、以及该条时间索引在该目标对象对应的所有时间索引中的序号。
可选的,所述时间索引采用基于Key-Value的分布式缓存系统存储。
可选的,所述装置还包括更新模块,用于在所述创建所述目标对象的时间索引之后,按照如下方式更新所述时间索引:
获取当前更新周期内的数据,确定目标对象在所述当前更新周期内各个目标周期的状态标识;
将确定的状态标识添加至所述时间索引的尾部。
如图9所示,图9是本说明书根据一示例性实施例示出的一种数据查询创建索引的装置的框图,包括:
接收模块91,用于:接收查询请求,所述查询请求携带有目标对象标识以及查询时间范围;
索引查找模块92,用于:利用所述目标对象标识查找所述目标对象的时间索引,其中,所述时间索引由所述创建索引的装置创建得到;
参数查找模块93,用于:利用所述目标对象的时间索引查找如下参数:在所述查询时间范围内该目标对象有进行交易的交易日期;
查询模块94,用于:基于所述目标对象标识和所述参数在交易数据中进行查询,获得查询结果。
可选的,所述对象数据采用基于Key-Value的分布式缓存系统存储。
可选的,所述对象数据的主键包括:目标对象标识以及交易日期的组合。
相应的,本说明书实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如下方法:
获取目标对象在目标时间范围内的数据;
利用所述数据确定所述目标时间范围内的初始周期以及指示目标对象在目标周期的状态标识,所述目标周期为在所述目标时间范围内所述初始周期之后的每个周期;
创建所述目标对象的时间索引,所述时间索引至少包括:所述目标对象标识、所述初始周期以及所述状态标识。
相应的,本说明书实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如下方法:
接收查询请求,基于所述查询请求确定目标对象标识、查询时间范围及目标状态;
利用所述目标对象标识查找所述目标对象的时间索引,其中,所述时间索引由所述创建索引的方法创建得到;
利用所述目标对象的时间索引查找如下参数:与所述目标状态匹配的日期;
基于所述目标对象标识和所述参数在对象数据中进行查询,获得查询结果。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。