CN112506922A - 面向混合固态存储系统的嵌入式IoT时序数据库设计方法 - Google Patents

面向混合固态存储系统的嵌入式IoT时序数据库设计方法 Download PDF

Info

Publication number
CN112506922A
CN112506922A CN202011302704.6A CN202011302704A CN112506922A CN 112506922 A CN112506922 A CN 112506922A CN 202011302704 A CN202011302704 A CN 202011302704A CN 112506922 A CN112506922 A CN 112506922A
Authority
CN
China
Prior art keywords
data
time sequence
time
value
block
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.)
Pending
Application number
CN202011302704.6A
Other languages
English (en)
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.)
Jiangsu University
Original Assignee
Jiangsu University
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 Jiangsu University filed Critical Jiangsu University
Priority to CN202011302704.6A priority Critical patent/CN112506922A/zh
Publication of CN112506922A publication Critical patent/CN112506922A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/2255Hash tables
    • 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/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • 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/2264Multidimensional index structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提出了面向混合固态存储系统的嵌入式IoT时序数据库设计方法,在存储器驱动中建立时序数据库引擎,以系统调用封装时序数据库的读写访问操作,使系统在读写时序数据时跳过文件系统层的开销;针对时序数据的结构特性,在时序数据库引擎上设计实现了融合删冗和压缩的数据存储策略;设计实现了分层的时序数据管理策略,使低时效数据能自动迁移到SSD中,并对NVM和SSD上的时序数据分别设计了二维混合索引策略和摘要索引策略;本发明能针对时序数据的众多特性来优化数据存储过程,并且能利用NVM的优势来优化SSD上的数据的索引,使存储系统达到更高的空间利用率的同时能动态管理数据在NVM与SSD中的分布以及能高并发和高速地索引时序数据。

Description

