CN106126486B - 时间信息编码方法、编码值检索方法、解码方法与装置 - Google Patents

时间信息编码方法、编码值检索方法、解码方法与装置 Download PDF

Info

Publication number
CN106126486B
CN106126486B CN201610509377.9A CN201610509377A CN106126486B CN 106126486 B CN106126486 B CN 106126486B CN 201610509377 A CN201610509377 A CN 201610509377A CN 106126486 B CN106126486 B CN 106126486B
Authority
CN
China
Prior art keywords
encoded
temporal information
time scale
encoded radio
information
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
Application number
CN201610509377.9A
Other languages
English (en)
Other versions
CN106126486A (zh
Inventor
童晓冲
张勇
赖广陵
韩硕
汪滢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Information Engineering University of PLA Strategic Support Force
Original Assignee
Individual
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to CN201610509377.9A priority Critical patent/CN106126486B/zh
Publication of CN106126486A publication Critical patent/CN106126486A/zh
Priority to PCT/CN2016/107461 priority patent/WO2018000709A1/zh
Priority to US16/312,980 priority patent/US11544443B2/en
Application granted granted Critical
Publication of CN106126486B publication Critical patent/CN106126486B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/126Character encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/48Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • G06F16/489Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using time information

Abstract

本申请公开了一种时间信息编码方法,用于解决采用现有的时间信息编码方式可能导致编码值计算效率较低的问题。方法包括:确定待编码的时间信息;将所述待编码的时间信息,编码为第一时间尺度下的具备指定位数的第一整数;根据第二时间尺度的信息,将所述第一整数,编码为所述第二时间尺度下的具备所述指定位数的第二整数,作为所述待编码的时间信息在所述第二时间尺度下的编码值。本申请还公开一种时间信息编码装置、编码值检索方法、解码方法与装置。

Description

时间信息编码方法、编码值检索方法、解码方法与装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种时间信息编码方法、编码值检索方法、解码方法与装置。
背景技术
目前,时间(时间信息)的表达可以粗略划分为文字表示和数字表示两种。用文字表示时间时,鉴于不同国家地区间语言、文化、历史和习惯的差异,各个国家和地区间有着明显的不同。在数字表示时间上,世界各地区也有着不同的表示方法。此处将广义的时间分为两个部分:日期部分和时间部分(特指一天中的具体时间)。在表示时间时,一般时、分、秒顺序一致:假设用H表达小时(Hour)、M表达分(Minute)、S表达秒(Second),则时间部分表达为H:M:S。最大的差异体现在表示日期时,年、月、日顺序的不同:假设用Y表示年(Year)、M表示月(Month)、D表示日(Day),则日期部分的组成顺序有:
YMD:(year,month,day),比如1996-04-22
DMY:(day,month,year),比如22.04.96或22/04/96
MDY:(month,day,year),比如04/22/96
时间信息的离散化,是指采用离散化的表达方式,来表达时间信息。用离散化的表达方式来表达时间信息,每个时间信息从表现形式上来看,都是一个离散的时间点而非连续的时间段。如,“1996-04-22”,在“日”这一时间粒度,是一个离散的时间点,又如,“1996-04-22,10:22”,在“分”这一时间粒度,也是一个离散的时间点。在时间信息的离散化表达方面,主要有文件系统中的时间离散化、编程语言中的时间离散化和数据库中的时间离散化三大类。
由于文件系统、编程语言和数据库,都是可供计算机操作(比如访问或者运行等)的对象,因此,文件系统、编程语言和数据库中的时间信息,一般都是指被编码为计算机可识别的编码值的时间信息。
对时间信息进行编码,称为时间信息编码。具体而言,时间信息编码是指用预先规定的方法,将时间信息从文字、数字或其他表达形式,转化为计算机内部可识别的形式的过程。时间信息编码的结果,即为时间信息在计算机内部的存储值(也称编码值)。下文提到的时间信息编码模型,则是指包含用于对时间信息进行编码的方法的模型。
(1)文件系统中的时间离散化
文件系统中的时间信息编码模型主要应用于文件的时间属性(文件的时间属性就是一种时间信息)的存储和管理。文件的时间属性,一般包括文件的创建时间、修改时间和访问时间。以主流FAT32、NTFS和Ext2/3/4三类常见文件系统为例,进行分析。
在FAT32文件系统中,文件的时间属性存储在FDT(File directory Table,文件目录项)中。每个文件都在FDT中对应于一个目录项,每个目录项的大小为32字节。其中,第14~18字节记录了文件的创建时间,精确度10ms;第19~20字节记录了文件的最新访问时间,精确度1天;第23~26字节记录了文件的最新修改时间,精确度2s,全部32字节的定义。由于FAT32是基于系统的本地时间对文件的时间属性进行管理,所以文件目录项中的时间属性直接记录了计算机所设时区的本地时间。
在NTFS文件系统中,文件的时间属性存储在主文件表MFT(Master File Table,主文件表)中。每个MFT记录都对应着不同的文件。与FAT32文件系统不同,NTFS文件系统采用UTC格式保存时间属性,使用一个64bit整数(即8个字节),单位是100个纳秒(等于10-7秒),表示从1601-01-01T00:00:00Z以来过去了多少个这样的时间单位(不考虑闰秒)(MSDNLibrary,2016a)。MFT中存储了文件创建时间、文件最新修改时间、MFT最新修改时间(当文件的属性发生变化时)和文件最新访问时间。例如,MFT记录修改时间为“01CD76DB 03D9ACC8”(小字节序),表示自1601-01-01T00:00:00Z以来,经历了129890647298125000个100纳秒,约为12989064729秒,经计算MFT记录修改时间为2012-08-10T09:32:09Z。
Ext2/3/4则是Linux操作系统常采用的文件格式。Ext2/3/4文件系统中每个文件都对应了一个inode结点,inode结点中保存了文件大小、时间信息和文件保存位置等重要信息。Ext2/3文件系统中,inode结点为128个字节,从起始位置开始第0x8~0x17字节,依次记录了文件最新访问时间、文件属性改变的时间、文件最新修改时间和文件删除时间。每个时间戳使用一个有符号的32bit整数记录从1970-01-01T00:00:00Z以来过去了多少秒。Ext4文件系统将inode结点扩大为256个字节。通过扩展时间属性的存储空间,Ext4将时间的存储精度提高到1纳秒。除了第0x8~0x17字节,Ext4还增加使用了第0x84~0x8F字节,依次将文件最新访问时间、文件属性改变的时间、文件最新修改时间增加4个字节进行存储,即时间戳的存储空间从32bit扩展到64bit。这增加的32bit,其中低2位,与之前记录秒数的32bit组合以扩展到34位,从而将记录的时间最大值从2038年1月延长到2446年5月;高30位用来提供纳秒级别的精度。同时,第0x90~0x97字节增加了记录了文件创建时间,同样采用64bit存储。
由此可见,不同的文件系统,文件的时间属性的编码方式一般是不相同的。但其基本方法可以概括为两类:一类是将字节的二进制位划分为不同区域,分别存储年、月、日、时、分、秒等信息;另一类是使用一个整数记录从一个标准时间点到现在的时间经过的秒数。并且,文件系统中的时间编码呈现一种趋势,即通过增加存储空间的方式扩大可表达的时间范围、提高可表达的时间精度。
(2)编程语言中的时间离散化
编程语言都需要对时间进行处理。由于不同的编程语言特点不同,对时间信息的具体编码方式也各不相同,但基本方法可以概括为如下四类:
1)使用一个有符号整数记录从一个标准时间点到现在的时间经过的秒数,不包括插入闰秒对时间的调整。
2)使用有符号整数表达时钟滴答数,从进程启动开始计时,是相对时间。
3)将字节的二进制位分为不同区域,存储年、月、日、时、分、秒等信息。
4)用一个元组、或结构体、或类等复合数据类型表示分解时间。
(3)数据库中的时间离散化
SQL:2011标准(又称ISO/IEC 9705:2011)中规定了日期和时间数据类型,包括以下数据类型:
DATE:日期,是由年、月、日组成。
TIME:时间,是由小时、分钟和秒组成。
TIMESTAMP:时间戳,组合DATE和TIME。
TIME WITH TIME ZONE:扩展了TIME,包含时区的信息。
TIMESTAMP WITH TIME ZONE:扩展了TIMESTAMP,包含时区信息。
INTERVAL:时间间隔,可以是年月时间,也可以是日时间。前者包括了YEAR和MONTH字段;后者包括了DAY、HOUR、MINUTE和SECOND元素。
数据库系统一般均支持上述类型,但不同的数据库系统实现方式不同。
在计算机技术领域中,时间信息的存在,有着非常重要的意义——数据收集与时间信息有关,数据查询检索或挖掘分析更是与时间信息密不可分。例如,数据仓库的数据都有时间日志;研究销售、股票、气象、洪水和地震等数据变化和知识发现问题都与时间信息有关,等等。
但是,在大数据环境下,面对大量带有时间信息的数据及其复杂多样的时间结构,现有时间信息编码难以准确高效地基于时间信息进行数据组织和计算。具体而言,针对多尺度时间信息,按照现有的时间信息编码方式,会存在以下缺陷。需要说明的是,这里所述的“多尺度时间信息”,是一种时间信息,并且,该时间信息包含至少两个可以分别用不同的时间尺度来进行表示的时间信息(为便于区分,也可称为时间子信息)。比如,2038年1月,就是一种多尺度时间信息,因为,首先它是一种时间信息,其次,它包含两个可以分别用不同的时间尺度来进行表示的时间信息,分别为可以用“年”这个时间尺度来表示的时间信息“2038年”,以及可以用“月”这个时间尺度来表示的时间信息“2038年1月”;又比如,“5月1日15:20”也是一种多尺度时间信息,因为首先它是一种时间信息,其次,它包含四个可以分别用“月”、“日”、“时”或“分”来表示的时间信息“5月”、“5月1日”、“5月1日15点”和“5月1日15:20”。
接上文,所述的缺陷如下:
采用现有的时间信息编码方式,可能导致多尺度时间信息对应的编码值的计算效率较低。
比如,目前存储和组织多尺度时间信息的一种方式,是将多尺度时间信息编码为字符串并存储的方式,如将“2015年12月12日晚上9点半”这一多尺度时间信息,编码为字符串“2015-12-12T21:30:00”。将多尺度时间信息编码为字符串,能简洁直观地记录多尺度时间信息,但这会导致作为编码值的字符串在计算方面的劣势明显。例如:针对字符串“2015-12-31”进行加1天的操作,需要先将字符串解码,提取年为2015,月为12,日为31;然后按照历法规则加1天,计算结果为年为2016,月为1,日为1;再将计算结果编码为字符串“2016-01-01”。该过程比较繁琐和复杂,耗时较长,效率较低。
发明内容
本申请实施例提供一种时间信息编码方法,用以解决采用现有的时间信息编码方式导致编码值计算效率较低的问题。
本申请实施例还提供一种时间信息编码装置,用以解决采用现有的时间信息编码方式导致编码值计算效率较低的问题。
本申请实施例还提供一种编码值检索方法、解码方法与装置。
本申请实施例采用下述技术方案:
一种时间信息编码方法,包括:
确定待编码的时间信息;
将所述待编码的时间信息,编码为第一时间尺度下的具备指定位数的第一整数;
根据第二时间尺度的信息,将所述第一整数,编码为所述第二时间尺度下的具备所述指定位数的第二整数,作为所述待编码的时间信息在所述第二时间尺度下的编码值。
一种基于上述时间信息编码方法的编码值检索方法,包括:
确定具备指定位数的编码值;
确定所述具备指定位数的编码值对应的时间尺度的信息;
根据所述具备指定位数的编码值对应的时间尺度的信息,检索与所述具备指定位数的编码值相关的目标编码值;
其中,所述目标编码值和所述具备指定位数的编码值,是按照所述的时间信息编码方法对同一时间信息进行编码得到的。
一种基于上述时间信息编码方法的解码方法,包括:
确定指定位数的待解码的编码值;
确定所述待解码的编码值对应的时间尺度的信息;
根据所述待解码的编码值对应的时间尺度的信息,以及所述指定位数,将所述待解码的编码值,解码为相应的时间信息。
一种时间信息编码装置,包括:
时间信息确定单元,用于确定待编码的时间信息;
编码单元,用于将所述待编码的时间信息,编码为第一时间尺度下的具备指定位数的第一整数;以及,根据第二时间尺度的信息,将所述第一整数,编码为所述第二时间尺度下的具备所述指定位数的第二整数,作为所述待编码的时间信息在所述第二时间尺度下的编码值。
一种编码值检索装置,包括:
编码值确定单元,用于确定具备指定位数的编码值;
确定所述具备指定位数的编码值对应的时间尺度的信息;
根据所述具备指定位数的编码值对应的时间尺度的信息,检索与所述具备指定位数的编码值相关的目标编码值;
其中,所述目标编码值和所述具备指定位数的编码值,是按照所述的时间信息编码方法对同一时间信息进行编码得到的。
一种解码装置,包括:
编码值确定单元,用于确定指定位数的待解码的编码值;
时间尺度确定单元,用于确定所述待解码的编码值对应的时间尺度的信息;
解码执行单元,用于根据所述待解码的编码值对应的时间尺度的信息,以及所述指定位数,将所述待解码的编码值,解码为相应的时间信息。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
由于采用本方案得到的编码值为整数,基于整数进行的计算相对于基于字符串进行的计算效率要高,因此相对于现有技术中将时间信息编码为字符串的方式相比,本方案可以提高编码值的计算效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的一种时间信息编码方法的实现流程示意图;
图2为本申请实施例提供的一种编码值的检索方法的实现流程示意图;
图3为本申请实施例提供的一种解码方法的实现流程示意图;
图4为本申请实施例2中对待编码的时间信息进行编码的流程示意图;
图5为本申请实施例2中,当Tc为64bit的二进制整数时,能够对时间信息进行编码得到的不同时间尺度下的编码值的示意图;
图6为待编码的时间信息为“公元**年...”的情况下,能够编码得到的不同时间尺度下的编码值的示意图;
图7a为本申请实施例提供的一种时间信息编码装置的具体结构示意图;
图7b为本申请实施例提供的时间信息编码装置所展示的一种用户界面的示意图;
图8为本申请实施例提供的一种编码值检索装置的具体结构示意图;
图9为本申请实施例提供的一种解码装置的具体结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
实施例1
为解决采用现有的时间信息编码方式可能导致编码值计算效率较低的问题,本申请实施例提供一种如图1所示的时间信息编码方法。该方法的实现流程,包括下述步骤:
步骤11,确定待编码的时间信息;
这里所说的时间信息,可以是具备世界上广泛使用的时间系统中的一些时间系统所规定的时间形式的时间信息。比如,以格里历和协调世界时(Coordinated UniversalTime,UTC)系统为例,这里所说的时间信息,可以是形式为公元A年B月C日D:E:F.GH的时间信息。其中,A代表年,B代表月,C代表日,D代表小时,E代表分钟,F代表秒钟,G代表毫秒,H代表微秒。
步骤12,将所述待编码的时间信息,编码为第一时间尺度下的具备指定位数的第一整数;
针对步骤12的具体实现方式而言,比如,可以按照预定的第一编码规则,将所述待编码的时间信息,编码为第一时间尺度下的具备指定位数的第一整数。
其中,所述预定的编码规则,可以包括:使得所述待编码的时间信息包含的指定内容所对应的编码值,共同占用46bit。所述指定内容,包括月、日、小时、分、秒、毫秒和微秒这些时间粒度的各时间信息。
比如,所述预定的编码规则,可以包括下述内容:
将所述待编码的时间信息包含的月这一时间粒度的时间信息,编码为4bit的二进制数——比如,月计数的整数B转换成4bit二进制数,转化得到的该二进制数表示十进制数0~15中的一个,其中0、13、14、15在月份中无效,不会在编码值中体现;
将所述待编码的时间信息包含的日这一时间粒度的时间信息,编码为5bit的二进制数——比如,日计数的整数C转换成5bit二进制数,转化得到的该二进制数表示十进制数0~31中的一个,其中0在日计数中无效,不会在编码值中体现;
将所述待编码的时间信息包含的时这一时间粒度的时间信息,编码为5bit的二进制数——比如,时计数的整数D转换成5bit二进制数,转化得到的该二进制数表示十进制数0~31中的一个数,其中24~31在时计数中无效,不会在编码值中体现;
将所述待编码的时间信息包含的分这一时间粒度的时间信息,编码为6bit的二进制数——比如,分计数的整数E转换成6bit二进制数,转化得到的该二进制数表示十进制数0~63中的一个数,其中60~63在分计数中无效,不会在编码值中体现;
将所述待编码的时间信息包含的秒这一时间粒度的时间信息,编码为6bit的二进制数——比如,秒计数的整数F转换成6bit二进制数,转化得到的该二进制数表示十进制数0~63中的一个数,其中60~63在秒计数中无效,不会在编码值中体现;
将所述待编码的时间信息包含的毫秒这一时间粒度的时间信息,编码为10bit的二进制数——比如,毫秒计数的整数G转换成10bit二进制数,转化得到的该二进制数表示十进制数0~1023中的一个数,其中1000~1023在毫秒计数中无效,不会在编码值中体现;
将所述待编码的时间信息包含的微秒这一时间粒度的时间信息,编码为10bit的二进制数——比如,微秒计数的整数H转换成10bit二进制数,转化得到的该二进制数表示十进制数中的0~1023中的一个数,其中1000~1023在微秒计数中无效,不会在编码值中体现。
若期望具备64bit的第一整数,则所述预定的编码规则除包含上述内容外,还可以包括:
将所述待编码的时间信息包含的年这一时间粒度的时间信息,编码为18bit的二进制数——比如,年计数的整数A转换成18bit二进制数,正负采用其补码设计,第1位是符号位,转化得到的该二进制数用于表示公元前131072年~公元131071年中的某一年。
以下举例说明步骤12的实现方式:
以待编码的时间信息为“公元2016年5月14日15时30分23秒870毫秒124微秒”,所述指定位数为64bit为例,按照上述预定的编码规则,可以得到如下表1所示第一时间尺度下的编码值:
表1:
此外,针对步骤12中所述第一时间尺度而言,本申请实施例中,该第一时间尺度,可以是根据计算设备一次运算所能处理的二进制数的最大位数,所确定出的多个时间尺度中的最小的时间尺度。这里所说的计算设备,是指时间编码方法的执行主体,比如,可以是某个计算机,或者其他的具备CPU或者MCPU的计算设备。以所述执行主体为计算机为例,计算机一次运算所能处理的二进制的最大位数,比如可以是32bit或64bit,等等。
针对如表1所示的上例而言,所述的第一时间尺度,为公元前131072年~公元131071年(即[-217,217-1])这个时间尺度。
本申请实施例中,为了支持将待编码的时间信息,分别编码为尽可能多的时间尺度下的编码值,可以考虑充分利用计算设备一次运算所能处理的二进制数的位数来映射不同的时间尺度。
比如,以执行主体为一次运算所能处理的二进制数的最大位数为64bit的计算机(简称64bit的计算机)为例,本申请实施例中,可以设置包含第一时间尺度在内的63个时间尺度。除第一时间尺度外,其他63个时间尺度可以参见后文的表2。在预先设置有如表2所示的63个时间尺度的情况下,本申请实施例中,所述第二时间尺度的信息,可以是表2中所示的63个时间尺度中的至少一个时间尺度的信息。具体地,视实际的编码需求的不同,所述第二时间尺度的信息比如可以是表2中所示的所有63个时间尺度的信息,等等。
步骤13,根据第二时间尺度的信息,将所述第一整数,编码为所述第二时间尺度下的具备所述指定位数的第二整数,作为所述待编码的时间信息在所述第二时间尺度下的编码值。
所述第二时间尺度的信息,可以为对应于所述第二时间尺度的编码层级N。当所述第二时间尺度的信息为编码层级N时,步骤13的具体实现方式可以包括下述步骤:
对所述第一整数Tc左移一位,得到左移后的第一整数T'c;
根据编码层级N,按照DetaT=1<<(63–N),计算DetaT;
按照MTc=(T'c>>(64–N))<<(64–N)+DetaT–1,计算MTc,并将计算得到的MTc作为所述第二整数。
本申请实施例中,在将待编码的时间信息编码为具备所述指定位数的第二整数后,为便于后续对第二整数进行查找,如图1所示的该方法还可以包括:
将所述第二整数保存在本地;或者,将所述第二整数发送给数据存储方(比如数据库或者文件系统等),以保存在所述数据存储方中。
采用本申请实施例提供的上述方法,由于得到的编码值为整数,基于整数进行的计算相对于基于字符串进行的计算效率要高,因此相对于现有技术中将时间信息编码为字符串的方式相比,可以提高编码值的计算效率。
基于如图1所示的该时间信息编码方法,本申请实施例还提供一种编码值检索方法,该方法包括如图2所示的下述步骤:
步骤21,确定具备指定位数的编码值;
比如,可以确定由用户指定的指定位数的编码值。这里所说指定位数,比如可以是64bit。
步骤22,确定所述具备指定位数的编码值对应的时间尺度的信息;
这里所说的时间尺度的信息,比如可以是与该时间尺度对应的编码层级的信息。
步骤23,根据所述具备指定位数的编码值对应的时间尺度的信息,检索与所述具备指定位数的编码值相关的目标编码值。
其中,所述目标编码值和所述具备指定位数的编码值,是按照前文所述的时间信息编码方法对同一时间信息进行编码得到的。
针对步骤23的具体实现方式而言,可以包括下述两种方式:
方式一:根据所述具备指定位数的编码值对应的时间尺度的信息,检索对应的时间尺度小于所述具备指定位数的编码值对应的时间尺度的编码值,也即检索对应的编码层级大于所述具备指定位数的编码值对应的编码层级的编码值;或
方式二:根据所述具备指定位数的编码值对应的时间尺度的信息,检索对应的时间尺度大于所述具备指定位数的编码值对应的时间尺度的编码值,也即检索对应的编码层级小于所述具备指定位数的编码值对应的编码层级的编码值。
具体如何实现上述两种方式,可以参见实施例2中的详细介绍,本申请实施例1中对此不再赘述。
本申请实施例中,步骤21~23的执行主体,可以是某个计算机,它在得到检索结果后,还可以对检索结果进行输出,比如,若该编码值的检索方法的执行主体为某计算机,则对检索结果进行输出,具体可以是指输出到计算机的显示器进行显示,或者输出到与计算机相连接的其他设备,或者,发送给与计算机建立连接关系的服务器,等。针对步骤23而言,该计算机可以不自己进行目标编码值的检索,而是根据所述具备指定位数的编码值对应的时间尺度的信息,计算出目标编码值的检索依据(比如实施例2中的区间[A,B]),并将检索依据发送给其他设备(比如用于保存编码值的数据库的服务器),以使得所述其他设备根据该检索依据,检索所述目标编码值。
基于本申请实施例提供的时间信息编码方法,本申请实施例还提供一种解码方法,该方法的实现流程图如图3所示,包括下述步骤:
步骤31,确定指定位数的待解码的编码值;
步骤32,确定所述待解码的编码值对应的时间尺度的信息;
步骤33,根据所述待解码的编码值对应的时间尺度的信息,以及所述指定位数,将所述待解码的编码值,解码为相应的时间信息。
本申请实施例中,在解码得到所述时间信息后,可以保存、输出或显示所述时间信息。
本申请实施例中,步骤32的具体实现方式,可以包括:
确定所述待解码的编码值的奇偶性;
当确定出所述待解码的编码值为奇数时,按照Mid=(MTc–1)^(MTc+1)的计算方式,计算Mid;其中,MTc为所述待解码的编码值;
对于Mid,在初始化N=0,变量i的取值范围为[1,n]的情况下,执行下述循环操作,直至变量i的取值范围从n依递减到1,并在i=1的情况下计算出相应的N的值作为所述待解码的编码值对应的时间尺度的信息后,循环操作终止;
所述循环操作包括:
通过掩码取Mid的高位,然后右移2i-1位得到Mid0,判断此时的Mid0是否为0;如果此时的Mid0不为0,Mid=Mid0,且N保持不变,然后进行下一次循环;如果此时的Mid0为0,则通过掩码计算 N=N+2i-1,然后进行下一次循环。
具体如何进行所述循环操作,可以参见实施例2中详细介绍的内容,此处不再描述。
由于采用本方案得到的编码值为整数,基于整数进行的计算相对于基于字符串进行的计算效率要高,因此相对于现有技术中将时间信息编码为字符串的方式相比,本方案可以提高编码值的计算效率。
实施例2
基于前述实施例1详细叙述了本申请的发明构思,为了便于更好的理解本申请的技术特征、手段和效果,下面对本申请实施例提供的一种时间信息编码方法进一步说明,从而形成了本申请的又一个实施例。
本申请实施例2,从目前世界上广泛使用的时间系统中,选用下述系统作为时间信息编码方法的编码设计基础:
(1)历法系统:采用格里历,即公历。
(2)时间系统:采用UTC系统。
同时,在本申请实施例2所采用的时间信息编码方法中,暂不考虑对时区信息进行编码。这是基于两方面的考虑:一是时区信息并没有增加更多的日期或时间信息,它只是表达的是地方时与零时区之间时间差异;二是编码中添加时区信息,会增加不必要的编码复杂度和使用复杂度。由于不记录时区信息,因此可以对时间信息进行编码并保存相应的编码值即可。在具体使用编码值的时候,可以先将编码值解码为对应的时间信息,进一步地,若要在解码得到的时间信息的基础上,将该时间信息转化为指定时区的时间信息,那么,可以根据指定时区,对解码得到的时间信息进行换算,即可。
基于选取的历法系统和时间系统,待编码的时间信息,可以记录为如下形式:
公元A年B月C日D:E:F.GH
其中:A代表年,B代表月,C代表日,D代表小时,E代表分钟,F代表秒钟,G代表毫秒,H代表微秒。
以下详细介绍如何实现对待编码的时间信息进行编码、对编码值进行保存和检索,此外,再对一些与编码值相关的运算(包括对编码值进行解码)进行说明。
如图4所示,为本申请实施例2中对待编码的时间信息进行编码的流程示意图,包括如下步骤:
步骤41,计算机将待编码的时间信息,编码为单时间尺度下的具备指定位数的整数,作为该单时间尺度下的编码值Tc。其中,这里所说的单时间尺度,相当于本申请实施例1中所述的第一时间尺度。
本申请实施例2中,假设由64bit的计算机来执行如图4所示的步骤,则这里所说的Tc,可以是一个64bit的整数。
具体而言,将待编码的时间信息编码为Tc的具体实现过程,可以包含下述子步骤:
子步骤1:按照下述规则(1)~(8),分别将“公元A年B月C日D:E:F.GH”中的各个整数A~H,转化为相应的二进制数;
(1)、年计数的整数A转换成18bit二进制数,第1位是符号位,转化得到的该二进制数用于表示公元前131072年~公元131071年中的某一年;
这里所说的补码设计,是指当以“年”计数的整数A为公元前的某年(比如公元前220年)时,先按照“将A转化为18bit二进制数,且第1位是符号位”的方式,将整数A转化为18bit二进制数,然后,再求这个18bit二进制数除第1位(即符号位)外的其他位的补码。
本申请实施例中,当A为公元前的某年时,这个18bit二进制数的第1位为1。在求该18bit二进制数的补码时,先将“年计数”的符号(负号)直接去掉,改成正数,这时其二进制数的第1位改成0;然后对整个二进制数直接取负,则第1位变为1;其他2~18位按照补码方式排列。
需要说明的是,若所述指定位数为m,则年计数的整数A可以转换成(m-46)bit二进制数,第1位是符号位。转化得到的该二进制数用于表示公元前2m-46年~公元2m-46-1年中的某一年。其中,m为大于46的整数。
(2)、月计数的整数B转换成4bit二进制数,转化得到的该二进制数表示十进制数0~15中的一个,其中0、13、14、15在月份中无效,不会在编码值中体现;
(3)、日计数的整数C转换成5bit二进制数,转化得到的该二进制数表示十进制数0~31中的一个,其中0在日计数中无效,不会在编码值中体现;
(4)、时计数的整数D转换成5bit二进制数,转化得到的该二进制数表示十进制数0~31中的一个数,其中24~31在时计数中无效,不会在编码值中体现;
(5)、分计数的整数E转换成6bit二进制数,转化得到的该二进制数表示十进制数0~63中的一个数,其中60~63在分计数中无效,不会在编码值中体现;
(6)、秒计数的整数F转换成6bit二进制数,转化得到的该二进制数表示十进制数0~63中的一个数,其中60~63在秒计数中无效,不会在编码值中体现;
(7)毫秒计数的整数G转换成10bit二进制数,转化得到的该二进制数表示十进制数0~1023中的一个数,其中1000~1023在毫秒计数中无效,不会在编码值中体现;
(8)微秒计数的整数H转换成10bit二进制数,转化得到的该二进制数表示十进制数中的0~1023中的一个数,其中1000~1023在微秒计数中无效,不会在编码值中体现。
需要说明的是,一般说来,当待编码的时间信息的形式,符合格里历和UTC系统的规定(比如,以时计数的整数不超过24,以月计数的整数不超过12,等等)时,按照上述规则(1)~(8)对待编码的时间信息进行编码,不会得到无效的编码值。而当待编码的时间信息的形式不符合格里历和UTC系统的规定时,则有可能导致出现的无效的编码值出现。当出现无效的编码值的情况时,计算机可以根据上述规则(1)~(8)中对于无效的编码值的规定,判定出得到的编码值是否有效。这部分内容不是本申请实施例提供的方法所关注的重点,因此在说明书中不再展开进行详细说明。
子步骤2:按照规则(1)~(8),分别将“公元A年B月C日D:E:F.GH”中的各个整数A~H,转化为相应的二进制数后,采用A(18bit)、B(4bit)、C(5bit)、D(5bit)、E(6bit)、F(6bit)、G(10bit)、H(10bit)的不同大小的整数直接进行内存连接的方式,形成64bit的整数。
这里所说的内存连接的方式,是指将得到的分别对应于A~H的各二进制数进行拼接。由于分别对应于A~H的各二进制数的位数,都不是计算机传统操作的最小单元8bit,也不是8bit的整数倍,因此,这里所说的内存连接的方式,是指采用针对位域的操作方式。具体而言,可以将分别对应于A~H的各二进制数,按照依次对A~H的各二进制数分别占用的位域中的各个数进行拼接的方式,得到作为拼接结果的64bit的整数。
需要说明的是,若所述指定位数为m,则分别将公元A年B月C日D:E:F.GH”中的各个整数A~H,转化为相应的二进制数后,采用A(m-46bit)、B(4bit)、C(5bit)、D(5bit)、E(6bit)、F(6bit)、G(10bit)、H(10bit)的不同大小的整数直接进行内存连接的方式,形成的是m bit的整数。
以m=64为例,通过执行子步骤c获得的该64bit的整数,即本申请实施例2中所述的Tc。
由于Tc是一个64bit的二进制数,且第1位是符号位,因此,采用Tc所属的单时间尺度下的编码值,能够表示的10进制下的“年”的范围可以为:[-217,217-1],即,可以表示公元前131072年~公元131071年。
例如:以待编码的时间信息“公元A年B月C日D:E:F.GH”具体为“公元2016年5月14日15时30分23秒870毫秒124微秒”为例,按照上述规则(1)~(8)对该时间信息进行编码,可以得到如表1所示的编码值。
步骤42,计算机将单时间尺度下的编码值Tc,编码为指定时间尺度下的编码值。
本申请实施例2中,可以用“编码层级”来表示所述指定时间尺度。如下表2所示,为针对64bit的二进制数Tc所设置的不同编码层级与相应的时间尺度的对应关系表。
表2:
由上表2可知,该表2中,包含了尽可能多的时间尺度。具体而言,共包含了63个时间尺度。视实际需求,可以将待编码的时间信息,分别编码为该些不同的时间尺度下的编码值。
以待编码的时间信息为“公元2016年5月14日15时30分23秒870毫秒124微秒”为例,可以将该时间信息,编码为“1年(1yr)”、“1月(1mon)”、“1日(1d)”、“1小时(1h)”、“1分钟(1min)”、“1秒钟(1s)”、“1毫秒(1ms)”或“1微秒(1μs)”这些时间尺度下的编码值。当然,也可以将该时间信息,编码为其他时间尺度下的编码值。
以下以表1所示的二进制的Tc为例,详细介绍计算机如何将单时间尺度下的编码值Tc,编码为指定时间尺度下的编码值。具体地,该过程可以包括如下子步骤:
子步骤一:若编码人员期望将Tc编码为某时间尺度下的编码值,则通过查询上表2可以获知所述某时间尺度对应的编码层级N,并将该编码层级N输入给计算机,以使得计算机接收到编码人员输入的编码层级N;
比如,若假设编码人员期望将Tc编码为“1ms”这一时间尺度下的编码值,则通过查询上表2,可以获知“1ms”对应的编码层级为53,从而向计算机输入53,使得计算机接收到编码层级N=53。而若假设编码人员期望将Tc编码为“1μs”这一时间尺度下的编码值,则通过查询上表2,可以获知“1μs”对应的编码层级为63,从而向计算机输入63,使得计算机接收到编码层级N=63。
需要说明的是,编码层级N,也可以不是由编码人员输入的,而是预先设置在计算机中作为默认的编码层级。比如,若期望该计算机专用于将待编码的时间信息编码为第17层级下的编码值,则可以在计算机中预先设置编码层级N=17,作为默认的编码层级。在这样的情况下,若编码人员向计算机输入用于指示计算机将Tc编码为N这一时间尺度下的编码值的指令,则计算机可以确定N=默认的编码层级=17。
以下,以计算机接收到编码人员输入的编码层级N分别为53和63为例,对下述子步骤进行介绍。
子步骤二:计算机按照运算方式“Tc=Tc<<1”,对Tc进行处理;
通过执行子步骤二,可以实现将表1所示的64bit的二进制数,左移1位。
具体而言,通过执行子步骤二,Tc由表1中的“0000000111111000000101011100111101111001011111011001100001111100”,变化为:
“0000001111110000001010111001111011110010111110110011000011111000”
为便于区分描述,后文将对Tc执行左移1位得到的上述二进制数,记为T'c。
将Tc左移1位的目的,相当于是计算Tc×2,这是将单时间尺度下的Tc编码为第二指定时间尺度下的编码值的第一步。
需要说明的是,若所述指定位数为m,则对于得到的m位的二进制数Tc,也可以执行与子步骤二类似的操作。
子步骤三:计算机根据接收到的编码层级N,按照运算方式DetaT-1进行计算,其中,DetaT=1<<(63–N);
执行子步骤三的一个目的,是为了得到:编码层级N对应的时间尺度下能够对时间信息进行编码得到的各编码值中的、排序最靠近0的编码值,该编码值即DetaT-1对应的10进制下的整数。
执行子步骤三的另一个目的,是为了后续将编码层级N,体现在对Tc编码得到的指定时间尺度下的编码值中。具体请参见后文的子步骤四。
如图5所示,为当Tc为64bit的二进制整数时,能够对时间信息进行编码得到的不同时间尺度下的编码值的示意图。为保持附图中标记的可辨识程度较高,图5中没有画出Tc的符号位为1,即待编码的时间信息为“公元前**年...”的情况下的编码值。具体地,待编码的时间信息为“公元前**年...”的情况下,能够编码得到的不同时间尺度下的编码值的示意图如图6所示。以下重点介绍图5:
图5中,当编码层级为63时,由表2可知,相应的时间尺度为1μs。那么,若将Tc编码为该时间尺度下的编码值,可能得到的10进制下的编码值如图5中的第一行数字所示,为0、2、4、6、...、263-2中的某一个编码值。其中,编码层级63所对应的这行数字,是一个等差数列,该数列中相邻两个数之间的跨度为2,对应于时间信息中的1μs。
类似地,当编码层级为62时,相应的时间尺度为2μs。那么,若将Tc编码为该时间尺度下的编码值,那么,可能得到的10进制下的编码值如图5中的第二行数字所示,为1、5、9、13、...、264-3中的某一个编码值。其中,编码层级62所对应的这行数字,也是一个等差数列,该数列中相邻两个数之间的跨度为4,对应于时间信息中的2μs。
图5中其他行数字的含义及数字彼此之间的关系,以及图6中的数字的含义及数字彼此之间的关系,可以依照上述规律类推,不再赘述。
需要说明的是,受限于说明书附图篇幅的限制,本申请实施例中,并没有在图5中完整地示出63行数字。
基于上述对于图5的介绍,以下说明通过执行子步骤三实现“得到编码层级N对应的时间尺度下能够对时间信息进行编码得到的各编码值中的、排序最靠近0的编码值”的含义:
比如,若计算机获取到的N=63,那么,根据子步骤三中所述的DetaT=1<<(63–N)的计算方式,可计算出DetaT=1(二进制),DetaT-1=0。DetaT-1=0,对应于十进制下的整数0。请参照图5,此时,十进制下的整数0,为图5的N=63这个编码层级对应的时间尺度“1μs”下能够得到的各编码值中的、在图5中的排序最靠近0的编码值0。可见,通过执行子步骤三,可以得到N=63这个编码层级对应的时间尺度下的最小编码值。
类似地,若计算机获取到的N=62,那么,根据子步骤三中所述的DetaT=1<<(63–N)的计算方式,可计算出DetaT=10(二进制),DetaT-1=01(二进制),即等于十进制下的整数1。请参照图5,此时,十进制下的整数1,为图5的N=62这个编码层级对应的时间尺度“1μs”下能够得到的各编码值中的、在图5中的排序最靠近0的编码值1。可见,通过执行子步骤三,可以得到N=63这个编码层级对应的时间尺度下的最小编码值。
类似地,以N=53为例,计算机将N=53代入DetaT=1<<(63–N)进行运算,可以计算出DetaT=1<<(63–53)的结果,即DetaT=10000000000,从而得到DetaT-1=01111111111,对应于十进制下的整数1023。十进制下的整数1023,为N=53这个编码层级对应的时间尺度“1ms”下能够得到的各编码值中的、在图5中的排序最接近0的编码值。
需要说明的是,若所述指定位数为m,则子步骤三中,计算机根据接收到的编码层级N,按照运算方式DetaT-1进行计算,其中,DetaT=1<<(m-1–N)。
子步骤四:计算机按照运算方式“MTc=(T'c>>(64–N))<<(64–N)+DetaT–1”,计算Tc在第N编码层级对应的时间尺度下的编码值MTc;
具体地,以N=53为例,计算机将N=53,计算出的T'c以及DetaT-1代入子步骤四中所述的运算方式进行计算,可以得到MTc如下:
0000001111110000001010111001111011110010111110110011001111111111
将该二进制数转化为相应的10进制数,可得到10进制数“283774738205717503”。
以N=63为例,计算机将N=63,计算出的T'c以及DetaT代入子步骤四中所述的运算方式进行计算,可以得到MTc如下:
0000001111110000001010111001111011110010111110110011000011111000
将该二进制数转化为相应的10进制数,可得到10进制数“283774738205716728”。
需要说明的是,若所述指定位数为m,则子步骤四中,计算机按照运算方式“MTc=(T'c>>(m–N))<<(m–N)+DetaT–1”,计算Tc在第N编码层级对应的时间尺度下的编码值MTc。此处的DetaT–1中的DetaT,是根据DetaT=1<<(m-1–N)计算出的。
采用上述子步骤一~子步骤四,当N的取值不同时,可以得到待编码的时间信息在不同编码层级对应的时间尺度下的编码值。以待编码的时间信息为“公元2016年5月14日15时30分23秒870毫秒124微秒”为例,若编码人员分别向计算机输入编码层级17、21、26、31、37、43、53、63,则按照上述步骤一~步骤四的计算方式,可以得到如下表3所示的编码值:
表3:
时间信息 编码层级 编码值(10进制)
2016年5月14日15时30分23秒870毫秒124微秒 63 283774738205716728
2016年5月14日15时30分23秒870毫秒 53 283774738205717503
2016年5月14日15时30分23秒 43 283774738204983295
2016年5月14日15时30分 37 283774738222809087
2016年5月14日15时 31 283774738424135679
2016年5月14日 26 283774742719102975
2016年5月 21 283775155035963391
2016年 17 283797145268518911
需要说明的是,本申请仅以编码编码层级17、21、26、31、37、43、53、63为例,说明如何将Tc编码为不同时间尺度下的编码值。本领域技术人员可以理解,按照上述子步骤一~子步骤四,也可以实现将Tc编码为如表2所示的其他时间尺度下的编码值。本申请实施例中,不再举例赘述如何将Tc编码为如表2所示的其他时间尺度下的编码值。
通过执行上述步骤41和步骤42,可以实现将待编码的时间信息,编码为各个不同的指定时间尺度下的编码值,并且,无论指定时间尺度是多少,得到的编码值均为相同位数的二进制整数(可转化为彼此位数相同的10进制整数),从而便于按照统一的存储结构,对编码值进行存储和管理。相对于现有技术中将时间信息编码为字符串的方式而言,采用本申请实施例提供的方案由于得到的编码值为整数,从而也便于后续进行高效的相关计算。
针对背景技术中所述的现有技术而言,前文已提到,其存在的缺陷包括:多尺度时间信息难以统一组织。这里所说的多尺度时间信息难以统一组织,还可以包括:采用现有的时间信息编码方式对多尺度时间信息进行编码后,得到的编码值可能不能满足实际需求。
具体而言,目前,一种时间信息编码方式,一般仅对应一种时间尺度。这种情况在数据库系统中尤其明显。比如,将字段设置为Date数据类型,即表明这种时间信息编码方式只能存储“一天”这一时间尺度的数据,如果采用这样的Date数据类型,对于时间尺度为1年的“赤壁之战”事件就只能存储成“208-01-01”这一错误的时间;时间尺度为1天的“五四运动”事件可以准确存储为“1919-05-04”;时间尺度为1秒的“汶川地震”事件就只能舍弃精度,存储为“2008-05-12”。总的来说,即在传统的时间信息编码方式中,多尺度时间信息被强制地、有损地转换为单尺度时间信息进行存储,灵活性较差,难以满足不同的编码需求。这里所说的单尺度时间信息,是指按照某单一的时间尺度(如1天)对时间信息进行编码,而得到的所述单一的时间尺度下的编码值。
而采用本申请实施例提供的时间信息的编码方法,在将待编码的时间信息编码为第一时间尺度下的具备指定位数的第一整数后,可以根据第二时间尺度的信息,将第一整数编码为所述第二时间尺度下的具备所述指定位数的第二整数,并将第二整数,作为待编码的时间信息在所述第二时间尺度下的编码值。由于所述第二时间尺度的信息,可以由用户来指定,并且,所述第二时间尺度的信息可以有多个,比如可以有如表2所示的63个,从而本方案可以支持用户(比如可以是编码人员)根据实际编码需求,灵活地指定期望不同的第二时间尺度的信息,从而得到多个不同的第二时间尺度下的编码值。可见,在待编码的时间信息为多尺度时间信息的情况下,视实际编码需求,采用本方案可以得到多个不同的第二时间尺度下的编码值,从而灵活性较高,可以满足不同的编码需求。
本申请实施例提供的时间信息的编码方法,可以应用在文件系统和数据库系统中,作为处理待输入文件系统或数据库系统的时间信息的方法,或者作为文件系统或数据库系统处理输入文件系统或数据库系统的时间信息的方法。比如,可以利用本申请实施例提供的该方法,将待输入文件系统的时间信息编码为相应的编码值,再输入文件系统(或数据库系统)进行存储;或者,文件系统(或数据库系统)可以采用该方法,对输入文件系统(或数据库系统)的时间信息进行编码,从而得到相应的编码值并存储。
下文继续介绍如何对得到的不同时间尺度下的编码值进行存储、索引和进行相关计算。
首先,对如何存储得到的不同时间尺度下的编码值进行介绍:
本申请实施例中,计算机可以将通过执行步骤42得到的编码值,输出给数据接收方(如数据库)进行保存。针对数据库采用的保存方式而言,可以是采用与B树或B+树等一维索引方式对应的数据存储结构,对得到的编码值进行保存,以便后续查询。由于按照B树对数据进行存储,已经是比较成熟的相关技术,因此本申请实施例中对此不再进行详细介绍。
以下介绍基于存储的编码值,计算机如何进行一些相关的计算。具体地,这些计算分别包括:
第一类运算:针对指定的编码值MTc,确定MTc对应的编码层级N。
第二类运算:针对指定的编码值MTc,在确定出MTc对应的编码层级为N的情况下,确定MTc所包含的其他时间尺度下的编码值,也即,确定MTc所对应的时间信息,在大于N的编码层级(记为Nz)所对应的时间尺度下的编码值NT。
其中,若假设共有X个编码层级,则Nz的取值范围为[N+1,X];此外需要说明的是,MTc和MTc所包含的其他时间尺度下的编码值,均是对同一时间信息进行编码得到的编码值。
针对这里所述的“包含”需要说明的是,如表2所示的对应于不同编码层级的编码值之间具备包含关系,相应的时间信息之间也具备包含关系。针对这里所说的“包含关系”举例而言,表3中的时间信息“2016年5月14日15时30分”,它所包含的时间信息,包括表3中的“2016年5月14日15时30分0秒0毫秒0微秒”至“2016年5月14日15时30分59秒999毫秒999微秒”中不同尺度的所有时间段信息;相应地,“2016年5月14日15时30分”这一时间信息在第37编码层级对应的时间尺度下的编码值,就与该时间信息分别在第38-63编码层级对应的时间尺度下的编码值,具有所述的包含关系——具体而言,可以称该时间信息在第37编码层级对应的时间尺度下的编码值,包含该时间信息分别在第38-63编码层级对应的时间尺度下的编码值。
第三类运算:针对指定的编码值MTc,在确定MTc对应的编码层级为N的情况下,确定包含MTc其他时间尺度下的编码值,也即确定小于N的编码层级所对应的时间尺度下的编码值FT。
其中,需要说明的是,MTc和包含MTc的其他时间尺度下的编码值,均是对同一时间信息进行编码得到的编码值。
第四类运算:解码运算。具体而言,针对指定的编码值MTc,在确定MTc对应的编码层级为N的情况下,将MTc转换为单时间尺度下的编码值Tc。
第五类运算:针对指定的编码值MTc1和MTc2,确定二者之间的时态关系,判断二者是否相交、相接或相离。
以下分别对这五类运算的实现方式进行介绍。
一、第一类运算“针对指定的编码值MTc,确定MTc对应的编码层级N”的实现方式:
若假设对Tc进行编码时,是将Tc编码为如表2所示的63个时间尺度中的某个时间尺度下的编码值MTc,那么以通过这样的方式得到的MTc为例,第一类运算的具体实现方式包括下述步骤:
步骤1:计算机确定指定的编码值MTc;
这里所说的指定的编码值MTc,就是待确定对应的编码层级N的编码值。
比如,计算机可以在接收到用户输入的编码层级确定指令后,进入监听编码值的状态,在该状态下,计算机若接收到用户输入的编码值MTc,则确定用户输入的该MTc为指定的编码值MTc;
或者,计算机可以根据用户输入的针对MTc的选定指令,确定该选定指令对应的编码值MTc,作为指定的编码值MTc。
步骤2:计算机判断所述指定的编码值MTc是偶数还是奇数(即判断MTc&1是否等于0),若是偶数(即MTc&1=0),则执行步骤3,若是奇数(即MTc&1≠0),则执行步骤4;
步骤3:计算机判定MTc对应的编码层级N=63,也即,判定MTc是第63等级对应的时间尺度“μs”下的编码值,流程结束;
需要说明的是,若所述指定位数为m,则在步骤3中,计算机判定MTc对应的编码层级N=m-1,流程结束。
步骤4:计算机计算整数Mid=(MTc–1)^(MTc+1);
其中,符号“^”表示异或。
计算Mid的目的,是为了确定MTc–1和MTc+1前面高位有多少位是相同的,从而找到与MTc–1和MTc+1这两个多尺度整数编码最近的相同的父时间段编码值。
其中,这里所说的MTc–1和MTc+1的父时间段编码值,是指与MTc–1和MTc+1均具有前文所述的包含关系的编码值。具体而言,是该父时间段编码值包含MTc–1和MTc+1。
步骤4执行完毕后,执行步骤5。
步骤5:计算机通过二分法,确定整数Mid(64bit)左边有多少位是0,并根据确定结果,确定MTc对应的编码层级N。
具体地,Mid的位数即为m,此处的m是2的整数次幂,比如,当m=64时,m=64=26。若将2的幂指数记为n(比如,m=64时,n=6),则对于Mid,可以在初始化N=0,变量i的取值范围为[1,n]的情况下,执行下述循环操作,直至变量i的取值范围从n依递减到1,并在i=1的情况下计算出相应的N的值后,循环终止。具体而言,所述循环操作包括:
通过掩码取Mid的高位,变量i的取值范围从n到1,然后对取出的高位右移(右移符号为>>)2i-1位得到Mid0,判断此时的Mid0是否为0;如果此时的Mid0不为0,Mid=Mid0,且N保持不变;如果此时的Mid0为0,则通过掩码计算N=N+2i-1
具体而言,当MTc为64bit二进制整数(即m=64)时,在初始化N=0,变量i的取值范围为[1,n]的情况下,所述循环操作可以包括下述子步骤51~子步骤56。在执行下述子步骤时,是按照“子步骤51执行完毕后,再执行子步骤52;子步骤52执行完毕后,再执行子步骤53,依此类推”这样的执行顺序:
子步骤51:对于数Mid,通过掩码0xFFFFFFFF00000000取Mid的高位,然后将取出的高位右移(右移的运算符号为>>)32bit得到Mid0,判断此时的Mid0是否为0。如果Mid0不为0,Mid=Mid0,且N保持不变,然后执行子步骤52;否则,计算Mid=Mid&0x00000000FFFFFFFF,N=32,然后执行子步骤52;
子步骤52:对于数Mid,通过掩码0xFFFF0000取高位,然后将取出的高位右移(右移的运算符号为>>)16位得到Mid0,判断此时的Mid0是否为0。如果Mid0不为0,Mid=Mid0,且N保持不变,然后执行子步骤53;否则,通过掩码计算Mid=Mid&0x0000FFFF,N=N+16,然后执行子步骤53;
子步骤53:对于数Mid,通过掩码0xFF00取高位,然后将取出的高位右移(右移的运算符号为>>)8位得到Mid0,判断此时的Mid0是否为0。如果Mid0不为0,Mid=Mid0,且N保持不变,然后执行子步骤54;否则,通过掩码计算Mid=Mid&0x00FF,N=N+8,然后执行子步骤54;
子步骤54:对于数Mid,通过掩码0xF0取高位,然后将取出的高位右移(右移的运算符号为>>)4位得到Mid0,判断此时的Mid0是否为0。如果Mid0不为0,Mid=Mid0,且N保持不变,然后执行子步骤55;否则,通过掩码计算Mid=Mid&0x0F,N=N+4,然后执行子步骤55;
子步骤55:对于数Mid,通过掩码0xC取高位,然后将取出的高位右移(右移的运算符号为>>)2位得到Mid0,判断此时的Mid0是否为0。如果Mid0不为0,Mid=Mid0,且N保持不变,然后执行子步骤56;否则,通过掩码计算Mid=Mid&0x3,N=N+2,然后执行子步骤56;
子步骤56:对于数Mid,通过掩码0x2取高位,然后将取出的高位右移(右移的运算符号为>>)>>1位得到Mid0,判断此时的Mid0是否为0。如果Mid0不为0,Mid=Mid0,且N保持不变,流程结束;否则,通过掩码计算Mid=Mid&0x1,N=N+1,流程结束。
以下举例说明第一类运算的具体实现过程。
例如,假设m=64,指定的编码值MTc=(283774738222809087)10,那么,可以采用下述步骤确定该指定的编码值对应的编码层级N:
步骤一:计算机判断MTc=(283774738222809087)10为非0偶数还是奇数;
由于计算机计算得到MTc&1=1,从而判定MTc是奇数,因此执行下述步骤二;
步骤二:计算Mid;
具体地,可以计算出Mid=(MTc–1)^(MTc+1)=134217726
二进制下的Mid=(111111111111111111111111110)2
步骤三:通过二分法确定二进制下的整数Mid(64bit)左边有多少位是0,并根据确定结果,确定MTc对应的编码层级N,具体计算过程依次包括下述子步骤①~子步骤⑥:
子步骤①:对于Mid,通过掩码0xFFFFFFFF00000000取Mid的高位,然后将取出的高位右移(右移的运算符号为>>)32bit得到Mid0=((111111111111111111111111110)2&0xFFFFFFFF00000000)>>32,由于判断出Mid0=0,因此计算Mid=Mid&0x00000000FFFFFFFF=(111111111111111111111111110)2,N=32,然后执行子步骤②;
子步骤②:对于此时的Mid=Mid&0x00000000FFFFFFFF=(111111111111111111111111110)2,通过掩码0xFFFF0000取高位,然后将取出的高位右移(右移的运算符号为>>)16位得到Mid0=((111111111111111111111111110)2&0xFFFF0000)>>16=(11111111111)2;由于Mid0不为0,因此Mid=Mid0,N保持不变,即N=32,然后执行子步骤③;
子步骤③:对于此时的Mid=((111111111111111111111111110)2&0xFFFF0000)>>16=(11111111111)2,通过掩码0xFF00取高位,然后将取出的高位右移(右移的运算符号为>>)8位得到Mid0=((11111111111)2&0xFF00)>>8=(111)2;由于Mid0不为0,因此Mid=Mid0,N保持不变,即N=32,然后执行子步骤④;
子步骤④:对于此时的Mid=((11111111111)2&0xFF00)>>8=(111)2,通过掩码0xF0取高位,然后将取出的高位右移(右移的运算符号为>>)4位得到Mid0=((111)2&0xF0)>>4=0;由于此时的Mid0为0,因此计算Mid=Mid&0x0F=(111)2,N=32+4=36;
子步骤⑤:对于此时的Mid=(111)2,通过掩码0xC取高位,然后将取出的高位右移(右移的运算符号为>>)2位得到Mid0=((111)2&0xC)>>2=1;由于此时的Mid0不为0,因此Mid=Mid0,N=36;
子步骤⑥:对于此时的Mid=1,通过掩码0x2取高位,然后将取出的高位右移(右移的运算符号为>>)>>1位Mid0=(1&0x2)>>1=0;由于此时的Mid0为0,因此计算Mid=Mid&0x1=1,N=36+1=37。
通过上述计算,最终可以得到N=37。
二、第二类运算“针对指定的编码值MTc,在确定出MTc对应的编码层级为N的情况下,确定MTc所包含的其他时间尺度下的编码值”的实现方式:
第二类运算中,如何确定MTc对应的编码层级N,可以参见上述介绍的第一类运算的实现方式,此处不再赘述。以下重点介绍如何确定MTc所包含的其他时间尺度下的编码值。
如前文对于“包含关系”的介绍,采用本申请实施例提供的时间信息编码方法,编码得到的不同时间尺度下的编码值之间,往往存在包含关系,第二类运算的目的,就是从对同一时间信息进行编码得到的不同时间尺度下的编码值(包括MTc,以及其他一些编码值)中,找到指定的编码值MTc所能够包含的其他时间尺度下的编码值。MTc所能够包含的其他时间尺度下的编码值,也可以称为MTc的子时间段编码值,在本申请实施例中记为NT。
本申请实施例中,当MTc是64bit的二进制编码值时,假设将指定的编码值MTc所能够包含的其他时间尺度下的编码值记为NT,则由于采用本申请实施例提供的时间信息编码方法,对同一时间信息进行编码得到的不同时间尺度下的编码值,具备“时间尺度对应的编码层级的大小与时间尺度下的编码值的大小负相关”的特点,即“时间尺度对应的编码层级越大,该时间尺度下的编码值越小”,因此,NT满足:
A≤NT≤B,其中,A=MTc–1<<(63–N)+1,B=MTc+1<<(63–N)–1
其中,针对这里所说的其他时间尺度而言,由表2可知,若MTc对应的编码层级为N(比如为37),那么所述其他时间尺度,是指表2中编码层级大于N的其他编码层级对应的时间尺度。
需要说明的是,若所述指定位数为m,则有:A=MTc–1<<(m–N–1)+1,B=MTc+1<<(m–N–1)–1。
具体地,以m=64,MTc=(283774738222809087)10,MTc对应的编码层级N=37为例,可以按照A=MTc–1<<(63–N)+1,B=MTc+1<<(63–N)–1的计算方式,计算出MTc包含的其他所有编码值NT如下:
(283774738155700224)10≤NT≤(283774738289917950)10
结合表3可知,按照此种计算方式得到的编码值的范围[A,B],至少包含了表3中所示的分别对应于63、53、43编码层级的编码值,从而实现了准确确定出对应于37编码层级的MTc所包含的编码值。
本申请实施例中,计算机在确定出MTc包含的其他所有编码值NT所处的范围后,可以以该范围作为查询依据,输出到保存编码值的数据库中,以触发数据库的服务器根据该查询依据,从保存的编码值中,查询处于该范围内的编码值,并将查询结果返回给所述计算机。当然,所述计算机,可以就是数据库的服务器,那么,在该服务器确定出MTc包含的其他所有编码值NT所处的范围后,可以直接以该范围作为查询依据,从保存的编码值中,查询处于该范围内的编码值。
三、以下介绍第三类运算“针对指定的编码值MTc,在确定MTc对应的编码层级为N的情况下,确定包含MTc其他时间尺度下的编码值,也即确定小于N的编码层级所对应的时间尺度下的编码值FT”的实现方式:
第三类运算中,如何确定MTc对应的编码层级N,可以参见上述介绍的第一类运算的实现方式,此处不再赘述。以下重点介绍如何确定包含MTc其他时间尺度下的编码值FT。
如前文对于“包含关系”的介绍,采用本申请实施例提供的时间信息编码方法,编码得到的不同时间尺度下的编码值之间,往往存在包含关系,第三类运算的目的,就是从对同一时间信息进行编码得到的不同时间尺度下的编码值(包括MTc,以及其他一些编码值)中,找到能够包含指定的编码值MTc的其他时间尺度下的编码值。包含MTc的其他时间尺度下的编码值,也可以称为MTc的父时间段编码值,在本申请实施例中记为FT。
本申请实施例中,当MTc是64bit的二进制编码值时,由于采用本申请实施例提供的时间信息编码方法,对同一时间信息进行编码得到的不同时间尺度下的编码值,具备“时间尺度对应的编码层级的大小与时间尺度下的编码值的大小负相关”的特点,即“时间尺度对应的编码层级越大,该时间尺度下的编码值越小”,因此,包含MTc的其他时间尺度下的编码值FT满足:
FT=(MTc>>(64–N+N'))<<(64–N+N')+OTn–1
其中,OTn的计算方式为:OTn=1<<(63–N+N'),N'的取值范围为[1,N-1]。OTn的物理含义,是指第N–N'编码层级对应的时间尺度下的编码值中,大小最接近0的编码值。编码层级对应的时间尺度下的编码值与0的大小关系,具体可以参见图5和图6。
需要说明的是,若所述指定位数为m,则包含MTc的其他时间尺度下的编码值FT满足:
FT=(MTc>>(m–N+N'))<<(m–N+N')+OTn–1
其中,OTn的计算方式为:OTn=1<<(m–N+N'-1),N'的取值范围为[1,N-1]。
例如,以m=64,MTc=(283774738222809087)10,MTc对应的编码层级N=37为例,以下介绍如何按照第三类运算,确定出包含MTc的父时间段编码值FT:
以N'的取值为[1,37-1]这个范围内的“16”为例,首先,可以计算第N–N'=21编码层级对应的时间尺度下的编码值中,大小最接近0的编码值OTn:
OTn=1<<(63–21)=(4398046511104)10
然后,基于计算得到的OTn,计算MTc的第21编码层级对应的时间尺度下的父时间段编码:
FT=(MTc>>(64–21))<<(64–21)+OTn–1=(283775155035963391)10
类似地,当N'的取值为[1,37-1]这个范围内的其他值时,也可以参照类似上述计算方式的方式,计算相应的父时间段编码,此处不再举例一一详述。
本申请实施例中,用于实现第三类运算的计算机,可以是数据库的服务器。那么,该服务器在通过第三类运算,确定出包含MTc的其他时间尺度下的编码值后,可以以所述其他时间尺度下的编码值,作为包含MTc的其他时间尺度下的编码值的查询结果,反馈给发出“包含MTc的其他时间尺度下的编码值的查询请求”的查询方。
四、以下介绍第四类运算“针对指定的编码值MTc,在确定MTc对应的编码层级为N的情况下,将MTc转换为单时间尺度下的编码值Tc”的实现方式,该实现方式,也即对MTc进行解码的实现方式。
第四类运算中,如何针对指定的编码值MTc确定MTc对应的编码层级N,可以参见上述介绍的第一类运算的实现方式,此处不再赘述。以下重点介绍如何将MTc转换为单时间尺度下的编码值Tc。
具体地,可以按照下述运算方式,实现将MTc转换为单时间尺度下的编码值Tc。
Tc=(MTc–1<<(63–N)+1)>>1
在按照上述方式,完成将MTc转换为单时间尺度下的编码值Tc后,可以对Tc进行进一步的解码,假设该Tc是一个64bit的整数,则具体的解码过程如下:
基于前文介绍过的规则(1)~(8),实现对Tc解码的方式可以包括:按照A(18bit)、B(4bit)、C(5bit)、D(5bit)、E(6bit)、F(6bit)、G(10bit)、H(10bit)位域宽度,依次从二进制下的Tc中直接取出各相应位数的二进制数字,并将取出的各相应位数的二进制数字转化为10进制下的数字,从而得到MTc对应的时间信息的传统时间表达式:公元A年B月C日D:E:F.GH。
例如,以MTc=(283775155035963391)10,MTc对应的编码层级N=21为例,按照Tc=(MTc–1<<(63–N)+1)>>1的运算方式,可以得到:
Tc=(MTc–1<<(63–21)+1)>>1
=(141885378494726144)10
=(111111000000101000000000000000000000000000000000000000000)2
进一步地,按照A(18bit)、B(4bit)、C(5bit)、D(5bit)、E(6bit)、F(6bit)、G(10bit)、H(10bit)位域宽度,从二进制下的Tc中直接取出各相应位数的二进制数字,并将取出的各相应位数的二进制数字转化为10进制下的数字。取出的各相应位数的二进制数字及对应的10进制下的数字如下:
A=(000000011111100000)2=(2016)10;B=(0101)2=(5)10;C=0;D=0;E=0;F=0;G=0;H=0。
那么,按照上述10进制下的数字,可以得到MTc对应的时间信息的传统时间表达式:公元2016年5月。至此,实现了对于MTc的解码,达到了将MTc解码为时间信息的目的。
需要说明的是,若所述指定位数为m,则Tc=(MTc–1<<(m–N–1)+1)>>1。将Tc对应的m bit整数按照A((m-46)bit)、B(4bit)、C(5bit)、D(5bit)、E(6bit)、F(6bit)、G(10bit)、H(10bit)位域宽度直接取出,可以形成MTc对应的传统时间表达方式:公元A年B月C日D:E:F.GH。
五、最后,介绍第五类运算“针对指定的编码值MTc1和MTc2,确定二者之间的时态关系,判断二者是否相交、相接或相离”的实现方式。
首先,对两个编码值之间的“相交”、“相接”和“相离”的关系进行介绍。
两个编码值之间相交,是指,两个编码值分别包含的其他时间尺度下的编码值所属的编码值区间(如前文所述的区间[A,B])之间存在交集)。需要说明的是,若一个编码值区间包含另一个编码值区间,也可以说两个编码值之间相交。
两个编码值之间相接,是指,两个编码值分别包含的其他时间尺度下的编码值所属的编码值区间满足:一个编码值区间的上限,等于另一个编码值区间的下限-2;
两个编码值之间相离,是指,两个编码值分别包含的其他时间尺度下的编码值所属的编码值区间不存在交集。
以下具体说明如何实现第五类运算:
首先,采用第二类运算,确定出MTc1和MTc2分别包含的其他时间尺度下的编码值;
比如,假设采用第二类运算,确定出:MTc1包含的其他时间尺度下的编码值,为属于[A1,B1]这一编码值区间内的编码值;MTc2包含的其他时间尺度下的编码值,为属于[A2,B2]这一编码值区间内的编码值。
然后,根据A1、B1、A2、B2之间的关系,判断MTc1和MTc2是否相交、相接或相离。具体而言:
如果B1<A2,则判定结果为:MTc1和MTc2相离,且MTc1在MTc2之前(也即MTc1小于MTc2,后文类似表述的含义与此同,不再赘述);
如果B2<A1,则判定结果为:MTc1和MTc2相离,且MTc2在MTc1之前(也即MTc2小于MTc1);
如果A1<A2且B2<B1,则判定结果为:MTc1包含MTc2;
如果A2<A1且B1<B2,则判定结果为:MTc2包含MTc1;
如果A1<A2且A2<B1且B1<B2,则判定结果为:MTc1和MTc2相交且MTc1在MTc2之前;
如果A2<A1且A1<B2且B2<B1,则判定结果为:MTc1和MTc2相交且MTc2在MTc1之前;
如果A1=B2-2,则判定结果为:MTc1和MTc2相接,且MTc2在MTc1之前;
如果A2=B1-2,则判定结果为:MTc1和MTc2相接,且MTc1在MTc2之前。
举例而言,若假设有两个编码值,分别为:MTc1=(283775155035963391)10,MTc2=(283774738222809087)10,那么,第三类运算的实现过程包括:
首先,通过进行第二类运算,得到MTc1包含的其他时间尺度下的编码值所属的编码值区间,为[(283770756989452288)10,(283779553082474494)10];MTc2包含的其他时间尺度下的编码值所属的编码值区间,为[(283774738155700224)10,(283774738289917950)10];
然后,判断计算得到的两个编码值区间的关系。由于这两个编码值区间,满足:
(283770756989452288)10<(283774738155700224)10,且
(283774738289917950)10<(283779553082474494)10
因此,可以得出判定结果为:MTc1包含MTc2。
以下结合实验数据,对本申请实施例2提供的时间信息的编码方法的技术效果进行说明。本申请实施例提供的该时间信息的编码方法,在下文中,也可以称为“多尺度时间段整数编码方法”。
在实验中,将多尺度时间段整数编码方法与如表4所示的现有各类时间编码段方式进行对比,对比对象是传统采用字符串、多列时间分量、起始时间的方法,进行建立索引与查询检索对比。为便于对比,在实验中第二时间尺度可以限定为常用时间尺度,包括:1年、1个月、1日、1小时、1分钟、1秒、1毫秒、1微秒。
表4:
与如表4所示的现有各类时间编码段方式进行对比,本申请实施例提供的多尺度时间段整数编码至少存在下述技术优势:
(1)在编码和解码计算方面,采用多尺度时间段整数编码方法得到的编码值比字符串编码方法得到的编码值有明显优势。具体而言,在编码阶段,多尺度时间段整数编码方法的效率约是字符串编码方法的效率的11倍;解码阶段,多尺度时间段整数编码方法对应的解码方法的解码效率,约是字符串编码方法对应的解码方法的解码效率的105倍;综合编码阶段与解码阶段,多尺度时间段整数编码方法对应的效率约是字符串编码方法对应的效率的82倍。
(2)在数据库测试方面,数据库中生成相同的索引,索引占用的空间大小,多尺度时间段整数编码编码是最小的,其次是字符串编码方法、多列时间分量编码方法和起止时间编码方法;在建立索引所耗费的时间方面,多尺度时间段整数编码方法是最少,其次是字符串编码方法,而多列时间分量编码方法则和起止时间编码方法相当。
(3)在数据库的查询中,由于不同数据库对字符串和数字的存储方式的差异(比如Oracle和MySQL在处理整数的时候,采用的是字符串的方式),综合来说,多尺度时间段整数编码方法比字符串编码方法略有优势(只是在有限次比对上带来略微的优势),两者较多列时间分量编码方法和起止时间编码方法大约效率快3-4倍。
(4)由于数据库采用字符串来存储整数,因此脱离数据库单纯比较多尺度时间段整数编码方法和字符串编码方法的检索效率显得很重要。在建立B+树及时间查询方面,多尺度时间段整数编码方法相对于字符串编码方法有很明显的优势。在同等数据量的情况下,建立B+树索引过程中,基于字符串编码方法得到的编码值建立B+树索引,明显慢于基于多尺度整数编码方法得到的编码值建立B+树索引,具体而言,基于字符串编码方法得到的编码值建立B+树的平均耗时,为基于多尺度整数编码方法得到的编码值建立B+树索引的平均耗时的4.6倍。在同等数据量的情况下,从判断指定的编码值是否相交的查询耗时情况来看,对基于字符串编码方法得到的编码值进行的该查询的平均耗时,为基于多尺度时间段整数编码方法得到的编码值进行的该查询的4倍。
实施例3
为解决采用现有的时间信息编码方式导致编码值计算效率较低的问题,本申请实施例提供一种时间信息编码装置。该装置的具体结构示意图如图7a所示,包括下述功能单元:
时间信息确定单元71,用于确定待编码的时间信息。
比如,所述时间信息编码装置,可以显示7b所示的用户界面70,那么,时间信息确定单元71,可以将用户输入到如图7b所示的该用户界面中的时间信息输入框711中的时间信息,确定为所述待编码的时间信息。
编码单元72,用于将所述待编码的时间信息,编码为第一时间尺度下的具备指定位数的第一整数;以及,根据第二时间尺度的信息,将所述第一整数,编码为所述第二时间尺度下的具备所述指定位数的第二整数,作为所述待编码的时间信息在所述第二时间尺度下的编码值。
其中,所述第一时间尺度,比如可以是根据计算设备一次运算所能处理的二进制数的最大位数,所确定出的多个时间尺度中的最小的时间尺度。
仍然以如图7b所示的用户界面为例,编码单元72可以将用户输入到该用户界面中的时间尺度输入框712中的时间尺度的信息,比如图中的“1s”,确定为所述第二时间尺度的信息。在用户点击如图7b所示的确认按钮713后,编码单元72可以执行操作:将所述待编码的时间信息,编码为第一时间尺度下的具备指定位数的第一整数;以及,根据第二时间尺度的信息,将所述第一整数,编码为所述第二时间尺度下的具备所述指定位数的第二整数。
或者,所述第二时间尺度的信息,也可以是默认的时间尺度的信息。
在一种实施方式中,时间信息确定单元71将所述待编码的时间信息,编码为第一时间尺度下的具备指定位数的第一整数,具体可以包括:
按照预定的第一编码规则,将所述待编码的时间信息,编码为第一时间尺度下的具备指定位数的第一整数;
其中,所述预定的编码规则,包括:使得所述待编码的时间信息包含的不同时间粒度的时间信息所对应的编码值,共同占用46bit;
所述不同时间粒度,包括月、日、小时、分、秒、毫秒和微秒。
其中,所述预定的编码规则,还包括:
将所述待编码的时间信息包含的月这一时间粒度的时间信息,编码为4bit的二进制数;
将所述待编码的时间信息包含的日这一时间粒度的时间信息,编码为5bit的二进制数;
将所述待编码的时间信息包含的时这一时间粒度的时间信息,编码为5bit的二进制数;
将所述待编码的时间信息包含的分这一时间粒度的时间信息,编码为6bit的二进制数;
将所述待编码的时间信息包含的秒这一时间粒度的时间信息,编码为6bit的二进制数;
将所述待编码的时间信息包含的毫秒这一时间粒度的时间信息,编码为10bit的二进制数;
将所述待编码的时间信息包含的微秒这一时间粒度的时间信息,编码为10bit的二进制数。
进一步地,所述预定的编码规则,还可以包括:
将所述待编码的时间信息包含的年这一时间粒度的时间信息,编码为(m-46)bit的二进制数;
其中,所述m,为所述指定位数;所述(m-46)bit的二进制数的第一位,为符号位;当所述待编码的时间信息为表示公元前的时间的信息时,所述符号位上的数字为1,表示负数;
当所述符号位上的数字为1时,所述待编码的时间信息包含的各时间粒度的时间信息,采用补码方式进行编码。
本申请实施例中,所述编码单元72如何根据第二时间尺度的信息,将所述第一整数,编码为所述第二时间尺度下的具备所述指定位数的第二整数,可以参见实施例1和实施例2中将所述第一整数编码为所述第二整数的实现方式,此处不再赘述。
本申请实施例中,为了便于后续使用第二整数,或者利用第二整数进行一些运算,如图7所示的该装置还可以包括:存储单元。该存储单元,用于将所述第二整数存储在本地;或将所述第二整数发送给数据存储方,以保存在所述数据存储方中。
本申请实施例中,所述装置还可以包括显示单元,该显示单元用于显示所述第二整数。比如,以如图7b所示的用户界面为例,该显示单元可以所述第二整数,显示在该用户界面的编码结果显示框714中。
采用本申请实施例提供的上述装置,在将待编码的时间信息编码为第一时间尺度下的具备指定位数的第一整数后,可以根据第二时间尺度的信息,将第一整数编码为所述第二时间尺度下的具备所述指定位数的第二整数,并将第二整数,作为待编码的时间信息在所述第二时间尺度下的编码值。由于所述第二时间尺度的信息,可以由用户来指定,并且,所述第二时间尺度的信息可以有多个,比如可以有如表2所示的63个,从而本方案可以支持用户(比如可以是编码人员)根据实际编码需求,灵活地指定期望不同的第二时间尺度的信息,从而得到多个不同的第二时间尺度下的编码值。可见,在待编码的时间信息为多尺度时间信息的情况下,视实际编码需求,采用本方案可以得到多个不同的第二时间尺度下的编码值,从而灵活性较高,可以满足不同的编码需求。
另外,由于采用本方案得到的编码值为整数,基于整数进行的计算相对于基于字符串进行的计算效率要高,因此相对于现有技术中将时间信息编码为字符串的方式相比,本方案还可以提高编码值的计算效率。
出于与本申请实施例提供的编码值检索方法相同的发明构思,本申请实施例还提供一种编码值检索装置。该装置的具体结构示意图如图8所示,包括如下功能单元:
编码值确定单元81,用于确定具备指定位数的编码值;
信息确定单元82,用于确定所述具备指定位数的编码值对应的时间尺度的信息;
检索单元83,用于根据所述具备指定位数的编码值对应的时间尺度的信息,检索与所述具备指定位数的编码值相关的目标编码值。
其中,所述目标编码值和所述具备指定位数的编码值,是按照所述的时间信息编码方法对同一时间信息进行编码得到的。
在一种实施方式中,所述检索单元83具体可以用于:
根据所述具备指定位数的编码值对应的时间尺度的信息,检索对应的时间尺度小于所述具备指定位数的编码值对应的时间尺度的编码值。检索单元83该功能的具体实现方式,可以参见实施例1和实施例2中的相关描述,此处不再赘述。
在一种实施方式中,所述检索单元83具体可以用于:
根据所述具备指定位数的编码值对应的时间尺度的信息,检索对应的时间尺度大于所述具备指定位数的编码值对应的时间尺度的编码值。检索单元83该功能的具体实现方式,可以参见实施例1和实施例2中的相关描述,此处不再赘述。
出于与本申请实施例提供的编码值检索方法相同的发明构思,本申请实施例还提供一种解码装置。该装置的具体结构示意图如图9所示,包括如下功能单元:
编码值确定单元91,用于确定指定位数的待解码的编码值;
时间尺度确定单元92,用于确定所述待解码的编码值对应的时间尺度的信息;
解码执行单元93,用于根据所述待解码的编码值对应的时间尺度的信息,以及所述指定位数,将所述待解码的编码值,解码为相应的时间信息。
为了满足对于解码得到的所述时间信息的保存、输出或显示的需求,在一种实施方式中,所述装置还可以包括下述功能单元中的至少一个:
保存单元,用于保存解码得到的所述时间信息;
输出单元,用于输出解码得到的所述时间信息——比如,输出给该时间信息的接收方,该接收方比如可以是服务器或用户设备,等;
显示单元,用于显示解码得到的所述时间信息。
本申请实施例中,时间尺度确定单元92如何确定所述待解码的编码值对应的时间尺度的信息,以及,解码执行单元93如何根据所述待解码的编码值对应的时间尺度的信息,以及所述指定位数,将所述待解码的编码值,解码为相应的时间信息,可以参见实施例1和实施例2中的相关描述,此处不再赘述。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (18)

1.一种时间信息编码方法,其特征在于,包括:
确定待编码的时间信息;
将所述待编码的时间信息,编码为第一时间尺度下的具备指定位数的第一整数;
根据第二时间尺度的信息,将所述第一整数,编码为所述第二时间尺度下的具备所述指定位数的第二整数,作为所述待编码的时间信息在所述第二时间尺度下的编码值;其中,
所述根据第二时间尺度的信息,将所述第一整数,编码为所述第二时间尺度下的具备所述指定位数的第二整数,包括:
对所述第一整数左移一位,得到左移后的第一整数T'c;
按照DetaT=1<<(m-1–N),计算DetaT;其中,N为所述第二时间尺度的信息;
按照MTc=(T'c>>(m–N))<<(m–N)+DetaT–1,计算MTc作为所述第二整数;其中,m为所述指定位数。
2.如权利要求1所述的方法,其特征在于,
所述第一时间尺度,是根据计算设备一次运算所能处理的二进制数的最大位数,所确定出的多个时间尺度中的最小的时间尺度。
3.如权利要求1所述的方法,其特征在于,
所述第二时间尺度的信息,包括下述至少一种:
默认的时间尺度的信息;
用户输入的第二时间尺度的信息。
4.如权利要求1所述的方法,其特征在于,
将所述待编码的时间信息,编码为第一时间尺度下的具备指定位数的第一整数,包括:
按照预定的第一编码规则,将所述待编码的时间信息,编码为第一时间尺度下的具备指定位数的第一整数;
其中,所述预定的第一编码规则,包括:使得所述待编码的时间信息包含的不同时间粒度的时间信息所对应的编码值,共同占用46b it;
所述不同时间粒度,包括月、日、小时、分、秒、毫秒和微秒。
5.如权利要求4所述的方法,其特征在于,
所述预定的第一编码规则,还包括:
将所述待编码的时间信息包含的月这一时间粒度的时间信息,编码为4b it的二进制数;
将所述待编码的时间信息包含的日这一时间粒度的时间信息,编码为5b it的二进制数;
将所述待编码的时间信息包含的时这一时间粒度的时间信息,编码为5b it的二进制数;
将所述待编码的时间信息包含的分这一时间粒度的时间信息,编码为6b it的二进制数;
将所述待编码的时间信息包含的秒这一时间粒度的时间信息,编码为6b it的二进制数;
将所述待编码的时间信息包含的毫秒这一时间粒度的时间信息,编码为10b it的二进制数;
将所述待编码的时间信息包含的微秒这一时间粒度的时间信息,编码为10b it的二进制数。
6.如权利要求5所述的方法,其特征在于,
所述预定的第一编码规则,还包括:
将所述待编码的时间信息包含的年这一时间粒度的时间信息,编码为(m-46)b it的二进制数;
其中,所述m,为所述指定位数;所述(m-46)b it的二进制数的第一位,为符号位;当所述待编码的时间信息为表示公元前的时间的信息时,所述符号位上的数字为1,表示负数;
当所述符号位上的数字为1时,所述待编码的时间信息包含的各时间粒度的时间信息,采用补码方式进行编码。
7.如权利要求1所述的方法,其特征在于,
根据第二时间尺度的信息,将所述第一整数,编码为所述第二时间尺度下的具备所述指定位数的第二整数,作为所述待编码的时间信息在所述第二时间尺度下的编码值后,所述方法还包括:
将所述第二整数存储在本地;或
将所述第二整数发送给数据存储方,以保存在所述数据存储方中。
8.如权利要求1所述的方法,其特征在于,
所述第二时间尺度的信息,为与所述第二时间尺度相对应的编码层级的级数。
9.如权利要求1所述的方法,其特征在于,
根据第二时间尺度的信息,将所述第一整数,编码为所述第二时间尺度下的具备所述指定位数的第二整数,包括:
根据指定的多个第二时间尺度的信息,将所述第一整数,编码为所述第二时间尺度下的具备所述指定位数的第二整数。
10.一种基于如权利要求1所述的时间信息编码方法的编码值检索方法,其特征在于,包括:
确定具备指定位数的编码值;
确定所述具备指定位数的编码值对应的时间尺度的信息;
根据所述具备指定位数的编码值对应的时间尺度的信息,检索与所述具备指定位数的编码值相关的目标编码值;
其中,所述目标编码值和所述具备指定位数的编码值,是按照所述的时间信息编码方法对同一时间信息进行编码得到的;
所述根据所述具备指定位数的编码值对应的时间尺度的信息,检索与所述具备指定位数的编码值相关的目标编码值,包括:
根据所述具备指定位数的编码值对应的时间尺度的信息,检索对应的时间尺度小于所述具备指定位数的编码值对应的时间尺度的编码值;或
根据所述具备指定位数的编码值对应的时间尺度的信息,检索对应的时间尺度大于所述具备指定位数的编码值对应的时间尺度的编码值。
11.如权利要求10所述的方法,其特征在于,
根据所述具备指定位数的编码值对应的时间尺度的信息,检索对应的时间尺度小于所述具备指定位数的编码值对应的时间尺度的编码值,包括:
根据所述具备指定位数的编码值对应的时间尺度的信息,按照A=MTc–1<<(m-1–N)+1,B=MTc+1<<(m-1–N)–1的计算方式,计算编码值区间[A,B];其中,MTc为所述具备指定位数的编码值;m为所述指定位数;N为MTc对应的时间尺度的信息;
根据所述编码值区间[A,B],检索位于所述编码值区间[A,B]内的编码值,作为检索结果。
12.如权利要求11所述的方法,其特征在于,
根据所述编码值区间[A,B],检索位于所述编码值区间[A,B]内的编码值,包括:
将所述编码值区间[A,B]发送给编码值存储方,以使得所述编码值存储方根据所述编码值区间[A,B],检索位于所述编码值区间[A,B]内的编码值。
13.如权利要求10所述的方法,其特征在于,
根据所述具备指定位数的编码值对应的时间尺度的信息,检索对应的时间尺度大于所述具备指定位数的编码值对应的时间尺度的编码值,包括:
按照OTn=1<<(m-1–N+N')的计算方式,计算分别对应于不同取值的N'的OTn;其中,MTc为所述具备指定位数的编码值;m为所述指定位数;N为MTc对应的时间尺度的信息;N'的取值包括[1,N-1]内的至少一个整数;
根据计算得到的各个OTn,按照FT=(MTc>>(m–N+N'))<<(m–N+N')+OTn–1的计算方式,计算与所述各个OTn对应的FT,作为检索结果。
14.一种基于如权利要求1所述的时间信息编码方法的解码方法,其特征在于,包括:
确定指定位数的待解码的编码值;
确定所述待解码的编码值对应的时间尺度的信息;
根据所述待解码的编码值对应的时间尺度的信息,以及所述指定位数,将所述待解码的编码值,解码为相应的时间信息。
15.如权利要求14所述的解码方法,其特征在于,
所述方法还包括:
保存、输出或显示所述时间信息。
16.一种时间信息编码装置,其特征在于,包括:
时间信息确定单元,用于确定待编码的时间信息;
编码单元,用于将所述待编码的时间信息,编码为第一时间尺度下的具备指定位数的第一整数;以及,根据第二时间尺度的信息,将所述第一整数,编码为所述第二时间尺度下的具备所述指定位数的第二整数,作为所述待编码的时间信息在所述第二时间尺度下的编码值;其中,
所述根据第二时间尺度的信息,将所述第一整数,编码为所述第二时间尺度下的具备所述指定位数的第二整数,包括:
对所述第一整数左移一位,得到左移后的第一整数T'c;
按照DetaT=1<<(m-1–N),计算DetaT;其中,N为所述第二时间尺度的信息;
按照MTc=(T'c>>(m–N))<<(m–N)+DetaT–1,计算MTc作为所述第二整数;其中,m为所述指定位数。
17.一种编码值检索装置,其特征在于,包括:
编码值确定单元,用于确定具备指定位数的编码值;
信息确定单元,用于确定所述具备指定位数的编码值对应的时间尺度的信息;
检索单元,用于根据所述具备指定位数的编码值对应的时间尺度的信息,检索与所述具备指定位数的编码值相关的目标编码值;
其中,所述目标编码值和所述具备指定位数的编码值,是按照如权利要求1所述的时间信息编码方法对同一时间信息进行编码得到的。
18.一种基于如权利要求16所述的时间信息编码装置的解码装置,其特征在于,包括:
编码值确定单元,用于确定指定位数的待解码的编码值;
时间尺度确定单元,用于确定所述待解码的编码值对应的时间尺度的信息;
解码执行单元,用于根据所述待解码的编码值对应的时间尺度的信息,以及所述指定位数,将所述待解码的编码值,解码为相应的时间信息。
CN201610509377.9A 2016-06-30 2016-06-30 时间信息编码方法、编码值检索方法、解码方法与装置 Active CN106126486B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201610509377.9A CN106126486B (zh) 2016-06-30 2016-06-30 时间信息编码方法、编码值检索方法、解码方法与装置
PCT/CN2016/107461 WO2018000709A1 (zh) 2016-06-30 2016-11-28 时间信息编码方法、编码值检索方法、解码方法与装置
US16/312,980 US11544443B2 (en) 2016-06-30 2016-11-28 Time information coding method, coded value searching method, decoding method and device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610509377.9A CN106126486B (zh) 2016-06-30 2016-06-30 时间信息编码方法、编码值检索方法、解码方法与装置

Publications (2)

Publication Number Publication Date
CN106126486A CN106126486A (zh) 2016-11-16
CN106126486B true CN106126486B (zh) 2019-03-08

Family

ID=57468785

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610509377.9A Active CN106126486B (zh) 2016-06-30 2016-06-30 时间信息编码方法、编码值检索方法、解码方法与装置

Country Status (3)

Country Link
US (1) US11544443B2 (zh)
CN (1) CN106126486B (zh)
WO (1) WO2018000709A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106126486B (zh) * 2016-06-30 2019-03-08 童晓冲 时间信息编码方法、编码值检索方法、解码方法与装置
CN107341191B (zh) * 2017-06-14 2020-10-09 童晓冲 一种三维空间的多尺度整数化编码方法和装置
CN110019932A (zh) * 2017-10-31 2019-07-16 北京国双科技有限公司 数据处理的方法及装置
CN111555815B (zh) * 2020-05-19 2022-07-15 南京王师大数据有限公司 时间编码方法,装置及存储介质
CN111669616B (zh) * 2020-06-23 2022-11-04 杭州海康威视系统技术有限公司 一种编解码方法、装置及计算机存储介质
CN112486924A (zh) * 2020-12-17 2021-03-12 深圳软牛科技有限公司 一种ntfs中查找文件删除时间的方法、装置及电子设备
CN112711595A (zh) * 2021-01-26 2021-04-27 北京简巨科技有限公司 气象数据中时间信息的处理方法、装置及存储介质
CN113590136B (zh) * 2021-08-09 2024-02-27 郑朗 一种在JavaScript语言中自动生成位域对象的方法
CN114612015B (zh) * 2022-05-09 2022-08-02 杰创智能科技股份有限公司 共享设备的控制方法、装置、电子设备及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1667528A (zh) * 2004-03-11 2005-09-14 杨爱民 电波授时时间编码
CN101882164A (zh) * 2010-07-16 2010-11-10 张为斌 用于存储多维知识的数据仓库模型
CN102255682A (zh) * 2011-06-30 2011-11-23 北京东土科技股份有限公司 精确时间协议时钟转换为irig-b码的方法和装置
CN103390045A (zh) * 2013-07-19 2013-11-13 北京京东尚科信息技术有限公司 一种用于监控系统的时间序列存储方法及装置
CN104090949A (zh) * 2014-07-02 2014-10-08 河海大学 面向水利数据整合与共享的索引方法
CN104091054A (zh) * 2014-06-26 2014-10-08 中国科学院自动化研究所 面向短文本的群体性事件预警方法和系统
CN105068790A (zh) * 2015-07-13 2015-11-18 广东安居宝智能控制系统有限公司 任意时间段数据的记录方法和系统
CN105404472A (zh) * 2015-11-23 2016-03-16 天脉聚源(北京)传媒科技有限公司 一种压缩日志时间数据的存储空间的方法及装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1137573C (zh) * 1995-04-03 2004-02-04 松下电器产业株式会社 数据传输方法和设备以及数据再生方法和设备
JP3305190B2 (ja) * 1996-03-11 2002-07-22 富士通株式会社 データ圧縮装置及びデータ復元装置
CA2426496A1 (en) * 2003-04-24 2004-10-24 Ibm Canada Limited - Ibm Canada Limitee Processing fixed-format data in a unicode environment
US7676487B2 (en) * 2004-09-28 2010-03-09 Computer Associates Think, Inc. Method and system for formatting and indexing data
DE102005056122A1 (de) * 2005-11-23 2007-05-31 Universität Zu Lübeck Verfahren zur Kompression, Dekompression und Verarbeitung von Datensätzen
JP5104922B2 (ja) * 2010-07-27 2012-12-19 カシオ計算機株式会社 時刻情報取得装置および電波時計
FR2964275B1 (fr) * 2010-08-24 2013-04-12 Continental Automotive France Compteur numerique et procede de mesure d'une duree
US20130004142A1 (en) * 2011-06-29 2013-01-03 Rovi Corp. Systems and methods for device authentication including timestamp validation
CN104113517A (zh) * 2013-04-22 2014-10-22 华为技术有限公司 时间戳生成方法、装置及系统
CN104462932B (zh) 2014-11-24 2017-05-17 广西大学 嵌入式设备维护密码的生成及其验证方法
US10706825B2 (en) * 2015-09-29 2020-07-07 Apple Inc. Timestamp based display update mechanism
US9984064B2 (en) * 2015-11-11 2018-05-29 International Business Machines Corporation Reduction of memory usage in feature generation
CN106126486B (zh) 2016-06-30 2019-03-08 童晓冲 时间信息编码方法、编码值检索方法、解码方法与装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1667528A (zh) * 2004-03-11 2005-09-14 杨爱民 电波授时时间编码
CN101882164A (zh) * 2010-07-16 2010-11-10 张为斌 用于存储多维知识的数据仓库模型
CN102255682A (zh) * 2011-06-30 2011-11-23 北京东土科技股份有限公司 精确时间协议时钟转换为irig-b码的方法和装置
CN103390045A (zh) * 2013-07-19 2013-11-13 北京京东尚科信息技术有限公司 一种用于监控系统的时间序列存储方法及装置
CN104091054A (zh) * 2014-06-26 2014-10-08 中国科学院自动化研究所 面向短文本的群体性事件预警方法和系统
CN104090949A (zh) * 2014-07-02 2014-10-08 河海大学 面向水利数据整合与共享的索引方法
CN105068790A (zh) * 2015-07-13 2015-11-18 广东安居宝智能控制系统有限公司 任意时间段数据的记录方法和系统
CN105404472A (zh) * 2015-11-23 2016-03-16 天脉聚源(北京)传媒科技有限公司 一种压缩日志时间数据的存储空间的方法及装置

Also Published As

Publication number Publication date
WO2018000709A1 (zh) 2018-01-04
US20190163727A1 (en) 2019-05-30
CN106126486A (zh) 2016-11-16
US11544443B2 (en) 2023-01-03

Similar Documents

Publication Publication Date Title
CN106126486B (zh) 时间信息编码方法、编码值检索方法、解码方法与装置
CN100468402C (zh) 一种数据存储及查询方法
EP2946333B1 (en) Efficient query processing using histograms in a columnar database
JP2020512641A (ja) 多次元データベース環境において1回のスキャンでロード、集約、およびバッチ計算を行なうためのシステムおよび方法
EP3238097B1 (en) Identifying join relationships based on transactional access patterns
US20070124277A1 (en) Index and Method for Extending and Querying Index
CN103605805A (zh) 一种海量时序数据的存储方法
US8364723B1 (en) Apparatus and method for realizing big data into a big object and non-transitory tangible machine-readable medium thereof
US11093471B2 (en) Large range lookups for Bϵ-tree
CN102982103A (zh) 一种olap海量多维数据维存储方法
US20140237343A1 (en) Method and system for optimizing rendering of data tables
US10296497B2 (en) Storing a key value to a deleted row based on key range density
US10983909B2 (en) Trading off cache space and write amplification for Bε-trees
EP3889797A1 (en) Database index and database query processing method, apparatus, and device
US20230367781A1 (en) Systems and methods for processing timeseries data
CN102609531B (zh) 一种根据关键字反查文件的方法
WO2015168988A1 (zh) 一种数据索引创建方法、装置及计算机存储介质
US9164978B2 (en) Identifying objects within a multidimensional array
WO2024078122A1 (zh) 数据库表扫描的方法、装置以及设备
KR20130016333A (ko) 오디오 데이터의 저장 방법 및 저장 장치
CN101661277B (zh) 用于数控机床的零件加工方法和装置
CN110874360A (zh) 一种基于固定容量的有序队列缓存方法及装置
CN110019507B (zh) 数据同步的方法及装置
CN113760600A (zh) 一种数据库备份方法、数据库还原方法和相关装置
US8204917B2 (en) Apparatus, method, and computer program product thereof for storing a data and data storage system comprising the same

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210707

Address after: 450001 No.62, science Avenue, high tech Zone, Zhengzhou City, Henan Province

Patentee after: Information Engineering University of the Chinese People's Liberation Army Strategic Support Force

Address before: 450052 No.66, Longhai Middle Road, Erqi District, Zhengzhou City, Henan Province

Patentee before: Tong Xiaochong