CN116226122A - 一种基于内存对齐的时序数据存储格式生成方法 - Google Patents

一种基于内存对齐的时序数据存储格式生成方法 Download PDF

Info

Publication number
CN116226122A
CN116226122A CN202310006167.8A CN202310006167A CN116226122A CN 116226122 A CN116226122 A CN 116226122A CN 202310006167 A CN202310006167 A CN 202310006167A CN 116226122 A CN116226122 A CN 116226122A
Authority
CN
China
Prior art keywords
alignment
type
data
memory
class
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
CN202310006167.8A
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.)
Shanghai Yunxi Technology Co ltd
Original Assignee
Shanghai Yunxi Technology Co ltd
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 Shanghai Yunxi Technology Co ltd filed Critical Shanghai Yunxi Technology Co ltd
Priority to CN202310006167.8A priority Critical patent/CN116226122A/zh
Publication of CN116226122A publication Critical patent/CN116226122A/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
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification

Landscapes

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

Abstract

本发明提供一种基于内存对齐的时序数据存储格式生成方法,属于数据库和内存对齐领域,本发明主要通过将时序数据的数据类型进行分类,根据其类型长度和有效对齐值进行排列,生成满足内存对齐要求的数据存储格式。本发明通过充分利用计算机内存存取的底层原理,来保证程序的可移植性和实现时序存储引擎读写性能的提升。

Description

一种基于内存对齐的时序数据存储格式生成方法
技术领域
本发明涉及时序数据库领域,尤其涉及一种基于内存对齐的时序数据存储格式生成方法。
背景技术
现代计算机中内存空间都是按照byte划分的,在计算机中访问一个变量需要访问它的内存地址,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始。但在实际情况中,通常在特定的内存地址访问特定类型变量,这就需要对这些数据在内存中存放的位置进行限制。各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。
如果不满足内存对齐要求,可能会产生两个比较严重的后果:
(1)移植原因:不是所有的硬件平台都能访问任意地址上的任意数据的,某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。
(2)性能原因:变量应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器可能需要作两次内存访问;而对齐的内存访问仅需要一次访问。
时序数据库是时间序列数据库的简称,时间序列数据库主要用于处理按照时间的顺序变化,即时间序列化的数据,带时间标签的数据也称为时间序列数据。时间序列数据的典型特点是:产生频率快、测点多信息量大。时序数据往往是由百万级甚至千万级终端设备产生的,写入并发量比较高,属于海量数据场景。
因此,在时序存储引擎中,一条时序数据的存储格式是否满足内存对齐,是会对读写性能产生一定影响的。为了提高写入吞吐率和查询性能,以及保证程序的可移植性,在生成时序数据的存储格式时要满足内存对齐的要求。
发明内容
为了提高时序数据库写入吞吐率和查询性能,以及保证程序的可移植性,本发明提供了一种基于内存对齐的时序数据存储格式生成方法。通过充分利用计算机内存存取的底层原理,来保证程序的可移植性和实现时序存储引擎读写性能的提升。
本发明的技术方案是:
一种基于内存对齐的时序数据存储格式生成方法,主要通过将时序数据的数据类型进行分类,根据其类型长度和有效对齐值进行排列,生成满足内存对齐要求的数据存储格式。
进一步的,
内存地址对齐包含了两种相互独立又相互关联的部分:基本数据对齐和结构体(或者类)数据对齐。
根据内存对齐规则的不同,对结构体(或者类)类型和基本数据类型进行分类处理。
再进一步的,
对于结构体或类类型,通过sizeof获取结构体或类类型的长度,计算其有效对齐值。将结构体或类对象存放在有效对齐值整数倍的内存地址上,空闲的内存空间进行填充。
再进一步的,
对于基本数据类型,按类型长度降序排列,先存放8字节的列、再存放4字节的列、再存放2字节和1字节的列,这样就可以满足内存对齐的要求;
对于数组或字符串等不定长的数据类型,按照其基本组成元素的类型来处理。
再进一步的,
如果一条时序记录中既有结构体(或者类)类型,又有基本数据类型,那就先存放结构体(或者类)类型,再存放基本数据类型。这样,可以在保证满足内存对齐要求的同时,最大限度的避免内存空间的浪费。
本发明的有益效果是
基于内存对齐的时序数据存储格式生成算法,主要通过将时序数据的数据类型按算法进行排列,实现满足内存对齐要求的数据存储格式,来保证程序的可移植性,降低CPU的消耗,从而实现时序存储引擎读写性能的提升。
附图说明
图1是非内存对齐的数据读取示意图;
图2是内存对齐的数据读取示意图;
图3是非内存对齐的存储格式示意图;
图4是内存对齐的存储格式示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了如下技术方案:
内存地址对齐包含了两种相互独立又相互关联的部分:基本数据对齐和结构体(或者类)数据对齐,需要对这两部分进行分情况讨论:
1)基本数据类型:基本数据类型的自身对齐值就是其自身占用的存储空间大小,如char类型为1,short类型为2,int类型为4,double类型为8等等。
2)结构体或类类型:结构体或类的自身对齐值是结构体或类的成员中自身对齐值最大的值,如struct a中有char、int和double共3个类型的数据成员,那么struct a的自身对齐值是8字节。程序员可以设置内存对齐的长度。比如,C++可以通过#pragma pack(n)指定内存对齐值,n被称为指定对齐值。结构体和类的有效对齐值就是自身对齐值或指定对齐值中的较小值。
因此,基本数据对齐比较简单,其自身对齐值就等于自身占用的存储空间大小,C++中可以通过alignof获取一个类型的对齐值,一般为8、4、2、1字节。结构体数据对齐需要保证结构体的数据成员对齐以及结构体的整体对齐,数据成员对齐和结构体整体对齐都是在对象创建时由编译器来保证。数据成员对齐需要保证每个数据成员的偏移为其有效对齐值的整数倍。结构体整体对齐会将结构体的大小增加为该结构体有效对齐值的整数倍,如有需要编译器会在最末一个成员之后加上填充字节。所以,结构体的实际大小很可能并非是所有数据成员的大小的求和。
根据内存对齐规则的不同,对这两种数据类型进行分类处理。
1)结构体或类类型:通过sizeof获取结构体或类类型的长度,计算其有效对齐值。将结构体或类对象存放在有效对齐值整数倍的内存地址上,空闲的内存空间进行填充;
2)基本数据类型:按类型长度降序排列,先存放8字节的列、再存放4字节的列、再存放2字节和1字节的列,这样就可以满足内存对齐的要求。对于数组或字符串等不定长的数据类型,按照其基本组成元素的类型来处理。
如果一条时序记录中既有结构体(或者类)类型,又有基本数据类型,那就先存放结构体(或者类)类型,再存放基本数据类型。这样,可以在保证满足内存对齐要求的同时,最大限度的避免内存空间的浪费。
以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (8)

