CN113157680B - 一种适用于时序数据库的数据块增量压缩及查询方法 - Google Patents
一种适用于时序数据库的数据块增量压缩及查询方法 Download PDFInfo
- Publication number
- CN113157680B CN113157680B CN202110454409.0A CN202110454409A CN113157680B CN 113157680 B CN113157680 B CN 113157680B CN 202110454409 A CN202110454409 A CN 202110454409A CN 113157680 B CN113157680 B CN 113157680B
- Authority
- CN
- China
- Prior art keywords
- data
- data block
- compression
- block
- segment
- 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
Links
- 238000007906 compression Methods 0.000 title claims abstract description 57
- 230000006835 compression Effects 0.000 title claims abstract description 54
- 238000000034 method Methods 0.000 title claims abstract description 39
- 239000012634 fragment Substances 0.000 claims abstract description 44
- 238000013144 data compression Methods 0.000 claims description 6
- 230000002123 temporal effect Effects 0.000 claims 1
- 239000002699 waste material Substances 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
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)
- Computational Linguistics (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种适用于时序数据库的数据块增量压缩及查询方法,涉及数据库技术领域,本发明包括创建数据块;获取数据块中数据片段的数量、每个数据片段的起始位置以及每个数据片段的数据容量;向每个数据片段写入数据,将写满数据的数据片段中的数据项进行压缩;将每个已经写满数据的数据片段进行压缩;本发明对数据块中的所有数据片段进行压缩,保证了每条数据都经过压缩,维持最大的压缩比,节约磁盘空间;同时通过增量压缩的方法,让待压缩的数据在数据块中被逐一压缩保证数据不会被重复压缩,更不会被反复解压缩,杜绝CPU资源浪费,提高最快写入速度。
Description
技术领域
本发明涉及数据库技术领域,更具体的是涉及一种适用于时序数据库的数据块增量压缩及查询方法。
背景技术
在时序数据库领域中,磁盘中最小的存储单位是数据块,每个数据块中存储一条或多条数据。实际测试表明,时序数据库应用领域所产生的数据非常适合压缩。这些数据无论是否已经在业务层通过游程或其它类似算法做过初步压缩,依然有十分巨大的压缩空间。本发明所讨论的压缩算法,就是在数据块存储层对不断写入的流式数据,进行高性能、高比例的无锁压缩方法。
通过配置,一个数据文件可以拥有固定大小的数据块,如:1K,4K等。但数据块被写满并压缩之后,可能会产生更小的数据压缩块,其大小与压缩比相关。目前对于这种压缩后的数据,数据库行业内有两种写入磁盘的方法,它们的缺点如下:
1)直接将这种不同大小的数据块写入磁盘,并在索引中标记不同数据块的信息,其中包括数据块的字节数。这种变长大小的数据块虽然节省了磁盘空间,但增加了索引查询的难度与开销,而且由于没有充分利用磁盘块对齐而影响了磁盘读写效率;
2)将上次写磁盘时产生的压缩块缓冲在内存或磁盘(包括SSD磁盘或HDD磁盘),如果最近产生的压缩块能够与上次写磁盘时产生的压缩块合并,则需要重新解压缩块中的现有数据,并在合并原始数据后重新压缩。这种算法虽然能够保证查询性能最高,但由于写入时需要频繁合并数据而影响了写性能。即使有的算法对于上次写磁盘的数据并未压缩,也浪费了宝贵的缓存空间,合并过程也依然影响性能。
发明内容
本发明的目的在于:为了解决上述技术问题,本发明提供一种适用于时序数据库的数据块增量压缩及查询方法。
本发明为了实现上述目的具体采用以下技术方案:
一种适用于时序数据库的数据块增量压缩方法,包括:
(1)创建数据块;
(2)获取数据块中数据片段的数量、每个数据片段的起始位置以及每个数据片段的数据容量;
(3)向每个数据片段写入数据,将写满数据的数据片段中的数据项进行压缩;
(4)将每个已经写满数据的数据片段进行压缩。
一种适用于时序数据库的数据写入方法,包括:
(1)创建数据块;
(2)判断数据块内数据片段数量是否有数据片段;如果数据块内没有数据片断,则创建一个新的数据片断;
(3)数据压缩:写入数据,将已经写满数据的数据片段中的数据项进行压缩,将数据块内已经写满数据的数据片段进行压缩;
(4)将写满数据的数据块写入磁盘:
(5)清空数据块。
进一步地,计算数据块的剩余空间,如果数据块的剩余空间足够存放待追加的数据,则直接将待追加的数据追加写入到数据块中未压缩的数据片断内,待数据片断不能够存放追加数据时,将该数据段压缩。
进一步地,计算数据片段的剩余空间,如果数据片段的剩余空间足够存放待追加的数据,则直接将待追加的数据追加写入到数据片段中,待数据片断不能够存放追加数据时,将该数据片段内的数据项压缩。
进一步地,数据块中的数据片段被压缩后,数据块中会出现空闲空间,在该空闲空间中创建新的数据片断,并将未压缩的数据写入新创建的数据片断内。
进一步地,当数据块中的空闲空间不足以存放待追加的数据说明该数据块已经写满。
一种适用于时序数据库的数据块增量压缩后的查询方法,包括:
(1)保证每个数据块有且只有一个向块中写入数据的线程或者进程;
(2)给写入数据的线程或者进程分配数据空间,即压缩查询缓冲区;将压缩之前的数据块拷贝到该压缩查询缓冲区,然后标记压缩查询缓冲区可读,最后将原始数据块标记为不可读,以提醒查询方依然能通过压缩查询缓冲区正确访问数据;
(3)查询方在查询时,将待访问数据块和其对应的压缩查询缓冲区的内容都拷贝出来;如果压缩查询缓冲区已被标记不可读,则说明当前没有压缩动作,直接访问原始数据块即可;如果查询方发现拷贝出来的两个块的数据点标识不一致,说明有其它数据点正在压缩过程中,不影响当前查询,直接访问原始数据块即可;如果查询方发现拷贝出来的两个数据块的数据点标识一致,说明当前访问的块正在压缩的过程中,需要通过访问压缩查询缓冲区来访问压缩前的数据;在查询过程中,如果查询方发现拷贝出来的两个块的数据点状态都不可读,重新读取,直到遇到至少有一个数据块的状态为可读为止;
(4)压缩替换完成之后,将原始数据块的状态标记为可读,然后将压缩查询缓冲区标记为不可读,查询者只需正常访问原始数据块中的数据即可。
本发明的有益效果如下:
1、本发明通过对数据块中的所有数据片段进行压缩,保证了每条数据都经过压缩,维持最大的压缩比,节约磁盘空间;
2、本发明通过增量压缩的方法,让待压缩的数据在数据块中被逐一压缩保证数据不会被重复压缩,更不会被反复解压缩,杜绝CPU资源浪费,提高最快写入速度。
3、本发明通过将同一个数据块作为压缩数据的媒介,对数据进行压缩,保证了实际写入磁盘的数据块大小相同,大小相同的数据块有利于建立更小的索引文件、有利于提高磁盘I/O效率,更易于缓存。
4、由于数据块在将压缩后数据替换压缩前数据的过程中,可能会有并发读在进行,没有任何保护措施的替换会导致并发查询方读到脏数据;而加锁处理又会极大的降低写入与查询效率,本发明通过设置压缩查询缓冲区,让查询方能够在数据被压缩处理过程中也能够正常地查询原始数据块中的数据。
附图说明
图1是本发明的流程框图;
图2是只有一个数据片段时数据块中的数据写入简图;
图3是有两个数据片段时数据块中的数据写入简图;
图4是有三个数据片段时数据块中的数据写入简图;
图5是数据查询原理框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
如图1到4所示,本实施例提供一种适用于时序数据库的数据块增量压缩方法,包括:
(1)创建数据块;
(2)获取数据块中数据片段的数量、每个数据片段的起始位置以及每个数据片段的数据容量;在数据块中记录或能计算出当前数据块中,已经拥有了多少个数据片断,以及每个数据片断的起始位置和字节数,数据块中的每个数据片断中存储一条或多条数据项;
(3)向每个数据片段写入数据,将写满数据的数据片段中的数据项进行压缩;将每个已经写满数据的数据片段进行数据压缩,在数据块的所有数据片断中,只有一个数据片断是未经压缩的明文数据,其它数据片断是经过压缩的;将数据明文追加到数据块中未压缩数据片断的末尾的空闲空间中;直到该数据片段被写满之后将数据片段内的数据项进行压缩,数据块当前的空闲空间就是块内未压缩数据片断的空闲空间;每次将数据块写满之后,将数据块内未压缩数据片断中的数据压缩,然后在数据块中的空闲空间创建一个新的未压缩数据片断,继续写入新的未压缩数据。
(4)将每个已经写满数据的数据片段进行压缩。
实施例2
如图1到4所示,本实施例提供一种适用于时序数据库的数据写入方法,包括:
(1)创建数据块;
(2)判断数据块内数据片段数量是否有数据片段;如果数据块内没有数据片断,则创建一个新的数据片断;
(3)向数据片段中写入数据并压缩:计算数据块的剩余空间,如果数据块的剩余空间足够存放待追加的数据,则直接将待追加的数据追加写入到数据块中未压缩的数据片断内,待数据片断不能够存放追加数据时,将该数据片段压缩;数据块中的数据片段被压缩后,数据块中会出现空闲空间,在该空闲空间中创建新的数据片断,并将未压缩的数据写入新创建的数据片断内。
(4)将写满数据的数据块写入磁盘:当数据块中会出现空闲空间不足以存放待追加的数据说明该数据块已经写满。
(5)清空数据块。
实施例3
如图2所示,图2是一个单独的数据片段,在向一个空的数据块写入数据前,首先创建一个数据片断。其中的未压缩数据项,就是存储在数据片断1中的数据,该数据片断并未被压缩,因为该数据片段中还有空闲空间可以写入更多未压缩数据,待数据片段写满数据项之后,将该数据片段中的数据项进行压缩。
实施例4
如图3到4所示,数据片断1的数据被压缩后,数据块中会多出一部分空闲空间;然后在空闲空间中创建数据片断2,并继续写入更多的未压缩数据项;当数据片断2被写满之后,数据片断2中的所有数据项会被压缩。数据片断2的数据被压缩后,数据块中会多出一部分空闲空间。然后在空闲空间中创建数据片断3,并继续写入更多的未压缩数据项,以此类推。
按上述方法持续向数据块中写入数据,直到数据块中再也无法写入新的数据为止,说明数据块已满。将该数据块的内容原封不动的写入磁盘后,清空该数据块,便于继续压缩和存储其它数据。
实施例5
如图5所示,本实施例提供一种适用于时序数据库的数据块增量压缩后的查询方法,包括:
(1)保证每个数据块有且只有一个向块中写入数据的线程或者进程;
(2)给每个写入线程或者写入进程只需要分配一个数据块大小的空间做压缩查询缓冲区;将压缩之前的数据块拷贝到该压缩查询缓冲区,然后标记压缩查询缓冲区可读,最后将原始数据块标记为不可读,以提醒查询方依然能通过访问压缩查询缓冲区正确访问数据;
(3)查询方在查询时,将待访问数据块和其对应的压缩查询缓冲区的内容都拷贝出来;如果压缩查询缓冲区已被标记不可读,则说明当前没有压缩动作,直接访问原始数据块即可;如果查询方发现拷贝出来的两个块的数据点标识不一致,说明有其它数据点正在压缩过程中,不影响当前查询,直接访问原始数据块即可;如果查询方发现拷贝出来的两个数据块的数据点标识一致,说明当前访问的块正在压缩的过程中,需要通过访问压缩查询缓冲区来访问压缩前的数据;在查询过程中,如果查询方发现拷贝出来的两个块的数据点状态都为不可读,重新读取,直到遇到至少有一个数据块的状态为可读为止;由于数据块压缩是个相对低频操作,所以这个动作并不是常态,而且无锁化设计已经极大的提高了读写效率。
(4)压缩替换完成之后,将原始数据块的状态标记为可读,然后将压缩查询缓冲区标记为不可读,查询者只需正常访问原始数据块中的数据即可。
由于数据块在将压缩后数据替换压缩前数据的过程中,可能会有并发读在进行,没有任何保护措施的替换会导致并发查询方读到脏数据。加锁处理又会极大的降低写入与查询效率,所以本专利技术提供的一个无锁的替换过程,让查询方能够在数据被压缩处理过程中也能够正常地查询原始数据块中的数据。
Claims (5)
1.一种适用于时序数据库的数据块增量压缩及查询方法,其特征在于:包括
(1)创建数据块;
(2)获取数据块中数据片段的数量、每个数据片段的起始位置以及每个数据片段的数据容量;
(3)向每个数据片段写入数据,将写满数据的数据片段中的数据项进行压缩;
(4)将每个已经写满数据的数据片段进行压缩;
判断数据块内数据片段数量是否有数据片段;如果数据块内没有数据片段,则创建一个新的数据片段;
数据压缩:写入数据,将已经写满数据的数据片段中的数据项进行压缩,将数据块内已经写满数据的数据片段进行压缩;
将写满数据的数据块写入磁盘:
清空数据块;
保证每个数据块有且只有一个向数据块中写入数据的线程或者进程;
给写入数据的线程或者进程分配数据空间,即压缩查询缓冲区;将压缩之前的数据块拷贝到该压缩查询缓冲区,然后标记压缩查询缓冲区可读,最后将原始数据块标记为不可读,以提醒查询方依然能通过压缩查询缓冲区正确访问数据;
查询方在查询时,将待访问数据块和其对应的压缩查询缓冲区的内容都拷贝出来;如果压缩查询缓冲区已被标记不可读,则说明当前没有压缩动作,直接访问原始数据块即可;如果查询方发现拷贝出来的两个块的数据点标识不一致,说明有其它数据点正在压缩过程中,不影响当前查询,直接访问原始数据块即可;如果查询方发现拷贝出来的两个数据块的数据点标识一致,说明当前访问的数据块正在压缩的过程中,需要通过访问压缩查询缓冲区来访问压缩前的数据;在查询过程中,如果查询方发现拷贝出来的两个块的数据点状态都为不可读,重新读取,直到遇到至少有一个数据块的数据点状态为可读为止;
压缩替换完成之后,将原始数据块的状态标记为可读,然后将压缩查询缓冲区标记为不可读,查询者只需正常访问原始数据块中的数据即可。
2.根据权利要求1所述的适用于时序数据库的数据块增量压缩及查询方法,其特征在于:计算数据块的剩余空间,如果数据块的剩余空间足够存放待追加的数据,则直接将待追加的数据追加写入到数据块中未压缩的数据片段内,待数据片段不能够存放追加数据时,将该数据片段压缩。
3.根据权利要求1所述的适用于时序数据库的数据块增量压缩及查询方法,其特征在于:计算数据片段的剩余空间,如果数据片段的剩余空间足够存放待追加的数据,则直接将待追加的数据追加写入到数据片段中,待数据片段不能够存放追加数据时,将该数据片段内的数据项压缩。
4.根据权利要求1所述的适用于时序数据库的数据块增量压缩及查询方法,其特征在于:数据块中的数据片段被压缩后,数据块中会出现空闲空间,在该空闲空间中创建新的数据片段,并将未压缩的数据写入新创建的数据片段内。
5.根据权利要求4所述的适用于时序数据库的数据块增量压缩及查询方法,其特征在于:当数据块中的空闲空间不足以存放待追加的数据说明该数据块已经写满。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110454409.0A CN113157680B (zh) | 2021-04-26 | 2021-04-26 | 一种适用于时序数据库的数据块增量压缩及查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110454409.0A CN113157680B (zh) | 2021-04-26 | 2021-04-26 | 一种适用于时序数据库的数据块增量压缩及查询方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113157680A CN113157680A (zh) | 2021-07-23 |
CN113157680B true CN113157680B (zh) | 2024-03-15 |
Family
ID=76870909
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110454409.0A Active CN113157680B (zh) | 2021-04-26 | 2021-04-26 | 一种适用于时序数据库的数据块增量压缩及查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113157680B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1612252A (zh) * | 2003-10-31 | 2005-05-04 | 浙江中控技术股份有限公司 | 实时数据在线压缩与解压缩方法 |
US10156993B1 (en) * | 2016-12-29 | 2018-12-18 | EMC IP Holding Company LLC | Managing inline data compression in storage systems |
US10579591B1 (en) * | 2016-12-20 | 2020-03-03 | Amazon Technologies, Inc. | Incremental block compression |
CN111625191A (zh) * | 2020-05-21 | 2020-09-04 | 苏州浪潮智能科技有限公司 | 一种数据读写方法、装置及电子设备和存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103257831B (zh) * | 2012-02-20 | 2016-12-07 | 深圳市腾讯计算机系统有限公司 | 存储器的读写控制方法及对应的存储器 |
-
2021
- 2021-04-26 CN CN202110454409.0A patent/CN113157680B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1612252A (zh) * | 2003-10-31 | 2005-05-04 | 浙江中控技术股份有限公司 | 实时数据在线压缩与解压缩方法 |
US10579591B1 (en) * | 2016-12-20 | 2020-03-03 | Amazon Technologies, Inc. | Incremental block compression |
US10156993B1 (en) * | 2016-12-29 | 2018-12-18 | EMC IP Holding Company LLC | Managing inline data compression in storage systems |
CN111625191A (zh) * | 2020-05-21 | 2020-09-04 | 苏州浪潮智能科技有限公司 | 一种数据读写方法、装置及电子设备和存储介质 |
Non-Patent Citations (3)
Title |
---|
Web information integration based on compressed XML;Wang, HZ等;《3rd International Workshop on Databases in Networked Information Systems》;全文 * |
基于数据高效压缩存储系统的应用研究;常润梅;孟利青;;内蒙古科技与经济(第20期);全文 * |
整星地测系统解压缩服务器综合控制软件实现;陈曦;《中国优秀硕士学位论文全文数据库》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113157680A (zh) | 2021-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200175070A1 (en) | Low ram space, high-throughput persistent key-value store using secondary memory | |
US9880746B1 (en) | Method to increase random I/O performance with low memory overheads | |
US10635359B2 (en) | Managing cache compression in data storage systems | |
US6779088B1 (en) | Virtual uncompressed cache size control in compressed memory systems | |
US8650368B2 (en) | Method and apparatus for detecting the presence of subblocks in a reduced redundancy storing system | |
US8230139B2 (en) | Method and system for storing memory compressed data onto memory compressed disks | |
US5875454A (en) | Compressed data cache storage system | |
Nam et al. | Assuring demanded read performance of data deduplication storage with backup datasets | |
US5237675A (en) | Apparatus and method for efficient organization of compressed data on a hard disk utilizing an estimated compression factor | |
JP3399520B2 (ja) | 圧縮メイン・メモリの仮想非圧縮キャッシュ | |
EP1866776B1 (en) | Method for detecting the presence of subblocks in a reduced-redundancy storage system | |
WO2012029258A1 (en) | Storage system | |
KR20090026296A (ko) | 예측 데이터 로더 | |
CN112463077B (zh) | 数据块处理方法、装置、设备及存储介质 | |
CN107423425B (zh) | 一种对k/v格式的数据快速存储和查询方法 | |
WO2022037015A1 (zh) | 一种基于持久性内存的列式存储方法、装置及设备 | |
CN113157680B (zh) | 一种适用于时序数据库的数据块增量压缩及查询方法 | |
CN111124940A (zh) | 一种基于全闪存阵列的空间回收方法及系统 | |
US20230076729A2 (en) | Systems, methods and devices for eliminating duplicates and value redundancy in computer memories | |
US20210349828A1 (en) | Page modification encoding and caching | |
CN113535092A (zh) | 用于减少内存元数据的存储引擎、方法和可读介质 | |
CN114416752B (zh) | Kv ssd的数据处理方法及装置 | |
Hwang et al. | An Efficient Static Compressed Data Management System for an Embedded DBMS | |
Visvalingam | Indexing with coded deltas—a data compaction technique | |
CN114691681A (zh) | 数据处理方法、装置、电子设备及可读存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |