CN105824574A - 一种内存数据存储方法 - Google Patents
一种内存数据存储方法 Download PDFInfo
- Publication number
- CN105824574A CN105824574A CN201510882588.2A CN201510882588A CN105824574A CN 105824574 A CN105824574 A CN 105824574A CN 201510882588 A CN201510882588 A CN 201510882588A CN 105824574 A CN105824574 A CN 105824574A
- Authority
- CN
- China
- Prior art keywords
- data
- row
- column
- compression
- packet assembly
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种内存数据存储方法,包括:将数据表分解成若干数据块;将每个数据块以行的形式分解成若干大小相同的行数据分组集合;将待存储的数据以列的形式存储在行数据分组集合的数据区;将行数据分组集合中的数据行数、每列数据的字节数写入元数据表头区;对数据区的数据建立索引,写入索引区;将同步标记写入同步标记区,以区分连续的行数据分组集合;分别对行数据分组集合的各个区域进行数据压缩;对数据块进行数据压缩。本发明采用行、列混合存储模式,具备了相当于行存储的数据加载速度和负载适应能力,避免了数据查询时不必要的列读取,混合了多种数据压缩方式,对列维度进行压缩,有效提升了内存空间的利用率。
Description
技术领域
本发明涉及计算机应用技术领域,具体是一种内存数据存储方法。
背景技术
目前内存数据存储大多采用行式或者列式存储,行存储数据加载快,但是无法避免读取不必要的列,海量数据查询性能低,列存储查询性能高,但是加载慢,同时,行或者列存储都存在压缩率低、内存空间使用浪费的问题。
发明内容
本发明的目的在于提供一种内存数据存储方法,采用行、列混合存储模式,能够充分发挥行存储写入性能的优势以及列存储读取性能的优势,提高内存空间利用率。
本发明的技术方案为:
一种内存数据存储方法,包括以下步骤:
(1)将数据表分解成若干数据块;
(2)将每个数据块以行的形式分解成若干大小相同的行数据分组集合,所述行数据分组集合分为四个区域,分别是同步标记区、元数据表头区、数据区和索引区;
(3)将待存储的数据以列的形式存储在行数据分组集合的数据区;
(4)将行数据分组集合中的数据行数、每列数据的字节数写入元数据表头区;
(5)对数据区的数据建立索引,写入索引区;
(6)将同步标记写入同步标记区,以区分连续的行数据分组集合;
(7)分别对行数据分组集合的各个区域进行数据压缩;
(8)对数据块进行数据压缩。
所述的内存数据存储方法,所述步骤(7)具体包括:
a、对元数据表头区中的数据采用行程长度编码算法进行压缩;
b、对数据区进行数据压缩时,对于重复值低于预设阈值的列,若为整型数据,则采用行程长度编码算法进行压缩,若为字符型数据,则采用字典编码算法进行压缩,对于重复值高于预设阈值的列,则采用gzip算法进行压缩。
由上述技术方案可知,本发明采用行、列混合存储模式,具备了相当于行存储的数据加载速度和负载适应能力,避免了数据查询时不必要的列读取,混合了多种数据压缩方式,对列维度进行压缩,有效提升了内存空间的利用率。
附图说明
图1是本发明的方法流程图;
图2是本发明的数据存储示意图。
具体实施方式
下面结合附图和具体实施例进一步说明本发明。
如图1所示,一种内存数据存储方法,包括以下步骤:
S1、将数据表分解成若干数据块Block。
S2、将每个数据块Block以行的形式分解成若干大小相同的行数据分组集合RowGroup,每个RowGroup包含四个区域,分别是同步标记区SyncMarker、元数据表头区MetadataHeader、数据区Data、索引区Index。
SyncMarker用于区分一个Block中两个连续的RowGroup;MetadataHeader用于记录每个RowGroup中有几行数据、每列数据有多少字节以及每列数据中每一行数据的字节数;Data用于按列存储RowGroup中的实际数据,Index用于存储轻量级的索引数据。
S3、将待存储的数据以列的形式存储在RowGroup的Data中;将RowGroup中的数据行数、每列数据的字节数写入MetadataHeader中;对Data中的数据建立索引,写入Index中;将同步标记写入SyncMarker中,以区分连续的RowGroup。
S4、分别对RowGroup的各个区域进行数据压缩:
对于MetadataHeader中的数据采用行程长度编码RLE(RunLengthEncoding)算法进行压缩,因为对于记录每列数据中每一行数据的字节数是一样的,这些数字重复连续出现,因此采用这种算法可以获得较高的压缩比。在对Data中的实际数据进行压缩时,对于重复值较少的列,Integer类型的列采用RLE算法进行压缩,String类型的列采用字典编码DE(DictionaryEncoding)算法进行压缩,对于重复值较多或者数据量较大的列,采用gzip算法进行压缩。
S5、采用gzip算法对Block进行数据压缩,在查询时,可配合延迟解压算法(LazyDecompression)。
本发明将内存数据混合行式和列式进行存储,通过先进行水平分区,将尽可能多的数据记录以行式进行存储,再垂直分区,在每个数据块内进行列式存储,并且保证原始同一行的数据都在同一个结点上,如图2所示。
本发明可应用于电力系统运营监测中心,提升了内存数据的读写性能,同时也提高了内存空间的利用率。
以上所述实施方式仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案作出的各种变形和改进,均应落入本发明的权利要求书确定的保护范围内。
Claims (2)
1.一种内存数据存储方法,其特征在于,包括以下步骤:
(1)将数据表分解成若干数据块;
(2)将每个数据块以行的形式分解成若干大小相同的行数据分组集合,所述行数据分组集合分为四个区域,分别是同步标记区、元数据表头区、数据区和索引区;
(3)将待存储的数据以列的形式存储在行数据分组集合的数据区;
(4)将行数据分组集合中的数据行数、每列数据的字节数写入元数据表头区;
(5)对数据区的数据建立索引,写入索引区;
(6)将同步标记写入同步标记区,以区分连续的行数据分组集合;
(7)分别对行数据分组集合的各个区域进行数据压缩;
(8)对数据块进行数据压缩。
2.根据权利要求1所述的内存数据存储方法,其特征在于,所述步骤(7)具体包括:
a、对元数据表头区中的数据采用行程长度编码算法进行压缩;
b、对数据区进行数据压缩时,对于重复值低于预设阈值的列,若为整型数据,则采用行程长度编码算法进行压缩,若为字符型数据,则采用字典编码算法进行压缩,对于重复值高于预设阈值的列,则采用gzip算法进行压缩。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510882588.2A CN105824574A (zh) | 2015-12-07 | 2015-12-07 | 一种内存数据存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510882588.2A CN105824574A (zh) | 2015-12-07 | 2015-12-07 | 一种内存数据存储方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105824574A true CN105824574A (zh) | 2016-08-03 |
Family
ID=56514636
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510882588.2A Pending CN105824574A (zh) | 2015-12-07 | 2015-12-07 | 一种内存数据存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105824574A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107894875A (zh) * | 2017-11-20 | 2018-04-10 | 深圳市德传技术有限公司 | 一种rtu数据存储方法 |
CN108243207A (zh) * | 2016-12-23 | 2018-07-03 | 航天星图科技(北京)有限公司 | 一种网络云盘的数据存储方法 |
CN108984103A (zh) * | 2017-06-02 | 2018-12-11 | 伊姆西Ip控股有限责任公司 | 用于去重的方法和设备 |
CN109857814A (zh) * | 2018-12-28 | 2019-06-07 | 北京东方国信科技股份有限公司 | 一种内存数据处理方法及存储介质 |
CN110007855A (zh) * | 2019-02-28 | 2019-07-12 | 华中科技大学 | 一种硬件支持的3d堆叠nvm内存数据压缩方法及系统 |
CN110413624A (zh) * | 2019-08-07 | 2019-11-05 | 南京录信软件技术有限公司 | 一种基于列存的多列联合存储的方法 |
CN111030757A (zh) * | 2019-12-09 | 2020-04-17 | 明格(上海)信息技术有限公司 | 超声接收数据的处理方法、系统和计算机可读介质 |
CN114356226A (zh) * | 2021-12-17 | 2022-04-15 | 广州文远知行科技有限公司 | 一种传感器数据存储方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140074805A1 (en) * | 2009-04-30 | 2014-03-13 | Oracle International Corportion | Storing compression units in relational tables |
CN104866497A (zh) * | 2014-02-24 | 2015-08-26 | 华为技术有限公司 | 分布式文件系统列式存储的元数据更新方法、装置、主机 |
-
2015
- 2015-12-07 CN CN201510882588.2A patent/CN105824574A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140074805A1 (en) * | 2009-04-30 | 2014-03-13 | Oracle International Corportion | Storing compression units in relational tables |
CN104866497A (zh) * | 2014-02-24 | 2015-08-26 | 华为技术有限公司 | 分布式文件系统列式存储的元数据更新方法、装置、主机 |
Non-Patent Citations (4)
Title |
---|
《DATA ENGINEERING (ICDE), 2011 IEEE 27TH INTERNATIONAL CONFERENCE ON》 * |
《IEEE INTERNATIONAL CONFERENCE ON ADVANCES IN ENGINEERING & TECHNOLOGY RESEARCH (ICAETR-2014)》 * |
《STORAGE NETWORK ARCHITECTURE AND PARALLEL I/OS (SNAPI), 2010 INTERNATIONAL WORKSHOP ON》 * |
《THE 8TH INTERNATIONAL CONFERENCE ON COMPUTER SCIENCE & EDUCATION (ICCSE 2013)》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108243207A (zh) * | 2016-12-23 | 2018-07-03 | 航天星图科技(北京)有限公司 | 一种网络云盘的数据存储方法 |
CN108243207B (zh) * | 2016-12-23 | 2019-03-15 | 中科星图股份有限公司 | 一种网络云盘的数据存储方法 |
CN108984103B (zh) * | 2017-06-02 | 2021-06-22 | 伊姆西Ip控股有限责任公司 | 用于去重的方法和设备 |
CN108984103A (zh) * | 2017-06-02 | 2018-12-11 | 伊姆西Ip控股有限责任公司 | 用于去重的方法和设备 |
US11461276B2 (en) | 2017-06-02 | 2022-10-04 | EMC IP Holding Company LLC | Method and device for deduplication |
CN107894875B (zh) * | 2017-11-20 | 2020-12-04 | 深圳市德传技术有限公司 | 一种rtu数据存储方法 |
CN107894875A (zh) * | 2017-11-20 | 2018-04-10 | 深圳市德传技术有限公司 | 一种rtu数据存储方法 |
CN109857814A (zh) * | 2018-12-28 | 2019-06-07 | 北京东方国信科技股份有限公司 | 一种内存数据处理方法及存储介质 |
CN110007855B (zh) * | 2019-02-28 | 2020-04-28 | 华中科技大学 | 一种硬件支持的3d堆叠nvm内存数据压缩方法及系统 |
CN110007855A (zh) * | 2019-02-28 | 2019-07-12 | 华中科技大学 | 一种硬件支持的3d堆叠nvm内存数据压缩方法及系统 |
CN110413624A (zh) * | 2019-08-07 | 2019-11-05 | 南京录信软件技术有限公司 | 一种基于列存的多列联合存储的方法 |
CN111030757A (zh) * | 2019-12-09 | 2020-04-17 | 明格(上海)信息技术有限公司 | 超声接收数据的处理方法、系统和计算机可读介质 |
CN114356226A (zh) * | 2021-12-17 | 2022-04-15 | 广州文远知行科技有限公司 | 一种传感器数据存储方法、装置、设备及存储介质 |
CN114356226B (zh) * | 2021-12-17 | 2024-07-16 | 广州文远知行科技有限公司 | 一种传感器数据存储方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105824574A (zh) | 一种内存数据存储方法 | |
US11132346B2 (en) | Information processing method and apparatus | |
CN105117417B (zh) | 一种读优化的内存数据库Trie树索引方法 | |
CN102024047B (zh) | 数据检索方法及装置 | |
Fusco et al. | Indexing million of packets per second using GPUs | |
CN104715039A (zh) | 基于硬盘和内存的列式存储和查询方法及设备 | |
CN104238962A (zh) | 向缓存中写入数据的方法及装置 | |
CN102682108A (zh) | 一种行列混合的数据库存储方法 | |
CN103500224B (zh) | 一种数据写入方法及装置、数据读取方法及装置 | |
CN103995855A (zh) | 存储数据的方法和装置 | |
CN104063384A (zh) | 一种数据检索方法及装置 | |
EP4418119A1 (en) | Multi-data sending method, apparatus and device based on columnar data scanning, and multi-data receiving method, apparatus and device based on columnar data scanning | |
CN110413624A (zh) | 一种基于列存的多列联合存储的方法 | |
CN103914483A (zh) | 文件存储方法、装置及文件读取方法、装置 | |
CN102075430A (zh) | 深度报文检测dfa状态转移表的压缩与报文匹配方法 | |
CN116244313B (zh) | Json数据存储和访问方法、装置、计算机设备及介质 | |
WO2018232089A1 (en) | Extent-based data location table management | |
CN107423425B (zh) | 一种对k/v格式的数据快速存储和查询方法 | |
CN103593447A (zh) | 用于数据库表的数据处理方法和装置 | |
CN104679507B (zh) | NAND Flash编程器烧录映像文件的生成方法及装置 | |
CN102156759B (zh) | 二叉树并行查找方法和设备 | |
CN111813709A (zh) | 一种基于fpga存算一体架构的高速并行存储方法 | |
CN105989124B (zh) | Sqlite文件恢复自增主键值的方法及其系统 | |
CN103036642A (zh) | 一种数据的传输方法及发送端和接收端 | |
CN103049387B (zh) | 一种分页存储器件的压缩管理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination |