CN114138200A - 一种基于RocksDB的预写日志方法及*** - Google Patents
一种基于RocksDB的预写日志方法及*** Download PDFInfo
- Publication number
- CN114138200A CN114138200A CN202111453433.9A CN202111453433A CN114138200A CN 114138200 A CN114138200 A CN 114138200A CN 202111453433 A CN202111453433 A CN 202111453433A CN 114138200 A CN114138200 A CN 114138200A
- Authority
- CN
- China
- Prior art keywords
- log
- file
- written
- write
- writing
- 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.)
- Granted
Links
Images
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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1847—File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
-
- 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/23—Updating
- G06F16/2308—Concurrency control
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/0643—Management of files
-
- 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
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/068—Hybrid storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明特别涉及一种基于RocksDB的预写日志方法及***。该基于RocksDB的预写日志方法及***,通过启用固定数量且绑核的线程,对NVMe SSD设备的写入请求进行接受、管理、执行和返回;使用自制文件***对混合存储设备进行分区、管理和优化;并用SPDK读取高速的NVMe SSD设备的数据,实现预写日志恢复;利用滑动窗口算法和/或位图算法,使用忙等待技术,实现预写文件***的的同步机制。该基于RocksDB的预写日志方法及***,能够充分发挥出NVMe SSD的高存储性能,大大加快了数据库的吞吐速度,能够保证各个硬件设备能够充分得到利用,避免了数据库因磁盘写入速度慢而导致的写时速问题,提高了数据库的恢复速度,使得数据库的读取和写入性能大大提高。
Description
技术领域
本发明涉及数据库数据安全技术领域,特别涉及一种基于RocksDB的预写日志方法及***。
背景技术
闪存技术不断发展和完善,使用NAND闪存构建的固态磁盘容量变得越来越大,价格也越来越低,字节单位存储成本变得越来越低。很多企业已经可以承担起固态硬盘的价格。随着固态硬盘的技术的革新,固态硬盘可承受擦除次数极大提高。同时固态硬盘相比机械硬盘来讲,数据传输速率极高,固态硬盘使用SATA 3接口,顺序读取和顺序写入速度均为每秒400MB到500MB,对于使用PCIe 3.0x4的接口的NVMe(Non-Volatile Memory Express,非易失性存储器标准)SSD(硬盘),顺序读取和顺序写入速度均为每秒3GB到4GB。闪存设备越来越多的出现在企业的应用中了。
传统的存储驱动程序,都是基于机械硬盘编写的。大部分都是通过操作***的上下文切换,对数据进行写入。然而对于高端的存储设备,例如使用PCIe 3.0x4的接口的NVMeSSD来讲,频繁的上下文切换反而带来了更大的开销。SPDK绕过了操作***的存储驱动程序,SPDK基于轮询的I/O工作,减少了CPU的使用。SPDK提供了高速的、并行的写入机制,并支持异步请求处理。
随着社会地不断发展,大数据,人工智能都需要底层数据的支持。PB级的数据量在各大企业中非常常见。中小企业的数据量也不容小觑。所以对于数据存储设备和数据库都提出了很大的挑战。
为了提高数据库RocksDB的吞吐量,本发明提出了一种基于RocksDB的预写日志方法及***。
发明内容
本发明为了弥补现有技术的缺陷,提供了一种简单高效的基于RocksDB的预写日志方法及***。
本发明是通过如下技术方案实现的:
一种基于RocksDB的预写日志方法及***,其特征在于:包括以下步骤:
第一步,预写日志异步写入
包括多线程写入、读取和统计任务管理与调度;通过启用固定数量且绑核的线程,对NVMe SSD设备的写入请求进行接受、管理、执行和返回,通过SPDK写入NVMe SSD设备;
第二步,预写日志文件管理
对高速的NVMe SSD存储设备直接写入,绕过文件***,使用适合RocksDB和SPDK的自制文件***对混合存储设备进行分区、管理和优化;
第三步,预写日志恢复
包括对日志文件的定位、读取和数据管理;由于预写日志***的使用自制文件***,文件结构与数据组织形式使用自制的文件和数据格式,并用SPDK读取高速的NVMe SSD设备的数据,以实现文件恢复;
第四步,预写日志同步机制
利用滑动窗口算法和/或位图算法,使用忙等待技术,实现预写文件***的的同步机制。
所述第一步中,创建专门用于后台的日志写入线程,对后台日志写入线程进行绑核,并将NVMe SSD设备绑定到数据库进程上;启动SPDK server,对存储设备进行读取,并更新预写日志***信息;
后台的日志写入线程先申请一个区域,然后向申请的区域中进行写入,多个后台的日志写入线程并行执行;
后台的日志写入线程收到请求后,通过SPDK执行写入的请求,写入到NVMe SSD设备的对应区域。
所述第一步中,使用SPDK的异步写入的方式对文件进行写入,将数据库的写入操作进行并行执行,采用CAS的无锁机制将RocksDB对NVMe SSD设备的写入请求传递到log队列中。
所述第二步中,预写日志文件管理实现流程如下:
S1.从log请求队列中获取所有的队列请求,并将队列中所有的请求进行数据合并;
S2.对合并后的数据大小进行计算,并按页进行存储;
数据大小能够完整存入一个或多个页中,如果不足一页,则将页的未满数据区进行填充;原子性的申请页空间,并将每个请求所需页数以及数据的总大小,写入到记录和预写日志管理***中;
S3.向记录中加入每个条目的校验和总和检验码Checksum,为每个条目添加对应的逻辑文件号,异步写入的逻辑文件号与Rocksdb中的文件号对应;
S4.当逻辑文件号下的文件写满时,在写满前的最后一条数据追加文件结束标记,以表示文件结束;
所述文件结束标记记录文件总大小、文件总条数、文件权限标记以及最后写入时间。
所述第三步中,先通过自制文件***进行文件定位和数据定位,然后通过预写日志***的日志线程,并行恢复文件;具体实现流程如下:
S1.首先读取元数据页,,将元数据页的信息读入到数据库管理***中;
所述元数据页的信息包括预写日志的位置、预写日志的文件数量、预写日志文件的文件描述符以及预写日志的写入时间。
S2.根据时间从前往后的找到各个预写日志文件,并将各个预写日志文件读取到数据库中,在读取前先做数据校验,以保证数据安全,直至读取到文件结束标志,结束文件读取;
S3.完成数据读取后,将数据落盘到银月服务器工具SST(Silmoon Server tools)中,然后将对应的预写日志删除,以保证内存中全部是全新数据。
所述第四步中,使用滑动窗口算法,找到并弹出与直接节点相邻的节点,根据弹出的节点读出对应的序号sequence number值进行发布。
滑动窗口算法内部利用红黑树机制进行数据排序,实际算法复杂度是log(n)。
所述第四步中,输出判断条件为:
1)轮询访问完成的写入请求加入至环形队列,遇到完成后的请求,跳出忙等待,通知客户端线程。
2)通过位图算法和/或滑动窗口算法,将返回的请求按顺序发布。
实现该基于RocksDB的预写日志方法的***,包括
预写日志异步写入模块,通过启用固定数量且绑核的线程,对NVMe SSD设备的写入请求进行接受、管理、执行和返回,通过SPDK写入NVMe SSD设备;
预写日志文件管理模块,适应于混合存储设备的文件***的设计与实现;对高速的NVMe SSD存储设备直接写入,绕过文件***,使用适合RocksDB和SPDK的自制文件***对混合存储设备进行分区、管理和优化;
混合设备包括高速的NVMe SSD存储和容量大且价格低的机械硬盘。
预写日志恢复功能模块,用于保障写入到NVMe SSD设备的预写日志的安全,包括对日志文件的定位、读取和数据管理,并用SPDK读取高速的NVMe SSD设备的数据,以实现文件恢复;
预写日志同步机制模块,利用滑动窗口算法和/或位图算法,使用忙等待技术,实现预写文件***的的同步机制。
一种计算机设备,其特征在于:包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述基于RocksDB的预写日志方法的步骤。
本发明的有益效果是:该基于RocksDB的预写日志方法及***,能够充分发挥出NVMe SSD的高存储性能,大大加快了数据库的吞吐速度,能够保证各个硬件设备能够充分得到利用,避免了数据库因磁盘写入速度慢而导致的写时速问题,提高了数据库的恢复速度,使得数据库的读取和写入性能大大提高。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
附图1为本发明基于RocksDB的预写日志方法及***示意图。
附图2为本发明异步并行日志写入机制示意图。
具体实施方式
为了使本技术领域的人员更好的理解本发明中的技术方案,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚,完整的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
该基于RocksDB的预写日志方法,包括以下步骤:
第一步,预写日志异步写入
包括多线程写入、读取和统计任务管理与调度;通过启用固定数量且绑核的线程,对NVMe SSD设备的写入请求进行接受、管理、执行和返回,通过SPDK写入NVMe SSD设备;
第二步,预写日志文件管理
对高速的NVMe SSD存储设备直接写入,绕过文件***,使用适合RocksDB和SPDK的自制文件***对混合存储设备进行分区、管理和优化;
第三步,预写日志恢复
包括对日志文件的定位、读取和数据管理;由于预写日志***的使用自制文件***,文件结构与数据组织形式使用自制的文件和数据格式,并用SPDK读取高速的NVMe SSD设备的数据,以实现文件恢复;
第四步,预写日志同步机制
利用滑动窗口算法和/或位图算法,使用忙等待技术,实现预写文件***的的同步机制。
所述第一步中,创建专门用于后台的日志写入线程,对后台日志写入线程进行绑核,并将NVMe SSD设备绑定到数据库进程上;启动SPDK server,对存储设备进行读取,并更新预写日志***信息;
后台的日志写入线程先申请一个区域,然后向申请的区域中进行写入,多个后台的日志写入线程并行执行;
后台的日志写入线程收到请求后,通过SPDK执行写入的请求,写入到NVMe SSD设备的对应区域。
所述第一步中,使用SPDK的异步写入的方式对文件进行写入,将数据库的写入操作进行并行执行,采用CAS的无锁机制将RocksDB对NVMe SSD设备的写入请求传递到log队列中。
使用SPDK访问高端NVMe SSD后,写入过程会绕过操作***,同时也会绕过操作***下的文件***。传统的文件***,是为传统的机械硬盘而设计的。数据在文件中的组织形式也与常规的文件***组织形式不同,因为需要设计出可支持并行写入的数据组织形式(见附图2)。
所述第二步中,预写日志文件管理实现流程如下:
S1.从log请求队列中获取所有的队列请求,并将队列中所有的请求进行数据合并;
S2.对合并后的数据大小进行计算,并按页进行存储;
数据大小能够完整存入一个或多个页中,如果不足一页,则将页的未满数据区进行填充;原子性的申请页空间,并将每个请求所需页数以及数据的总大小,写入到记录和预写日志管理***中;
S3.向记录中加入每个条目的校验和总和检验码Checksum,为每个条目添加对应的逻辑文件号,异步写入的逻辑文件号与Rocksdb中的文件号对应;
S4.当逻辑文件号下的文件写满时,在写满前的最后一条数据追加文件结束标记,以表示文件结束;
所述文件结束标记记录文件总大小、文件总条数、文件权限标记以及最后写入时间。
由于NVMe SSD存储设备的顺序读取速度很快,所以预写日志文件***所提供的恢复速度同样很快。根据预写日志文件的文件组织形式,预写日志恢复模块也做出了相应的改进。
所述第三步中,先通过自制文件***进行文件定位和数据定位,然后通过预写日志***的日志线程,并行恢复文件;具体实现流程如下:
S1.首先读取元数据页,,将元数据页的信息读入到数据库管理***中;
所述元数据页的信息包括预写日志的位置、预写日志的文件数量、预写日志文件的文件描述符以及预写日志的写入时间。
S2.根据时间从前往后的找到各个预写日志文件,并将各个预写日志文件读取到数据库中,在读取前先做数据校验,以保证数据安全,直至读取到文件结束标志,结束文件读取;
S3.完成数据读取后,将数据落盘到银月服务器工具SST(Silmoon Server tools)中,然后将对应的预写日志删除,以保证内存中全部是全新数据。
由于写日志是异步进行的,所以写入顺序难以控制,但RocksDB需要在写完内存表MemTable时,需要同步序列号,以发布序列号保持数据写入的一致性。而采取并行写入的方式,就需要与组提交方式不一样的同步方式。
所述第四步中,使用滑动窗口算法,找到并弹出与直接节点相邻的节点,根据弹出的节点读出对应的序号sequence number值进行发布。
滑动窗口算法内部利用红黑树机制进行数据排序,实际算法复杂度是log(n)。
所述第四步中,输出判断条件为:
1)轮询访问完成的写入请求加入至环形队列,遇到完成后的请求,跳出忙等待,通知客户端线程。
2)通过位图算法和/或滑动窗口算法,将返回的请求按顺序发布。
实现该基于RocksDB的预写日志方法的***,包括
预写日志异步写入模块,通过启用固定数量且绑核的线程,对NVMe SSD设备的写入请求进行接受、管理、执行和返回,通过SPDK写入NVMe SSD设备;
预写日志文件管理模块,适应于混合存储设备的文件***的设计与实现;对高速的NVMe SSD存储设备直接写入,绕过文件***,使用适合RocksDB和SPDK的自制文件***对混合存储设备进行分区、管理和优化;
混合设备包括高速的NVMe SSD存储和容量大且价格低的机械硬盘。
预写日志恢复功能模块,用于保障写入到NVMe SSD设备的预写日志的安全,包括对日志文件的定位、读取和数据管理,并用SPDK读取高速的NVMe SSD设备的数据,以实现文件恢复;
预写日志同步机制模块,利用滑动窗口算法和/或位图算法,使用忙等待技术,实现预写文件***的的同步机制。
该计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现该基于RocksDB的预写日志方法的步骤。.
与现有技术相比,该基于RocksDB的预写日志方法及***,具有以下特点:
第一、能够充分发挥出NVMe SSD的高存储性能,使用SPDK在用户态运行,忙等待机制的优点将高速存储设备的性能发挥到极致。
第二、通过异步写NVMe SSD实现高并发量,借助SSD支持并行写入的特性,大大加快了数据库的吞吐速度。
第三、通过预写日志异步写入模块,协调各个线程,以充分利用CPU和存储设备,有效保证了各个硬件设备能够充分得到利用,避免了数据库因磁盘写入速度慢而导致的写时速问题。
第四、提高了数据库的恢复速度,恢复速度的提高可以让数据库拥有更大的内存缓冲,内存缓冲区的增大使得数据库的读取和写入性能大大提高。
第五、数据库的同步机制使得数据库在原有架构上改变不大,可以兼容rocksdb数据库。
以上所述的实施例,只是本发明具体实施方式的一种,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
Claims (9)
1.一种基于RocksDB的预写日志方法,其特征在于:包括以下步骤:
第一步,预写日志异步写入
包括多线程写入、读取和统计任务管理与调度;通过启用固定数量且绑核的线程,对NVMe SSD设备的写入请求进行接受、管理、执行和返回,通过SPDK写入NVMe SSD设备;
第二步,预写日志文件管理
对高速的NVMe SSD存储设备直接写入,绕过文件***,使用适合RocksDB和SPDK的自制文件***对混合存储设备进行分区、管理和优化;
第三步,预写日志恢复
包括对日志文件的定位、读取和数据管理;由于预写日志***的使用自制文件***,文件结构与数据组织形式使用自制的文件和数据格式,并用SPDK读取高速的NVMe SSD设备的数据,以实现文件恢复;
第四步,预写日志同步机制
利用滑动窗口算法和/或位图算法,使用忙等待技术,实现预写文件***的的同步机制。
2.根据权利要求1所述的基于RocksDB的预写日志方法,其特征在于:所述第一步中,创建专门用于后台的日志写入线程,对后台日志写入线程进行绑核,并将NVMe SSD设备绑定到数据库进程上;启动SPDK server,对存储设备进行读取,并更新预写日志***信息;
后台的日志写入线程先申请一个区域,然后向申请的区域中进行写入,多个后台的日志写入线程并行执行;
后台的日志写入线程收到请求后,通过SPDK执行写入的请求,写入到NVMe SSD设备的对应区域。
3.根据权利要求2所述的基于RocksDB的预写日志方法,其特征在于:所述第一步中,使用SPDK的异步写入的方式对文件进行写入,将数据库的写入操作进行并行执行,采用CAS的无锁机制将RocksDB对NVMe SSD设备的写入请求传递到log队列中。
4.根据权利要求3所述的基于RocksDB的预写日志方法,其特征在于:所述第二步中,预写日志文件管理实现流程如下:
S1.从log请求队列中获取所有的队列请求,并将队列中所有的请求进行数据合并;
S2.对合并后的数据大小进行计算,并按页进行存储;
数据大小能够完整存入一个或多个页中,如果不足一页,则将页的未满数据区进行填充;原子性的申请页空间,并将每个请求所需页数以及数据的总大小,写入到记录和预写日志管理***中;
S3.向记录中加入每个条目的校验和总和检验码Checksum,为每个条目添加对应的逻辑文件号,异步写入的逻辑文件号与Rocksdb中的文件号对应;
S4.当逻辑文件号下的文件写满时,在写满前的最后一条数据追加文件结束标记,以表示文件结束;
所述文件结束标记记录文件总大小、文件总条数、文件权限标记以及最后写入时间。
5.根据权利要求1所述的基于RocksDB的预写日志方法,其特征在于:所述第三步中,先通过自制文件***进行文件定位和数据定位,然后通过预写日志***的日志线程,并行恢复文件;具体实现流程如下:
S1.首先读取元数据页,,将元数据页的信息读入到数据库管理***中;
所述元数据页的信息包括预写日志的位置、预写日志的文件数量、预写日志文件的文件描述符以及预写日志的写入时间;
S2.根据时间从前往后的找到各个预写日志文件,并将各个预写日志文件读取到数据库中,在读取前先做数据校验,以保证数据安全,直至读取到文件结束标志,结束文件读取;
S3.完成数据读取后,将数据落盘到银月服务器工具SST中,然后将对应的预写日志删除,以保证内存中全部是全新数据。
6.根据权利要求1所述的基于RocksDB的预写日志方法,其特征在于:所述第四步中,使用滑动窗口算法,找到并弹出与直接节点相邻的节点,根据弹出的节点读出对应的序号sequence number值进行发布;
滑动窗口算法内部利用红黑树机制进行数据排序,实际算法复杂度是log(n)。
7.根据权利要求6所述的基于RocksDB的预写日志方法,其特征在于:所述第四步中,输出判断条件为:
1)轮询访问完成的写入请求加入至环形队列,遇到完成后的请求,跳出忙等待,通知客户端线程。
2)通过位图算法和/或滑动窗口算法,将返回的请求按顺序发布。
8.根据权利要求1~7所述的基于RocksDB的预写日志方法的***,其特征在于:包括
预写日志异步写入模块,通过启用固定数量且绑核的线程,对NVMe SSD设备的写入请求进行接受、管理、执行和返回,通过SPDK写入NVMe SSD设备;
预写日志文件管理模块,适应于混合存储设备的文件***的设计与实现;对高速的NVMe SSD存储设备直接写入,绕过文件***,使用适合RocksDB和SPDK的自制文件***对混合存储设备进行分区、管理和优化;
预写日志恢复功能模块,用于保障写入到NVMe SSD设备的预写日志的安全,包括对日志文件的定位、读取和数据管理,并用SPDK读取高速的NVMe SSD设备的数据,以实现文件恢复;
预写日志同步机制模块,利用滑动窗口算法和/或位图算法,使用忙等待技术,实现预写文件***的的同步机制。
9.一种计算机设备,其特征在于:包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现权利要求1~7所述的基于RocksDB的预写日志方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111453433.9A CN114138200B (zh) | 2021-12-01 | 2021-12-01 | 一种基于RocksDB的预写日志方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111453433.9A CN114138200B (zh) | 2021-12-01 | 2021-12-01 | 一种基于RocksDB的预写日志方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114138200A true CN114138200A (zh) | 2022-03-04 |
CN114138200B CN114138200B (zh) | 2023-10-13 |
Family
ID=80387279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111453433.9A Active CN114138200B (zh) | 2021-12-01 | 2021-12-01 | 一种基于RocksDB的预写日志方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114138200B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116561143A (zh) * | 2023-04-21 | 2023-08-08 | 清华大学 | 一种基于多队列的数据库预写日志方法和装置 |
CN117056245A (zh) * | 2023-08-18 | 2023-11-14 | 武汉麓谷科技有限公司 | 一种基于zns固态硬盘的面向日志记录应用的数据组织方法 |
CN118170323A (zh) * | 2024-05-11 | 2024-06-11 | 中移(苏州)软件技术有限公司 | 数据读写方法、装置、电子设备、存储介质和程序产品 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107291399A (zh) * | 2017-06-30 | 2017-10-24 | 郑州云海信息技术有限公司 | 一种基于spdk的后端存储方法、装置及*** |
CN111221922A (zh) * | 2019-12-31 | 2020-06-02 | 苏州浪潮智能科技有限公司 | 一种RocksDB数据库数据写入方法及RocksDB数据库 |
CN112699092A (zh) * | 2021-01-13 | 2021-04-23 | 浪潮云信息技术股份公司 | 一种RocksDB存储大值数据的方法 |
CN112925676A (zh) * | 2021-03-09 | 2021-06-08 | 浪潮云信息技术股份公司 | 一种基于wal实现分布式数据库集群任意时间点恢复的方法 |
CN113126919A (zh) * | 2021-04-02 | 2021-07-16 | 山东英信计算机技术有限公司 | 一种RocksDB性能提升方法、***及存储介质 |
CN113190619A (zh) * | 2021-04-29 | 2021-07-30 | 优刻得科技股份有限公司 | 分布式kv数据库的数据读写方法、***、设备和介质 |
CN113253932A (zh) * | 2021-05-28 | 2021-08-13 | 济南浪潮数据技术有限公司 | 一种分布式存储***的读写控制方法和*** |
US20210263789A1 (en) * | 2020-02-26 | 2021-08-26 | Research & Business Foundation Sungkyunkwan University | Method for improving processing speed of input and output related to writing in operating system |
CN113535729A (zh) * | 2021-07-21 | 2021-10-22 | 浪潮云信息技术股份公司 | 一种基于RocksDB实现行列混合存储的方法 |
CN113688099A (zh) * | 2021-08-09 | 2021-11-23 | 浪潮云信息技术股份公司 | 基于spdk的数据库存储引擎加速方法及*** |
-
2021
- 2021-12-01 CN CN202111453433.9A patent/CN114138200B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107291399A (zh) * | 2017-06-30 | 2017-10-24 | 郑州云海信息技术有限公司 | 一种基于spdk的后端存储方法、装置及*** |
CN111221922A (zh) * | 2019-12-31 | 2020-06-02 | 苏州浪潮智能科技有限公司 | 一种RocksDB数据库数据写入方法及RocksDB数据库 |
US20210263789A1 (en) * | 2020-02-26 | 2021-08-26 | Research & Business Foundation Sungkyunkwan University | Method for improving processing speed of input and output related to writing in operating system |
CN112699092A (zh) * | 2021-01-13 | 2021-04-23 | 浪潮云信息技术股份公司 | 一种RocksDB存储大值数据的方法 |
CN112925676A (zh) * | 2021-03-09 | 2021-06-08 | 浪潮云信息技术股份公司 | 一种基于wal实现分布式数据库集群任意时间点恢复的方法 |
CN113126919A (zh) * | 2021-04-02 | 2021-07-16 | 山东英信计算机技术有限公司 | 一种RocksDB性能提升方法、***及存储介质 |
CN113190619A (zh) * | 2021-04-29 | 2021-07-30 | 优刻得科技股份有限公司 | 分布式kv数据库的数据读写方法、***、设备和介质 |
CN113253932A (zh) * | 2021-05-28 | 2021-08-13 | 济南浪潮数据技术有限公司 | 一种分布式存储***的读写控制方法和*** |
CN113535729A (zh) * | 2021-07-21 | 2021-10-22 | 浪潮云信息技术股份公司 | 一种基于RocksDB实现行列混合存储的方法 |
CN113688099A (zh) * | 2021-08-09 | 2021-11-23 | 浪潮云信息技术股份公司 | 基于spdk的数据库存储引擎加速方法及*** |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116561143A (zh) * | 2023-04-21 | 2023-08-08 | 清华大学 | 一种基于多队列的数据库预写日志方法和装置 |
CN117056245A (zh) * | 2023-08-18 | 2023-11-14 | 武汉麓谷科技有限公司 | 一种基于zns固态硬盘的面向日志记录应用的数据组织方法 |
CN117056245B (zh) * | 2023-08-18 | 2024-02-23 | 武汉麓谷科技有限公司 | 一种基于zns固态硬盘的面向日志记录应用的数据组织方法 |
CN118170323A (zh) * | 2024-05-11 | 2024-06-11 | 中移(苏州)软件技术有限公司 | 数据读写方法、装置、电子设备、存储介质和程序产品 |
Also Published As
Publication number | Publication date |
---|---|
CN114138200B (zh) | 2023-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114138200B (zh) | 一种基于RocksDB的预写日志方法及*** | |
US10248362B2 (en) | Data management for a data storage device | |
CN102467408B (zh) | 一种虚拟机数据的访问方法和设备 | |
CN107728937B (zh) | 一种使用非易失性内存介质的键值对持久存储方法及*** | |
US11037627B2 (en) | Cell block allocation for hybrid dual write | |
US20120179655A1 (en) | Method and system of performing incremental sql server database backups | |
CN109725840A (zh) | 利用异步冲刷对写入进行节流 | |
WO2017025039A1 (zh) | 一种面向闪存存储的数据访问方法及其装置 | |
US9135262B2 (en) | Systems and methods for parallel batch processing of write transactions | |
US20140215127A1 (en) | Apparatus, system, and method for adaptive intent logging | |
CN107291399B (zh) | 一种基于spdk的后端存储方法、装置及*** | |
WO2018171296A1 (zh) | 一种文件合并方法及控制器 | |
US11379326B2 (en) | Data access method, apparatus and computer program product | |
CN110597663A (zh) | 一种事务处理方法及装置 | |
US20230205649A1 (en) | Hardware-Assisted Memory Disaggregation with Recovery from Network Failures Using Non-Volatile Memory | |
US11681638B2 (en) | Method of synchronizing time between host device and storage device and system performing the same | |
CN102929935A (zh) | 一种基于事务的大容量数据读写方法 | |
CN104778100A (zh) | 一种安全备份数据的方法 | |
US20210181977A1 (en) | Optimizing atomic writes to a storage device | |
CN109783032A (zh) | 一种基于异构计算的分布式存储加速方法及装置 | |
US20230409235A1 (en) | File system improvements for zoned storage device operations | |
CN107422990B (zh) | 一种动态迁移方法及装置 | |
KR20220088274A (ko) | 코어별 저널 구조를 포함하는 컴퓨팅 시스템 | |
CN108536393B (zh) | 一种磁盘初始化方法及装置 | |
CN114840134A (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20221215 Address after: Room 305-22, Building 2, No. 1158 Zhangdong Road and No. 1059 Dangui Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai, 200120 Applicant after: Shanghai Yunxi Technology Co.,Ltd. Address before: 250100 No. 1036 Tidal Road, Jinan High-tech Zone, Shandong Province, S01 Building, Tidal Science Park Applicant before: Inspur cloud Information Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |