基于LSM树的Oracle数据库数据处理方法与流程

文档序号:18409723发布日期:2019-08-10 00:52阅读:651来源:国知局
基于LSM树的Oracle数据库数据处理方法与流程

本发明涉及一种数据处理方法,尤其涉及一种基于lsm树的oracle数据库数据处理方法。



背景技术:

数据库有三种基本的存储方式:1、哈希表,支持增、删、改以及随机读取操作,但不支持顺序扫描,对应的存储系统为key-value存储系统。对于key-value的插入以及查询,哈希表的复杂度都是o(1),明显比树的操作o(n)快,如果不需要有序的遍历数据,哈希表就是不错的选择;2、b+树,支持单条记录的增、删、读、改操作,还支持顺序扫描(b+树的叶子节点之间的指针),对应的存储系统就是关系数据库(mysql等);3、lsm树(log-structuredmergetree),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数据库数据处理方法,实现了顺序写磁盘,其以追加的方式写磁盘文件,响应快,稳定性高,有效提高了高并发量;oraclelsm存储方式只有随机读盘没有随机写盘,只需使用读密集型固态盘,降低了成本;将数据划分为基线数据和修改增量,基线数据持久化到物理磁盘文件,而修改增量在内存缓存中进行,热点数据和事务操作都发生在内存缓存中,事务处理性能高;实现读写分离,获得接近内存数据库的事务处理性能。

附图说明

图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内存缓冲区中(buffercache),lsm内存缓冲区中通过某种数据结构(如skiplist)保持key有序,所有动态修改都在lsm内存缓冲区中完成;lsm内存缓冲区没有寻道速度的问题,随机写的性能相比较磁盘得到大幅提升;为了防止进程突然挂掉导致lsm内存缓冲区的数据丢失,一般会将数据追加写到日志文件后才写入lsm内存缓冲区中,以备必要时能从日志恢复数据;每次客户端会话的操作请求都会写入该日志,只有写入成功才会继续执行对业务数据的操作请求。当内存缓冲区中的数据持久化到物理磁盘文件上时,就可以清空相应的lsm日志。

请同时参见图3,本发明实施例的基于lsm树的oracle数据库数据处理方法,数据保存到lsm内存缓冲区后,内存中的数据定时或按固定大小地持久化到lsm磁盘,更新操作只不断地写到内存,并不更新磁盘上已有文件;内存中的数据以块数据形式刷到磁盘,是顺序的io操作;随着越来越多写操作,磁盘上积累的文件也越来越多,这些文件不可写且有序。

请同时参见图4,本发明实施例的基于lsm树的oracle数据库数据处理方法,内存缓冲区持久化形成的磁盘文件越来越多,当内存中的修改量超过某个阀值时或者经历一个特定的时间后,读的性能会越来越差,因此需要在适当的时候,对小的磁盘文件进行合并,提高读的性能。在异步的合并操作被触发后,合并操作将内存和磁盘数据合并成新的磁盘数据;为了避免合并操作对业务的影响,本发明可以采用交替合并的方式进行;当一个内存缓冲区(比如lsmbuffer0)被触发合并时,应用会话新的写入请求被指向另一个内存缓冲区(lsmbuffer1),这样应用写数据操作和合并指向的是不同的内存缓冲区,可以隔离彼此影响。定时对文件进行合并操作(compaction),消除冗余数据,减少文件数量;文件有序,保证读取操作相对快速。

具体的,本发明实施例的基于lsm树的oracle数据库数据处理方法,当有读(select)操作时,先从level-0层内存数据开始访问,如果在内存中访问不到,再按顺序逐层一个个从磁盘文件(level-0到level-n)中查找,由于文件本身有序,并且定期的合并减少了磁盘文件个数,因而查找过程相对较快速。在客户端会话看来数据存储文件的位置是透明的。删除(delete)是一种特殊的更改,被客户端删除的数据打上删除标记,查找会跳过这些删除的数据,当合并时,有删除标记的数据会被丢弃。

综上所述,本发明提供的基于lsm树的oracle数据库数据处理方法,实现了顺序写磁盘,其以追加的方式写磁盘文件,响应快,稳定性高,有效提高了高并发量;oraclelsm存储方式只有随机读盘没有随机写盘,只需使用读密集型固态盘,降低了成本;将数据划分为基线数据和修改增量,基线数据持久化到物理磁盘文件,而修改增量在内存缓存中进行,热点数据和事务操作都发生在内存缓存中,事务处理性能高;实现读写分离,获得接近内存数据库的事务处理性能。

虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范围当以权利要求书所界定的为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1