CN110109927A - 基于LSM树的Oracle数据库数据处理方法 - Google Patents
基于LSM树的Oracle数据库数据处理方法 Download PDFInfo
- Publication number
- CN110109927A CN110109927A CN201910338628.5A CN201910338628A CN110109927A CN 110109927 A CN110109927 A CN 110109927A CN 201910338628 A CN201910338628 A CN 201910338628A CN 110109927 A CN110109927 A CN 110109927A
- Authority
- CN
- China
- Prior art keywords
- data
- lsm
- disk
- core buffer
- tree
- 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
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于LSM树的Oracle数据库数据处理方法,包括如下步骤:S1:写数据,将增加或更新的数据有序的写入LSM内存缓冲区;S2:数据持久化,将LSM内存缓冲区中的数据定时或者按照固定大小持久化到LSM磁盘;S3:数据合并,对LSM磁盘中的文件进行数据合并;S4:读数据,从LSM内存缓冲区数据开始访问,然后从LSM磁盘查找数据;S5:删除数据,在进行数据合并时,删除标记数据。本发明以追加的方式写磁盘文件,实现了顺序写磁盘,响应快,稳定性高,有效提高了并发量;Oracle LSM存储方式只有随机读盘没有随机写盘,只需使用读密集型固态盘,降低了成本;将数据划分为基线数据和修改增量,修改增量在内存缓存中进行,实现读写分离,事务处理性能高。
Description
技术领域
本发明涉及一种数据处理方法,尤其涉及一种基于LSM树的Oracle数据库数据处理方法。
背景技术
数据库有三种基本的存储方式:1、哈希表,支持增、删、改以及随机读取操作,但不支持顺序扫描,对应的存储系统为key-value存储系统。对于key-value的插入以及查询,哈希表的复杂度都是O(1),明显比树的操作O(n)快,如果不需要有序的遍历数据,哈希表就是不错的选择;2、B+树,支持单条记录的增、删、读、改操作,还支持顺序扫描(B+树的叶子节点之间的指针),对应的存储系统就是关系数据库(Mysql等);3、LSM树(Log-StructuredMerge Tree),LSM树和B树一样,同样支持增、删、读、改、顺序扫描操作,而且通过批量存储技术规避磁盘随机写入问题。LSM树和B+树相比,LSM树牺牲了部分读性能,用来大幅提高写性能;基于LSM树实现的数据库如LevelDB、HBase等。
LSM树是将数据的修改增量保持在内存中,达到指定的大小限制后将这些修改操作批量写入磁盘,不过读取的时候稍微麻烦,需要合并磁盘中历史数据和内存中最近修改操作,所以写入性能大大提升,读取时可能需要先看是否保存在内存中,则需要访问较多的磁盘文件。因此,LSM-树比较适合的应用场景是:写入数据量大,读数据量和更新数据量不高且读一般针对最新数据。
在大并发插入数据的业务场景下,随机写需要大量的磁盘随机IO,意味着大量的磁盘寻道次数,影响业务响应速度。B+树最大的性能问题是会产生大量的随机IO,随着新数据的插入,叶子节点会慢慢分裂,逻辑上连续的叶子节点在物理上往往并不连续,甚至分离地很远,会产生大量的随机读写IO,低下的磁盘寻道速度严重影响性能。
目前的Oracle数据库对于大批量的日志写入数据库场景,数据库写入效率依然是技术瓶颈,因此将LSM树原理应用于Oracle数据库中,利用LSM树的特点,提升数据入库的执行效率是非常有必要的。
发明内容
本发明要解决的技术问题是提供一种基于LSM树的Oracle数据库数据处理方法,将随机写转换成顺序写,在读写之间取得平衡,保证稳定的数据插入速率。
本发明为解决上述技术问题而采用的技术方案是提供一种基于LSM树的Oracle数据库数据处理方法,包括如下步骤:S1:写数据,将增加或者更新的数据有序的写入LSM内存缓冲区;S2:数据持久化,将LSM内存缓冲区中的数据定时或者按照固定大小持久化到LSM磁盘;S3:数据合并,对LSM磁盘中的文件进行数据合并,消除冗余数据;S4:读数据,先从LSM内存缓冲区数据开始访问,然后按顺序逐层从LSM磁盘查找数据;S5:删除数据,在需要删除的数据上打上删除标记,在进行数据合并时,将有删除标记的数据丢弃。
进一步的,所述LSM树的存储系统为key-value存储系统,所述LSM内存缓冲区的存储空间是存储的Level-0层,保存了所有最近写入的(key,value)数据,所述LSM内存缓冲区中存储的数据有序且随时原地更新,同时支持数据查询读取。
进一步的,所述LSM磁盘存储空间是数据存储的Level-1到Level-n层,每一层存储的数据都是一个在key上有序的数据结构。
进一步的,所述LSM内存缓冲区中设有LSM日志,所述LSM日志记录客户端的操作请求,并将写入LSM内存缓冲区中的数据追加写入LSM日志文件,当LSM内存缓冲区中的数据持久化到LSM磁盘上时,清空LSM日志文件;所述LSM内存缓冲区的数据发生丢失时,则通过LSM日志文件恢复数据。
进一步的,所述LSM内存缓冲区中的数据持久化到LSM磁盘的过程中产生持久化文件,当因进程退出造成数据丢失时,则在重启进程后通过持久化文件进行数据恢复。
进一步的,所述LSM内存缓冲区中的数据持久化到LSM磁盘时,通过顺序的IO操作将LSM内存缓冲区中数据以块数据的形式刷到LSM磁盘,不更新LSM磁盘上的已有文件,LSM磁盘上的已有文件不可写且有序。
进一步的,所述步骤S3中数据合并为异步合并操作,在异步合并操作触发后,将LSM内存缓冲区中的数据和LSM磁盘中的数据合并成新的LSM磁盘数据;数据合并和内存数据的写入采用交替合并的方式;当一个内存缓冲区被触发合并时,新的写入请求被指向另一个内存缓冲区,写数据操作和合并指向不同的内存缓冲区,进行隔离操作。
本发明对比现有技术有如下的有益效果:本发明提供的基于LSM树的Oracle数据库数据处理方法,实现了顺序写磁盘,其以追加的方式写磁盘文件,响应快,稳定性高,有效提高了高并发量;Oracle LSM存储方式只有随机读盘没有随机写盘,只需使用读密集型固态盘,降低了成本;将数据划分为基线数据和修改增量,基线数据持久化到物理磁盘文件,而修改增量在内存缓存中进行,热点数据和事务操作都发生在内存缓存中,事务处理性能高;实现读写分离,获得接近内存数据库的事务处理性能。
附图说明
图1为本发明实施例中基于LSM树的Oracle数据库数据处理方法流程图;
图2为本发明实施例中基于LSM树的Oracle数据库数据处理方法架构图;
图3为本发明实施例中数据持久化原理图;
图4为本发明实施例中数据合并原理图。
具体实施方式
下面结合附图和实施例对本发明作进一步的描述。
图1为本发明实施例中基于LSM树的Oracle数据库数据处理方法流程图。
请参见图1,本发明实施例的基于LSM树的Oracle数据库数据处理方法,包括如下步骤:
S1:写数据,将增加或者更新的数据有序的写入LSM内存缓冲区;
S2:数据持久化,将LSM内存缓冲区中的数据定时或者按照固定大小持久化到LSM磁盘;
S3:数据合并,对LSM磁盘中的文件进行数据合并,消除冗余数据;
S4:读数据,先从LSM内存缓冲区数据开始访问,然后按顺序逐层从LSM磁盘查找数据;由于文件本身有序,并且定期的合并减少了磁盘文件个数,因而查找过程相对较快速,在客户端会话看来数据存储文件的位置是透明的;
S5:删除数据,在需要删除的数据上打上删除标记,在进行数据合并时,将有删除标记的数据丢弃。
请参见图2,本发明实施例的基于LSM树的Oracle数据库数据处理方法,LSM存储引擎是一个多层结构,就像一个树一样从小到大。LSM内存缓冲区为存储的Level-0层,保存了所有最近写入的数据,这个内存结构是有序的,并且可以随时原地更新,同时支持随时读操作;剩下的Level-1到Level-n层都在LSM磁盘上,每一层都是一个有序的结构。
当有增量写入操作或修改更新操作时,写入LSM内存缓冲区中(buffer cache),LSM内存缓冲区中通过某种数据结构(如skiplist)保持key有序,所有动态修改都在LSM内存缓冲区中完成;LSM内存缓冲区没有寻道速度的问题,随机写的性能相比较磁盘得到大幅提升;为了防止进程突然挂掉导致LSM内存缓冲区的数据丢失,一般会将数据追加写到日志文件后才写入LSM内存缓冲区中,以备必要时能从日志恢复数据;每次客户端会话的操作请求都会写入该日志,只有写入成功才会继续执行对业务数据的操作请求。当内存缓冲区中的数据持久化到物理磁盘文件上时,就可以清空相应的LSM日志。
请同时参见图3,本发明实施例的基于LSM树的Oracle数据库数据处理方法,数据保存到LSM内存缓冲区后,内存中的数据定时或按固定大小地持久化到LSM磁盘,更新操作只不断地写到内存,并不更新磁盘上已有文件;内存中的数据以块数据形式刷到磁盘,是顺序的IO操作;随着越来越多写操作,磁盘上积累的文件也越来越多,这些文件不可写且有序。
请同时参见图4,本发明实施例的基于LSM树的Oracle数据库数据处理方法,内存缓冲区持久化形成的磁盘文件越来越多,当内存中的修改量超过某个阀值时或者经历一个特定的时间后,读的性能会越来越差,因此需要在适当的时候,对小的磁盘文件进行合并,提高读的性能。在异步的合并操作被触发后,合并操作将内存和磁盘数据合并成新的磁盘数据;为了避免合并操作对业务的影响,本发明可以采用交替合并的方式进行;当一个内存缓冲区(比如LSM buffer 0)被触发合并时,应用会话新的写入请求被指向另一个内存缓冲区(LSM buffer 1),这样应用写数据操作和合并指向的是不同的内存缓冲区,可以隔离彼此影响。定时对文件进行合并操作(compaction),消除冗余数据,减少文件数量;文件有序,保证读取操作相对快速。
具体的,本发明实施例的基于LSM树的Oracle数据库数据处理方法,当有读(select)操作时,先从Level-0层内存数据开始访问,如果在内存中访问不到,再按顺序逐层一个个从磁盘文件(Level-0到Level-n)中查找,由于文件本身有序,并且定期的合并减少了磁盘文件个数,因而查找过程相对较快速。在客户端会话看来数据存储文件的位置是透明的。删除(delete)是一种特殊的更改,被客户端删除的数据打上删除标记,查找会跳过这些删除的数据,当合并时,有删除标记的数据会被丢弃。
综上所述,本发明提供的基于LSM树的Oracle数据库数据处理方法,实现了顺序写磁盘,其以追加的方式写磁盘文件,响应快,稳定性高,有效提高了高并发量;Oracle LSM存储方式只有随机读盘没有随机写盘,只需使用读密集型固态盘,降低了成本;将数据划分为基线数据和修改增量,基线数据持久化到物理磁盘文件,而修改增量在内存缓存中进行,热点数据和事务操作都发生在内存缓存中,事务处理性能高;实现读写分离,获得接近内存数据库的事务处理性能。
虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范围当以权利要求书所界定的为准。
Claims (7)
1.一种基于LSM树的Oracle数据库数据处理方法,其特征在于,包括如下步骤:
S1:写数据,将增加或者更新的数据有序的写入LSM内存缓冲区;
S2:数据持久化,将LSM内存缓冲区中的数据定时或者按照固定大小持久化到LSM磁盘;
S3:数据合并,对LSM磁盘中的文件进行数据合并,消除冗余数据;
S4:读数据,先从LSM内存缓冲区数据开始访问,然后按顺序逐层从LSM磁盘查找数据;
S5:删除数据,在需要删除的数据上打上删除标记,在进行数据合并时,将有删除标记的数据丢弃。
2.如权利要求1所述的基于LSM树的Oracle数据库数据处理方法,其特征在于,所述LSM树的存储系统为key-value存储系统,所述LSM内存缓冲区的存储空间为数据存储的第Level-0层,保存所有最近写入的(key,value)数据,所述LSM内存缓冲区存储的数据有序且随时原地更新,同时支持数据查询读取。
3.如权利要求1所述的基于LSM树的Oracle数据库数据处理方法,其特征在于,所述LSM磁盘的存储空间为数据存储的第Level-1到第Level-n层,每一层存储的数据都是一个在key上有序的数据结构。
4.如权利要求1所述的基于LSM树的Oracle数据库数据处理方法,其特征在于,所述LSM内存缓冲区中设有LSM日志,所述LSM日志记录客户端的操作请求,并将写入LSM内存缓冲区中的数据追加写入LSM日志文件,当LSM内存缓冲区中的数据持久化到LSM磁盘上时,清空LSM日志文件;所述LSM内存缓冲区的数据发生丢失时,通过LSM日志文件恢复数据。
5.如权利要求1所述的基于LSM树的Oracle数据库数据处理方法,其特征在于,所述LSM内存缓冲区中的数据持久化到LSM磁盘文件的过程中产生持久化文件,当因进程退出造成数据丢失时,则在重启进程后通过持久化文件进行数据恢复。
6.如权利要求1所述的基于LSM树的Oracle数据库数据处理方法,其特征在于,所述LSM内存缓冲区中的数据持久化到LSM磁盘时,通过顺序的IO操作将LSM内存缓冲区中数据以块数据的形式刷到LSM磁盘,不更新LSM磁盘上的已有文件,LSM磁盘上的已有文件不可写且有序。
7.如权利要求1所述的基于LSM树的Oracle数据库数据处理方法,其特征在于,所述步骤S3中数据合并为异步合并操作,在异步合并操作触发后,将LSM内存缓冲区中的数据和LSM磁盘中的数据合并成新的LSM磁盘数据;数据合并和内存数据的写入采用交替合并的方式;当一个内存缓冲区被触发合并时,新的写入请求被指向另一个内存缓冲区,写数据操作和合并指向不同的内存缓冲区,进行隔离操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910338628.5A CN110109927A (zh) | 2019-04-25 | 2019-04-25 | 基于LSM树的Oracle数据库数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910338628.5A CN110109927A (zh) | 2019-04-25 | 2019-04-25 | 基于LSM树的Oracle数据库数据处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110109927A true CN110109927A (zh) | 2019-08-09 |
Family
ID=67486771
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910338628.5A Pending CN110109927A (zh) | 2019-04-25 | 2019-04-25 | 基于LSM树的Oracle数据库数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110109927A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110716940A (zh) * | 2019-10-18 | 2020-01-21 | 成都九宽科技有限公司 | 一种增量式数据存取系统 |
CN112579602A (zh) * | 2020-12-22 | 2021-03-30 | 杭州趣链科技有限公司 | 多版本数据存储方法、装置、计算机设备及存储介质 |
CN112800050A (zh) * | 2019-11-13 | 2021-05-14 | 北京清红微谷技术开发有限责任公司 | 基于状态树的交易数据存储方法、系统、装置及p2p网络 |
CN113312312A (zh) * | 2021-06-08 | 2021-08-27 | 武汉理工大学 | 一种基于lsm高效查询流数据的分布式索引方法及系统 |
CN113360571A (zh) * | 2021-06-03 | 2021-09-07 | 广东电网有限责任公司 | 基于特征标记的电网监控系统内存库关系库同步方法 |
CN113419937A (zh) * | 2021-06-29 | 2021-09-21 | 达梦数据技术(江苏)有限公司 | 一种数据和日志一体化的值日志实现方法、装置、设备及存储介质 |
CN113641689A (zh) * | 2021-07-22 | 2021-11-12 | 上海云轴信息科技有限公司 | 基于轻量级数据库的数据处理方法及设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103399915A (zh) * | 2013-07-31 | 2013-11-20 | 北京华易互动科技有限公司 | 一种搜索引擎索引文件的优化读取方法 |
US20180107402A1 (en) * | 2016-10-19 | 2018-04-19 | Acronis International Gmbh | System and method for data storage using log-structured merge trees |
-
2019
- 2019-04-25 CN CN201910338628.5A patent/CN110109927A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103399915A (zh) * | 2013-07-31 | 2013-11-20 | 北京华易互动科技有限公司 | 一种搜索引擎索引文件的优化读取方法 |
US20180107402A1 (en) * | 2016-10-19 | 2018-04-19 | Acronis International Gmbh | System and method for data storage using log-structured merge trees |
Non-Patent Citations (2)
Title |
---|
佚名: "LSM树和TSM存储引擎简介", 《HTTPS://BLOG.CSDN.NET/CYMM_LIU/ARTICLE/DETAILS/88344215》 * |
佚名: "看图轻松理解数据结构与算法系列(NoSQL存储-LSM树)", 《HTTPS://BLOG.CSDN.NET/WANGYANGZHIZHOU/ARTICLE/DETAILS》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110716940A (zh) * | 2019-10-18 | 2020-01-21 | 成都九宽科技有限公司 | 一种增量式数据存取系统 |
CN112800050A (zh) * | 2019-11-13 | 2021-05-14 | 北京清红微谷技术开发有限责任公司 | 基于状态树的交易数据存储方法、系统、装置及p2p网络 |
CN112579602A (zh) * | 2020-12-22 | 2021-03-30 | 杭州趣链科技有限公司 | 多版本数据存储方法、装置、计算机设备及存储介质 |
CN112579602B (zh) * | 2020-12-22 | 2023-06-09 | 杭州趣链科技有限公司 | 多版本数据存储方法、装置、计算机设备及存储介质 |
CN113360571A (zh) * | 2021-06-03 | 2021-09-07 | 广东电网有限责任公司 | 基于特征标记的电网监控系统内存库关系库同步方法 |
CN113312312A (zh) * | 2021-06-08 | 2021-08-27 | 武汉理工大学 | 一种基于lsm高效查询流数据的分布式索引方法及系统 |
CN113312312B (zh) * | 2021-06-08 | 2022-08-05 | 武汉理工大学 | 一种基于lsm高效查询流数据的分布式索引方法及系统 |
CN113419937A (zh) * | 2021-06-29 | 2021-09-21 | 达梦数据技术(江苏)有限公司 | 一种数据和日志一体化的值日志实现方法、装置、设备及存储介质 |
WO2023272895A1 (zh) * | 2021-06-29 | 2023-01-05 | 达梦数据技术(江苏)有限公司 | 一种数据和日志一体化的值日志实现方法、装置、设备及存储介质 |
CN113641689A (zh) * | 2021-07-22 | 2021-11-12 | 上海云轴信息科技有限公司 | 基于轻量级数据库的数据处理方法及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110109927A (zh) | 基于LSM树的Oracle数据库数据处理方法 | |
CN110825748B (zh) | 利用差异化索引机制的高性能和易扩展的键值存储方法 | |
CN109213772B (zh) | 数据存储方法及NVMe存储系统 | |
CN106708427B (zh) | 一种适用于键值对数据的存储方法 | |
US8225029B2 (en) | Data storage processing method, data searching method and devices thereof | |
CN109683811B (zh) | 一种混合内存键值对存储系统的请求处理方法 | |
CN109299113B (zh) | 具有存储感知的混合索引的范围查询方法 | |
CN107832013B (zh) | 一种管理固态硬盘映射表的方法 | |
US7418544B2 (en) | Method and system for log structured relational database objects | |
CN107463447B (zh) | 一种基于远程直接非易失内存访问的b+树管理方法 | |
CN109598156B (zh) | 一种写时重定向引擎快照流方法 | |
CN105912687B (zh) | 海量分布式数据库存储单元 | |
CN102541757B (zh) | 写缓存方法、缓存同步方法和装置 | |
CN104699416B (zh) | 一种数据存储系统以及一种数据存储方法 | |
CN110058822A (zh) | 一种磁盘阵列横向拓展方法 | |
CN113821171B (zh) | 一种基于哈希表与lsm树的键值存储方法 | |
RU2525752C2 (ru) | Способ и устройство хранения, чтения и записи составного документа | |
CN104156432A (zh) | 一种文件访问方法 | |
CN113448964B (zh) | 一种基于图-kv的混合存储方法及装置 | |
CN112732725B (zh) | 基于nvm混合内存的自适应前缀树构建方法及其系统、介质 | |
CN117149081B (zh) | 一种基于zns固态硬盘的时序数据库存储引擎构建方法 | |
CN109213760B (zh) | 非关系数据存储的高负载业务存储及检索方法 | |
CN116226232A (zh) | 面向分布式数据库的持久内存数据存储方法及系统 | |
CN116204130A (zh) | 一种键值存储系统和键值存储系统的管理方法 | |
KR100982591B1 (ko) | 단계적 인덱싱을 위한 파일 시스템, 메인 기억장치 및플래시 기억장치 그리고 상기 단계적 인덱싱을 통한 데이터관리 방법 |
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 |