面向混合固态存储系统的嵌入式IoT时序数据库设计方法
技术领域
本发明属于计算机存储技术领域,具体涉及面向混合固态存储系统的嵌入式IoT时序数据库。
背景技术
非易失性存储器NVM具有可字节寻址、持久性、读写性能与DRAM相近和存储密度大的特性,其类型主要有相变存储器、阻抗式存储器和3D-XPoint等,以相变存储器为例,它的读写延迟分别约为70ns和150ns,能为高并发和海量的时序数据存储提供性能保障。而当前已有时序数据库均基于通用数据库系统进行二次开发而来,导致了过大的I/O软件栈开销,也难以针对时序数据的特点进行优化。这些时序数据库在HDD或SSD上工作时,I/O软件开销的延迟能被存储器的高延迟所掩盖,而当高速的NVM加入后,这些软件开销问题则被暴露出来,计算机存储系统性能瓶颈由硬件速度转变成了软件速度,这使得系统无法最大程度地表现NVM的优良特性。而本发明则在缩小时序数据库I/O软件栈的同时针对时序数据的特性优化了数据的存储过程,可以让NVM和SSD构成的混合存储系统很好地运用在IoT(物联网)时序数据存储的应用场景中。
发明内容
为了解决上述问题,,本发明针对IoT时序数据的各种特性来优化了时序存储数据的过程,使得系统的读写时序数据的效率更高、存储空间的开销更小,可以解决传统的时序数据存储系统外部软件依赖度高、吞吐率低、并发性低、存储空间开销大的问题。本发明提出了一种面向混合固态存储系统的嵌入式IoT时序数据库,通过在存储器驱动中构建时序数据库引擎,并针对时序数据的特性进行数据压缩,以及结合NVM和SSD的特性,设计分层的数据管理策略和数据索引策略。
为了实现上述目的,本发明的技术方案为:
面向混合固态存储系统的嵌入式IoT时序数据库,包括以下步骤:
步骤1)在存储器驱动中建立时序数据存储引擎;
步骤2)在写入数据时根据IoT源的不同对时序数据进行分区;
步骤3)将时序数据以4KB的块为单位进行删冗压缩后存储在NVM(Non-VolatileMemory) 中;
步骤4)当NVM内数据块数量达到一定阈值时,将时效性较低的时序数据块迁移到SSD(Solid State Disk)中;
步骤5)在查询数据时根据分级异构的时序数据索引机制索引NVM和SSD中的时序数据;
进一步地,上述步骤1)中,在存储器驱动中建立时序数据存储引擎具体步骤如下:
步骤1.1:在内核的系统调用库中申明时序数据库引擎系统调用函数
sys_call_TSNSM(name,interval,precision,range)参数name代表传感器的名称,我们在存储系统中称之为IoT源的名称,interval代表该设备发送数据的时间间隔,precision表示该设备所发送的数据值的小数位数字个数,range表示用户需要对这个设备的数据经常访问的时间范围;
步骤1.2:在内核的存储器驱动中实现时序数据库所需要的读写函数;
put_tsnsm(name,timestamp,value,batch)写函数,name表示IoT源的名称,timestamp表示时间戳,value表示数值,batch表示插入模式是普通插入还是批量插入,默认为普通插入;
read_tsnsm(name,time_start,time_end)读函数,name表示IoT源的名称,time_start和time_end 分别表示要读取的时间段的起点和终点;
步骤1.3:在内核的块设备操作集中新增上述的时序数据库引擎调用函数与时序数据库读写调用函数函数的操作接口。
进一步地,上述步骤2)中,在写入数据时根据IoT源的不同对时序数据进行分区,具体步骤如下:
步骤2.1:在NVM中为每个IoT源建立信息区,包括IoT源的名称(name)、产生数据的时间间隔(interval)、数值精度(precision)、频繁查询时间范围(rang),迁移阈值(threshold),并为此IoT源分配一个独立的时序数据存储区;
步骤2.2:为IoT源信息区建立Hash索引结构,将IoT源名称由字符串转换为唯一的纯数字字符串,以该纯数字字符串为Key,以该IoT源信息区地址为Value,使用平方取中法为每个IoT源分配Hash值;
进一步地,上述步骤3)中,将时序数据以4KB的块为单位进行删冗压缩后存储在NVM 中,具体步骤如下:
步骤3.1:在时序数据存储区内,检查所含数据块的数量;
步骤3.2:若数据块的数量为零,建立一个大小为4KB的数据块,它由块首的(start_stime, start_value,p_num,next,pre)和块的主体D数组构成,start_stime表示数据块的起始时间, start_value表示起始数值,p_num表示start_value连续重复出现的个数,next表示下一个块的地址,pre表示下一个块的地址,D数组用来存储一个个压缩后的数值d;将待存储的时序数据的时间戳和数值保存在块首的start_time和start_value位置;
步骤3.3:若数据块的数量不为零,检查第一个数据块是否还有空间容纳新值,若没有,则以步骤3.2的方法生成一个新块,并使next指针指向目前第一个块,然后让目前第一个块的pre指针指向这个新建的块,从而使新建的块永远在第一个块;
步骤3.4:若第一个数据块还有空间容纳新值,则将待存储的时序数据点的数值(Value) 与start_value进行对比,若相等,则仅让数据块块首的p_num变量自加,若不相等,则对Value 进行计算得到一个数正整数d,将d存入D数组,d的计算公式为:
d=(Value-start_value)*10precision
进一步地,上述步骤4)中,当NVM内数据块数量达到一定阈值时将时效性较低的时序数据块迁移到SSD中,具体步骤如下:
步骤4.1:在每次新建一个数据块后,检查该IoT源所拥有的数据块的数量是否达到其迁移阈值threshold,阈值的计算公式如下:
threshold=「range*3600/interval*2034]
步骤4.2:若达到迁移阈值,则将其数据存储区的最后一个数据块迁移至SSD中,并将SSD的地址用变量Lblock_value保存,将该数据块的起始时间戳、p_num、所属IoT 源名称拼接成一个字符串用变量Lblock_key保存;
步骤4.3:将(Lblock_key,Lblock_value)作为键值对插入到NVM上的低时效时序数据的摘要B树中。
进一步地,上述步骤5)中,在查询数据时根据分级异构的时序数据索引机制索引NVM和SSD中的时序数据,具体步骤如下:
步骤5.1:首先根据用户输入的IoT源名称,通过哈希索引查找到该IoT源信息;
步骤5.2:获取其时序数据存储区的首地址,即数据块链表的头节点,再根据用户输入的时间起点和终点,判断用户所需要的数据位于哪个或哪些数据块,判断公式如下:
Figure RE-GDA0002896125210000031
同时满足(1)式和(2)则表示当前数据块包含所需数据,其中search_time_start和 search_time_end分别表示用户要查询的时间段的起始时间点和结束时间点,其他符号含义见步骤3.2和步骤2.1;
步骤5.3:定位到目标数据块,根据如下公式定位到目标数据在块内的起始位置x:
Figure RE-GDA0002896125210000041
其中search_time表示要获取的具体时序数据的时间戳,其他符号含义见步骤3.2和步骤2.1;
步骤5.4:根据x的大小获取时序数据的值或者提取D数组中的元素后解压得到时序数据的值,公式如下:
Figure RE-GDA0002896125210000042
其中value表示要获取的具体时序数据的数值,其他符号含义见步骤3.2;
步骤5.5:连续获取后续的数组元素内值并解压,每进行一次计算后search_time加interval,直到search_time等于search_time_end;
步骤5.6:若用户输入的查询时间范围超出了迁移阈值内所包含的时序数据时间范围,则说明数据位于SSD上或者不存在;
步骤5.7:索引NVM上的低时效时序数据的摘要,若在摘要中找到了包含目标时序数据的条目Lblock_key,则根据Lblock_value定位到SSD中的目标数据块,利用步骤5.3和5.4 中的公式计算出起始点数据的位置和值并继续往后获取剩下的数据。
本发明通过在存储器驱动中建立原生时序数据存储引擎来缩小时序数据库的I/O软件栈,同时在设计存储引擎时,针对时序数据结构的特性,设计了融合删冗和压缩的数据存储策略,针对时序数据的访问和管理上的特性,面向NVM和SSD所构建的混合固态存储系统特性,设计了分层的时序数据管理结构,针对NVM和SSD的特性,分别设计了二维空间索引结构和摘要索引机制,从而实现了时序数据在存储、管理以及索引过程中,避免了主机和存储系统之间频繁交换大量数据,减少了所需要的存储空间同时降低对NVM和SSD的磨损,利用了NVM和SSD各自的优势,实现了时序数据的融和管理和高效的范围查询,提高了时序数据库的经济性和可扩展性。
实现本发明目的的装置如下:
面向混合固态存储系统的嵌入式IoT时序数据库,包括嵌入式时序数据库存储引擎、融合删冗和压缩的数据存储策略、时序数据的两级分层管理策略和分级异构的时序数据索引机制。嵌入式时序数据库存储引擎用于缩小时序数据数据存储全过程的I/O软件栈;融合删冗和压缩的数据存储策略用于减少所需的存储空间,同时降低对NVM和SSD的磨损;时序数据的两级分层管理策略用于结合NVM和SSD各自的优势,对时效性不同的时序数据进行分层,提高时序数据管理的经济性和可扩展性;分级异构的时序数据索引机制用于满足不同时效性时序数据的索引的需求,提高时效时序数据的查询效率。
与现有技术相比,本发明的有益效果:
1.在存储器驱动中构建IoT时序数据的原生存储引擎,缓解了软件依赖和系统I/O软件栈开销大的问题;
2.使用融合删冗和压缩的数据存储策略,节省了时序数据所需的存储空间;
3.使用时序数据的两级分层管理策略,将高时效性时序数据与低时效性时序数据分层存储和管理,并又将高时效性时序数据按照IoT源划分独立的存储区域,提高了时序数据库系统的并发性的同时提高了时序数据存储系统的经济性和可扩展性;
4.使用分级异构的时序数据索引机制,对存储在NVM中的高时效性时效数据采用哈希索引和有序链表结合的二维空间索引,对存储在SSD上的低时效时序数据则利用NVM的性能优势采用摘要索引,提高了整个时序数据存储系统的并发性和索引效率。
附图说明
图1为本发明的总体系统结构图;
图2位本发明中总体系统装置图;
图3为本发明中数据存储和索引过程流程图;
具体实施方式
为了能够更清楚地理解本发明的技术内容,下面结合附图和具体实施案例对本发明进一步说明,须指出的是,所描述出的实施案例旨在便于对本发明的理解,而对其没有任何先定要求。
本发明的方法主要包括以下几部分,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
实施例1
如图1所示为本发明的系统总体设计结构图,本发明为面向混合固态存储系统的嵌入式 IoT时序数据库,包括以下步骤:
步骤1)在存储器驱动中建立时序数据存储引擎;
步骤2)在写入数据时根据IoT源的不同对时序数据进行分区;
步骤3)将时序数据以4KB的块为单位进行删冗压缩后存储在NVM(Non-VolatileMemory) 中;
步骤4)当NVM内数据块数量达到一定阈值时,将时效性较低的时序数据块迁移到SSD(Solid State Disk)中;
步骤5)在查询数据时根据分级异构的时序数据索引机制索引NVM和SSD中的时序数据;
本方法应用于实际的IoT时序数据存储与管理中,提高系统的存储效率和空间利用率。本发明的系统结构如图1所示,具体的运行步骤如下。
步骤1:IoT系统在应用层调用时序数据库引擎sys_call_TSNSM()函数,其系统调用号为 330,假设传感器Sensor0对应的是IoT源名称是temperature01,它产生数据的时间间隔(interval) 为2秒、数值精度(precision)为2、频繁查询时间范围(rang)为24小时,则它调用的函数和参数为:syscall(330,“temperature01”,2,2,24);
步骤2:在NVM中为该IoT源建立信息区,名为IoT_data0,IoT源的名称(name)为“temperature01”、产生数据的时间间隔(interval)为2、数值精度(precision)为2、频繁查询时间范围(rang)为:24小时,通过公式:
threshold=「range*3600/interval*2034]
算得迁移阈值(threshold)=「24*3600/(2*2034)]=22,并为此IoT源分配一个独立的时序数据存储区,然后在Hash索引结构中插入条目(“2051365181202118501”,&IoT_data0);
步骤3:先进行写入操作,假设现在它先后向时序数据存储系统发来3条时序数据,分别是[1604812898,31.22,temperature01]、[1604812900,31.22,temperature01]、[1604812902, 31.34,temperature01],三次调用put_tsnsm()函数,其系统调用号为331,调用的格式为 syscall(331,“temperature01”,1604812898,31.22,1)、syscall(331,“temperature01”,1604812900, 31.22,1)、syscall(331,“temperature01”,1604812902,31.34,0);
步骤4:时序数据库首先收到第一个时序数据,首先将“temperature01”转换成一个纯数字字符串“2051365181202118501”,取其后6位进行平方取中法得到Hash值248,索引得到 IoT_data0的信息;
步骤5:获取其时序数据存储区的指针,假定目前该区域内的第一个块“Block0-22”已经满了(D数组中已经有了2033个元素则表示满),则系统立即生成一个4KB大小的数据块“Block0-n”,它由块首的(start_stime,start_value,p_num,next,pre)和块的主体D数组构成, start_stime表示数据块的起始时间,start_value表示起始数值,p_num表示start_value连续重复出现的个数,next表示下一个块的地址,pre表示下一个块的地址,D数组用来存储一个个压缩后的数值d;然后将1604812898写在“Block0-n”块首的start_time上、将31.22写在start_value 上,并使“Block0-n”的next指针指向目前第一个块“Block0-22”,然后让目前第一个块“Block0-22”的pre指针指向这个新建的块Block0-n”,从而使新建的块永远在第一个块;
步骤6:已知此IoT源时序数据区的迁移阈值(threshold)为22,而此时n等于23,所以需要迁移数据块到低时效时序时序数据层;
步骤7:迁移时序数据区尾部的数据块Block0-0,将这个数据块的内容写到SSD中,并记录下它在SSD中的起始地址adress0-0;
步骤8:新建一个KV对(Lblock_key0-0,Lblock_value0-0),Lblock_key0-0是一个由“temperature01_”+Block0-0的“start_time”+Block0-0的“p_num”拼接得到的字符串,Lblock_value0-0存储adress0-0的值,然后将这个KV对写入到NVM上的低时效时序数据的摘要B树中,完成数据块的迁移;
步骤9:第一条时序数据写入完成,但由于batch=1,表示批量插入模式,系统则不会关闭插入函数而是回退到步骤5,马上接收第二条时序数据;
步骤10:目前该区域内的第一个块是“Block0-n”,未满且D数组中还没有任何元素,所以将31.22与start_value进行对比,发现相等,则使p_num加1,完成第二条时序数据的写入,同理batch=1,回退到步骤5,马上接收第二条时序数据;
步骤11:同理,将31.34与start_value进行对比,发现不相等,运用公式:
d=(Value-start_value)*10precision
进行运算得d=(31.34-31.22)*102=12,所以将结果12存入“Block0-n”的D数组的D0元素位置上,完成第三条时序数据的写入;由于此时batch=0,关闭插入函数;
步骤12:接下来用户发出读取“temperature01”的时序数据的请求,调用read_tsnsm() 函数,其系统调用号为332,使用分级异构的时序数据索引机制,假设用户想查询两个时间范围内的数据,分别时是时间戳1604812898-1604812902和1604640010-1604640050,则调用 read_tsnsm函数的形式为syscall(332,“temperature01”,1604812898,1604812902)和syscall(332,“temperature01”,1604640010,1604640050);
步骤13:系统首先收到第一个查询请求,与步骤4相同,通过索引得到IoT源信息IoT_data0,可得知其interval=2,precision=2;
步骤14:获取其时序数据存储区的首地址,即数据块链表的头节点“Block0-n”,已知该块的start_time=1604812898,start_value=31.22,p_num=1,然后根据用户输入的时间起点 search_time_start=1604812898和终点search_time_end=1604812902,判断用户所需要的数据位于哪个或哪些数据块;
步骤15:根据公式:
Figure RE-GDA0002896125210000071
得出头节点数据块同时满足(1)式和(2),所以当前数据块包含所需数据,则开始提取目标时序数据;
步骤16:根据公式:
Figure RE-GDA0002896125210000081
其中search_time表示要获取的具体时序数据的时间戳,首先是1604812898,计算得出对应的 x=-2;然后search_time加interval,得到1604812900时间点对应的x=-1;同理得到1604812902 时间点对应的x=0;此时search_time已经等于search_time_end;
步骤17:根据公式:
Figure RE-GDA0002896125210000082
得出时间戳1604812898对应的value=start_value=31.22,1604812900对应的value=start_value=31.22,1604812902对应的value=start_value+D[x]*10-precision=31.22+D[0]*10-2=31.22+0.12=31.34;
步骤18:接下来系统接收到第二个读请求,search_time_start=1604640010和终点 search_time_end=1604640050,与步骤13、14相同,但通过计算发现第一个数据块只满足步骤 15中公式(1)式,指针则跳到next,假设直到链表最后一个节点,都是只能满足(1)式;
步骤19:开始进行摘要索引,即查询NVM上的低时效时序数据的摘要,通过B树索引,查询与“temperature01_1604640010”字符串最相近的LBlobk_key,假设在B树上存在一个条目为(temperature01_1604640003_5,&address0-0);则通过步骤15的公式得知这个条目所代表的数据块即包含了用户所需时序数据范围,是目标数据块;
步骤20:通过指针address0-0定位到SSD中目标数据块的地址,与步骤16和步骤17同理,计算出起始点数据的位置和值并继续往后获取剩下的数据。
实施例2
如图2所示,面向混合固态存储系统的嵌入式IoT时序数据库,包括嵌入式时序数据库存储引擎、融合删冗和压缩的数据存储模块、分层的时序数据管理模块和分级异构的时序数据索引模块。嵌入式时序数据库存储引擎用于缩小时序数据数据存储全过程的I/O软件栈;融合删冗和压缩的数据存储策略用于减少所需的存储空间,同时降低对NVM和SSD的磨损;时序数据的两级分层管理策略用于结合NVM和SSD各自的优势,对时效性不同的时序数据进行分层,提高时序数据管理的经济性和可扩展性;分级异构的时序数据索引机制用于满足不同时效性时序数据的索引的需求,提高时效时序数据的查询效率。
实施例3
如图3所示,面向混合固态存储系统的嵌入式IoT时序数据库的具体执行流程如下:
步骤1:用户调用时序数据库的系统调用函数;
步骤2:获取用户的参数和数据;
步骤3:根据用户输入的IoT源名称查找目标IoT源;
步骤4:根据用户输入的参数判断读或写操作;
步骤5:若为写操作,则判断数据块链表头节点是否已满,未满则压缩数据并写入到头节点数据块的D数组中,已满则分配一个新的数据块将数据写入到块首;
步骤6:判断数据块的数量是否达到阈值,若达到阈值则迁移链表尾部的数据块节点到 SSD的低时效时序数据存储区;
步骤7:若为读操作,则首先在NVM的高时效时序数据中查找目标数据块,若找到目标数据块则提取数据并解压输出,若未查找到则再查找NVM中的低时效时序数据的摘要;
步骤8:若找到对应的条目,则根据摘要信息定位到SSD中目标数据块所在位置,并提取数据解压输出,若维找到对应条目,则表示数据不存在。
综上,本发明的一种面向混合固态存储系统的嵌入式IoT时序数据库设计方法,在存储器驱动中建立时序数据库引擎,以系统调用封装时序数据库的读写访问操作,使系统在读写时序数据时跳过文件系统层的开销;针对时序数据的结构特性,在时序数据库引擎上设计实现了融合删冗和压缩的数据存储策略;针对时序数据在访问上的特殊性,设计实现了分层的时序数据管理策略,使低时效数据能自动迁移到SSD中,并对NVM和SSD上的时序数据分别设计了二维混合索引策略和摘要索引策略;并给出了时序数据库结构,介绍了主要模块。本发明有如下优点:系统能针对时序数据的众多特性来优化数据存储过程,并且能利用NVM 的优势来优化SSD上的数据的索引,使存储系统达到更高的空间利用率的同时能动态管理数据在NVM与SSD中的分布以及能高并发和高速地索引时序数据。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示意性实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。