1.一种基于内存对齐的时序数据存储格式生成方法,其特征在于,
通过将时序数据的数据类型进行分类,根据其类型长度和有效对齐值进行排列,生成满足内存对齐要求的数据存储格式。
2.根据权利要求1所述的方法,其特征在于,
内存地址对齐包含了两种相互独立又相互关联的部分:基本数据对齐和结构体(或者类)数据对齐。
3.根据权利要求2所述的方法,其特征在于,
根据内存对齐规则的不同,对结构体(或者类)类型和基本数据类型进行分类处理。
4.根据权利要求3所述的方法,其特征在于,
对于结构体或类类型,通过sizeof获取结构体或类类型的长度,计算其有效对齐值。
5.根据权利要求4所述的方法,其特征在于,
将结构体或类对象存放在有效对齐值整数倍的内存地址上,空闲的内存空间进行填充。
6.根据权利要求3所述的方法,其特征在于,
对于基本数据类型,按类型长度降序排列,先存放8字节的列、再存放4字节的列、再存放2字节和1字节的列,满足内存对齐的要求。
7.根据权利要求6所述的方法,其特征在于,
对于数组或字符串等不定长的数据类型,按照其基本组成元素的类型来处理。
8.根据权利要求3所述的方法,其特征在于,
如果一条时序记录中既有结构体(或者类)类型,又有基本数据类型,那就先存放结构体(或者类)类型,再存放基本数据类型。
CN202310006167.8A 2023-01-04 2023-01-04 一种基于内存对齐的时序数据存储格式生成方法 Pending CN116226122A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310006167.8A CN116226122A (zh) 2023-01-04 2023-01-04 一种基于内存对齐的时序数据存储格式生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310006167.8A CN116226122A (zh) 2023-01-04 2023-01-04 一种基于内存对齐的时序数据存储格式生成方法

Publications (1)

Publication Number Publication Date
CN116226122A true CN116226122A (zh) 2023-06-06

Family

ID=86577809

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310006167.8A Pending CN116226122A (zh) 2023-01-04 2023-01-04 一种基于内存对齐的时序数据存储格式生成方法

Country Status (1)

Country Link
CN (1) CN116226122A (zh)

Similar Documents

Publication Publication Date Title
US10282122B2 (en) Methods and systems of a memory controller for hierarchical immutable content-addressable memory processor
US7680791B2 (en) Method for sorting data using common prefix bytes
US8635634B2 (en) Seamless multiple format metadata abstraction
US8443155B2 (en) Lock-free concurrent object dictionary
US8027961B2 (en) System and method for composite record keys ordered in a flat key space for a distributed database
WO2005103882A2 (en) Data structure for a hardware database management system
US20220027349A1 (en) Efficient indexed data structures for persistent memory
CN113569508B (zh) 基于id进行数据索引与访问的数据库模型构建方法及设备
US20230342395A1 (en) Network key value indexing design
US6360218B1 (en) Compact record format for low-overhead databases
JP3731859B2 (ja) ハンドヘルド装置のデータ記憶およびデータ取出しのための方法および装置
Pan et al. Hart: A concurrent hash-assisted radix tree for dram-pm hybrid memory systems
US8131728B2 (en) Processing large sized relationship-specifying markup language documents
US10262000B1 (en) Global distributed file append using log-structured file system
CN116226122A (zh) 一种基于内存对齐的时序数据存储格式生成方法
US7505997B1 (en) Methods and apparatus for identifying cached objects with random numbers
CN112506651B (zh) 一种大数据量环境中数据运算的方法和设备
EP1431886A2 (en) Memory management method for sharing large databases
US6934726B2 (en) Storing and retrieving of field descriptors in Java computing environments
Yao et al. NV-QALSH: an nvm-optimized implementation of query-aware locality-sensitive hashing
CN115827573B (zh) 基于Linux的key-value形数据存储和使用方法
Hu et al. RWORT: A Read and Write Optimized Radix Tree for Persistent Memory
CN117472910B (zh) 一种同态压缩数据处理方法和系统
CN116126429B (zh) 一种非数据类型对象的引用持久化及其恢复的方法
CN116303455A (zh) 一种基于map的通用树形结构数据搜索方法与系统

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