Claims (6)

1.面向混合固态存储系统的嵌入式IoT时序数据库设计方法,其特征在于,具体步骤如下:步骤1)在存储器驱动中建立时序数据存储引擎;
步骤2)在写入数据时根据IoT源的不同对时序数据进行分区;
步骤3)将时序数据以4KB的块为单位进行删冗压缩后存储在非易失性存储器NVM中;
步骤4)当NVM内数据块数量达到一定阈值时,将时效性较低的时序数据块迁移到固态硬盘SSD中,并且在NVM上保存其摘要;
步骤5)在查询数据时根据分级异构的时序数据索引机制索引NVM和SSD中的时序数据。
2.根据权利要求1所述的一种面向混合固态存储系统的嵌入式IoT时序数据库,其特征在于,所述步骤1),具体步骤如下:
步骤1.1:在内核的系统调用库中申明时序数据库引擎系统调用函数sys_call_TSNSM(name,interval,precision,range),参数name代表传感器的名称,在存储系统中称之为IoT源的名称,interval代表该设备发送数据的时间间隔,precision表示该设备所发送的数据值的小数位数字个数,range表示用户需要对这个设备的数据经常访问的时间范围;
步骤1.2:在内核的存储器驱动中实现时序数据库所需要的读写函数;
put_tsnsm(name,timestamp,value,batch)写函数,name表示IoT源的名称,timestamp表示时间戳,value表示数值,batch表示插入模式是普通插入还是批量插入,默认为普通插入;
read_tsnsm(name,time_start,time_end)读函数,name表示IoT源的名称,time_start和time_end分别表示要读取的时间段的起点和终点;
步骤1.3:在内核中为上述函数指定系统调用号,函数sys_call_TSNSM(),put_tsnsm(),read_tsnsm()的系统调用号分别为330、331、332。
3.利要求1所述的一种面向混合固态存储系统的嵌入式IoT时序数据库,其特征在于,所述步骤2),具体步骤如下:
步骤2.1:在NVM中为IoT源建立信息区,包括IoT源的名称name、产生数据的时间间隔interval、数值精度precision、频繁查询时间范围range,迁移阈值threshold,并为此IoT源分配一个独立的时序数据存储区;
步骤2.2:为IoT源信息区建立Hash索引结构,将IoT源名称由字符串转换为唯一的纯数字字符串,以该纯数字字符串为Key,以该IoT源信息区地址为Value,使用平方取中法为每个IoT源分配Hash值。
4.根据要求3所述的一种面向混合固态存储系统的嵌入式IoT时序数据库,其特征在于,所述步骤3),具体步骤如下:
步骤3.1:在时序数据存储区内,检查所含数据块的数量;
步骤3.2:若数据块的数量为零,建立一个大小为4KB的数据块,它由块首的(start_stime,start_value,p_num,next,pre)和块的主体D数组构成,start_stime表示数据块的起始时间,start_value表示起始数值,p_num表示start_value连续重复出现的个数,next表示下一个块的地址,pre表示下一个块的地址,D数组用来存储一个个压缩后的数值d;将待存储的时序数据的时间戳和数值保存在块首的start_time和start_value位置;
步骤3.3:若数据块的数量不为零,检查第一个数据块是否还有空间容纳新值,若没有,则以步骤3.2的方法生成一个新块,并使next指针指向目前第一个块,然后让目前第一个块的pre指针指向这个新建的块,从而使新建的块永远在第一个块;
步骤3.4:若第一个数据块还有空间容纳新值,则将待存储的时序数据点的数值Value与start_value进行对比,若相等,则仅让数据块块首的p_num变量自加,若不相等,则对Value进行计算得到一个数正整数d,将d存入D数组,d的计算公式为:
d=(Value–start_value)*10precision
5.根据要求1所述的一种面向混合固态存储系统的嵌入式IoT时序数据库,其特征在于,所述步骤4),具体步骤如下:
步骤4.1:在每次新建一个数据块后,检查该IoT源所拥有的数据块的数量是否达到其迁移阈值threshold,阈值的计算公式如下:
Figure RE-FDA0002896125200000021
步骤4.2:若达到迁移阈值,则将其数据存储区的最后一个数据块迁移至SSD中,并将SSD的地址用变量Lblock_value保存,将该数据块的起始时间戳、p_num、所属IoT源名称拼接成一个字符串用变量Lblock_key保存;
步骤4.3:将(Lblock_key,Lblock_value)作为键值对插入到NVM上的低时效时序数据的摘要B树中。
6.根据要求4所述的一种面向混合固态存储系统的嵌入式IoT时序数据库,其特征在于,所述步骤5),具体步骤如下:
步骤5.1:首先根据用户输入的IoT源名称,通过哈希索引查找到该IoT源信息;
步骤5.2:获取其时序数据存储区的首地址,即数据块链表的头节点,再根据用户输入的时间起点和终点,判断用户所需要的数据位于哪个或哪些数据块,判断公式如下:
Figure RE-FDA0002896125200000031
同时满足(1)式和(2)则表示当前数据块包含所需数据,其中search_time_start和search_time_end分别表示用户要查询的时间段的起始时间点和结束时间点;
步骤5.3:定位到目标数据块,根据如下公式定位到目标数据在块内的起始位置x:
Figure RE-FDA0002896125200000032
其中search_time表示要获取的具体时序数据的时间戳;
步骤5.4:根据x的大小获取时序数据的值或者提取D数组中的元素后解压得到时序数据的值,公式如下:
Figure RE-FDA0002896125200000033
其中value表示要获取的具体时序数据的数值;
步骤5.5:连续获取后续的数组元素内值并解压,每进行一次计算后search_time加interval,直到search_time等于search_time_end;
步骤5.6:若用户输入的查询时间范围超出了迁移阈值内所包含的时序数据时间范围,则说明数据位于SSD上或者不存在;
步骤5.7:索引NVM上的低时效时序数据的摘要,若在摘要中找到了包含目标时序数据的条目Lblock_key,则根据Lblock_value定位到SSD中的目标数据块,利用步骤5.3和5.4中的公式计算出起始点数据的位置和值并继续往后获取剩下的数据。
CN202011302704.6A 2020-11-19 2020-11-19 面向混合固态存储系统的嵌入式IoT时序数据库设计方法 Pending CN112506922A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011302704.6A CN112506922A (zh) 2020-11-19 2020-11-19 面向混合固态存储系统的嵌入式IoT时序数据库设计方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011302704.6A CN112506922A (zh) 2020-11-19 2020-11-19 面向混合固态存储系统的嵌入式IoT时序数据库设计方法

Publications (1)

Publication Number Publication Date
CN112506922A true CN112506922A (zh) 2021-03-16

Family

ID=74958773

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011302704.6A Pending CN112506922A (zh) 2020-11-19 2020-11-19 面向混合固态存储系统的嵌入式IoT时序数据库设计方法

Country Status (1)

Country Link
CN (1) CN112506922A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113515576A (zh) * 2021-07-13 2021-10-19 北京字节跳动网络技术有限公司 数据处理方法、装置、电子设备和计算机可读介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113515576A (zh) * 2021-07-13 2021-10-19 北京字节跳动网络技术有限公司 数据处理方法、装置、电子设备和计算机可读介质

Similar Documents

Publication Publication Date Title
CN107168657B (zh) 一种基于分布式块存储的虚拟磁盘分层缓存设计方法
CN110825748B (zh) 利用差异化索引机制的高性能和易扩展的键值存储方法
CN107423422B (zh) 基于网格的空间数据分布式存储及检索方法和系统
CN110262922B (zh) 基于副本数据日志的纠删码更新方法及系统
CN106066896B (zh) 一种应用感知的大数据重复删除存储系统及方法
EP2659378B1 (en) Fast and low-ram-footprint indexing for data deduplication
US20170024315A1 (en) Efficient garbage collection for a log-structured data store
CN113377868B (zh) 一种基于分布式kv数据库的离线存储系统
CN101315628A (zh) 内存数据库系统及实现内存数据库的方法和装置
CN103595797B (zh) 一种分布式存储系统中的缓存方法
CN105912675B (zh) 一种针对小文件合并的批量删除/查询方法与装置
CN104899297A (zh) 具有存储感知的混合索引结构
TW201937361A (zh) 儲存元件
CN100424699C (zh) 一种属性可扩展的对象文件系统
CN106570113B (zh) 一种海量矢量切片数据云存储方法及系统
CN113626431A (zh) 一种基于lsm树的延迟垃圾回收的键值分离存储方法及系统
CN113535670B (zh) 一种虚拟化资源镜像存储系统及其实现方法
EP1091295B1 (en) Data management system using a plurality of data operation modules
CN113821171A (zh) 一种基于哈希表与lsm树的键值存储方法
CN113704217A (zh) 一种分布式持久性内存文件系统中元数据及数据组织架构方法
CN115114294A (zh) 数据库存储模式的自适应方法、装置、计算机设备
US8612717B2 (en) Storage system
CN112506922A (zh) 面向混合固态存储系统的嵌入式IoT时序数据库设计方法
US10387384B1 (en) Method and system for semantic metadata compression in a two-tier storage system using copy-on-write
EP3436973A1 (en) File system support for file-level ghosting

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