CN111949439B - 基于数据库的数据文件更新方法和装置 - Google Patents
基于数据库的数据文件更新方法和装置 Download PDFInfo
- Publication number
- CN111949439B CN111949439B CN201910411968.6A CN201910411968A CN111949439B CN 111949439 B CN111949439 B CN 111949439B CN 201910411968 A CN201910411968 A CN 201910411968A CN 111949439 B CN111949439 B CN 111949439B
- Authority
- CN
- China
- Prior art keywords
- data file
- data
- layer
- layer data
- key value
- 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
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/219—Managing data history or versioning
-
- 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/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- 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
-
- 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)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Library & Information Science (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种基于数据库的数据文件更新方法和装置,该方法包括在内存中的键值数据持久化至存储空间生成数据文件时,若参数K的值小于参数N,则循环执行以下方法:获取第K层数据文件中至少一个数据列表的长度和第K层数据文件中的键值数据的数目;基于至少一个数据列表的长度和键值数据的数目,将第K层数据文件与第K+1层数据文件进行合并排序,以更新第K+1层数据文件。本发明实施例解决了现有技术中在出现主备宕机而使用持久化数据进行恢复时容易导致数据丢失的问题。
Description
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种基于数据库的数据文件更新方法和装置。
背景技术
由于电信系统结构复杂且具备高可用性以及实时性,因此,对于电信系统结构的性能要求非常高。如果在业务受理、核心计费、月结出账等方面,频繁出现数据库等待情况,则必将给客户带来损失,最终导致客户流失。特别是在业务的高峰期,并发量比较大时,这些问题显得尤为突出,损失也会更为庞大。因此,需要采用分布式数据网格方案以提升电信系统结构的性能。
Coherence是一个适用于集群化应用程序和应用服务器的内存中分布式数据网格解决方案。通过Oracle Coherence在可预测情况下扩展关键任务应用程序,提供对经常使用的数据进行快速、可靠的访问。Coherence将数据推送到更接近应用程序的地方,以提供更快的访问和更大的资源利用率。通过自动、动态地对位于多台服务器上的内存中数据进行分区,实现持续的数据可用性和事务完整性。Coherence是一个共享基础架构,其将数据局部性与本地处理功能相结合,可执行实时数据分析、内存中网格计算、以及并行事务和事件的处理。
由于数据从物理存储转移到内存中,以提升访问速度,因此,对数据的高可用提出了更高的要求,虽然在Coherence中考虑了数据冗余,但如出现主备同时宕机的情况,只能寄希望于已持久化的数据,而加大冗余份数,以减少主备同时宕机的几率,又必须要加大一倍设备投入,因此,数据的持久化尤为重要。目前,Coherence主要采用两种方式进行数据持久化:第一,直读直写方案,即所有数据读取/写入都通过缓存,缓存内没有数据时自动从持久化加载,更新缓存并同步持久化;第二,后写入方案,即所有数据写入操作都通过缓存,更新缓存并异步方式写入关系型数据库。
数据持久化采用同步方式,虽然有利于提升数据一致性,但是对性能影响较大,因此往往选择异步方式。而后写入方案持久化写入数据源为写入关系型数据库,对于硬件IO要求较高,同时对性能有一定损耗,在出现主备宕机,使用持久化数据进行恢复时,会存在丢失数据的风险。
发明内容
本发明实施例提供一种基于数据库的数据文件更新方法和装置,以解决现有技术中在出现主备宕机而使用持久化数据进行恢复时容易导致数据丢失的问题。
为解决上述技术问题,本发明是这样实现的:
第一方面,提供一种基于数据库的数据文件更新方法,包括:
在内存中的键值数据持久化至存储空间生成N层数据文件时,若参数K的值小于参数N,则循环执行以下方法:
获取第K层数据文件中至少一个数据列表的长度m和所述第K层数据文件中的键值数据的数目;
基于所述至少一个数据列表的长度和所述键值数据的数目,将所述第K层数据文件与第K+1层数据文件进行合并排序,以更新所述第K+1层数据文件;
其中,K为整数,初始值为0,N为所述数据文件的层级数量,N>0,第0层数据文件为访问的最底层数据文件。
第二方面,提供一种基于数据库的数据文件更新装置,包括:
获取单元,用于在内存中的键值数据持久化至存储空间生成数据文件时,若参数K的值小于参数N,则获取第K层数据文件中至少一个数据列表的长度和所述第K层数据文件中的键值数据的数目;
更新单元,用于基于所述至少一个数据列表的长度和所述键值数据的数目,将所述第K层数据文件与第K+1层数据文件进行合并排序,以更新所述第K+1层数据文件;
其中,K为整数,初始值为0,N为所述数据文件的层级数量,N>0,第0层数据文件为访问的最底层数据文件。
第三方面,还提供一种终端设备,其包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面所述的方法的步骤。
第四方面,还提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的方法的步骤。
在本发明实施例中,基于数据库的数据文件更新方法在内存中的键值数据持久化至存储空间生成数据文件时,从第0层数据文件(即最底层数据文件)开始,分别依据第K层数据文件中至少一个数据列表的长度和该层数据文件中的键值数据的数目,将第K层数据文件合并至第K+1层数据文件中,以分别通过更新第K+1层数据文件,实现对存储空间内数据文件的更新。如此,通过将内存中的数据持久化至存储空间内的数据文件层中第K层数据文件合并至第K+1层数据文件实现数据文件更新的方式,不仅可以快速记录数据文件变更,并进行有序存储,而且还可以避免内存中的数据在出现主备宕机使用持久化数据进行恢复时容易导致数据丢失的问题发生。从而解决了现有技术中在出现主备宕机而使用持久化数据进行恢复时容易导致数据丢失的问题。
附图说明
图1是根据本发明一个实施例的基于数据库的数据文件更新方法的示意性流程图;
图2是根据本发明一个实施例的内存中的数据持久化至外部存储空间的示意性结构原理图;
图3是根据本发明另一个实施例的基于数据库的数据文件更新方法的示意性流程图;
图4是根据本发明一个具体实施例的基于数据库的数据文件更新方法的示意性流程图;
图5是根据本发明一个实施例的基于数据库的数据文件更新装置的示意性结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下结合附图,详细说明本发明各实施例提供的技术方案。
图1是根据本发明一个实施例的基于数据库的数据文件更新方法的示意性流程图,以解决现有技术中在出现主备宕机而使用持久化数据进行恢复时容易导致数据丢失的问题。本发明实施例的方法可包括:在内存中的键值数据持久化至外部存储空间生成数据文件时,若参数K的值小于参数N,则循环执行以下方法:
步骤102.获取第K层数据文件中至少一个数据列表的长度m和第K层数据文件中的键值数据的数目n;
步骤104.基于至少一个数据列表的长度和键值数据的数目,将第K层数据文件与第K+1层数据文件进行合并排序,以更新第K+1层数据文件;
其中,K为整数,初始值为0,N为数据文件的层级数量,N>0,第0层数据文件为访问的最底层数据文件。所谓最底层数据文件是指在内存中的数据持久化至存储空间时数据先保存的位置,即数据先保存在第0层数据文件中,当第0层的数据文件超出系统所设定的大小时,则保存至第1层数据文件中,如此往复,可形成N层数据文件,则第N-1层为访问的最顶层数据文件。
由于基于数据库的数据文件更新方法在内存中的键值数据持久化至外部存储空间生成N层数据文件时,从第0层数据文件即最底层数据文件开始,分别依据第K层数据文件中至少一个数据列表的长度和该层数据文件中的键值数据的数目,将第K层数据文件合并至第K+1层数据文件中,以分别通过更新第K+1层数据文件,实现对存储空间内数据文件的更新。如此,通过将内存中的数据持久化至存储空间内的数据文件层中第K层数据文件合并至第K+1层数据文件实现数据文件更新的方式,不仅可以快速记录数据文件变更,并进行有序存储,而且还可以避免内存中的数据在出现主备宕机使用持久化数据进行恢复时容易导致数据丢失的问题发生。从而解决了现有技术中在出现主备宕机而使用持久化数据进行恢复时容易导致数据丢失的问题。
在上述实施例中,结合图2进行说明,内存中的键值数据持久化至外部存储空间生成N层数据文件可包括:
首先,将内存中的键值数据记入至磁盘(也即外部存储空间)的日志文件中,用于解决系统崩溃恢复而不丢失数据。比如,在系统出现崩溃时,由于内存中的数据已dump至磁盘,因此,即使内存中的数据丢失,但磁盘中存储有内存dump至其中的数据,从而可以避免系统崩溃恢复数据时数据丢失的问题。
然后,将磁盘中日志文件的键值数据异步导出到磁盘的外存文件(也即路由文件)中,并形成具有层级结构的数据文件(即N层数据文件),比如,第一层为层级K,第二层为层级K+1,第i层为K+i,K=0,…N-1。
其中,数据列表可包括键值名key和与键值名key对应的键值内容value,各层级的数据文件中key递增有序排列。其中,层级0中key的范围允许重叠,层级K(K>0)的key的范围不允许重叠。
通过路由文件可记录数据文件所属的层级K,并且,每层数据文件中记录的key有序的,即,记录文件可包括最小key(min key)和最大key(max key)、数据文件所属的层级K以及文件名。其中,通过路由文件可以快速查找键值所属的层级及数据文件,以快速定位和恢复Coherence数据。
在上述实施例中,如图3所示,基于至少一个数据列表的长度和键值数据的数目,将第K层数据文件与第K+1层数据文件进行合并排序,包括:
步骤302.基于至少一个数据列表的长度和第K层数据文件中的键值数据的数目,确定满足执行第K层数据文件中多个数据列表排序所需要的排序时间Θ(logn),其中,n为第K层数据文件中的键值数据的数目。
步骤304.基于至少一个数据列表的长度与排序时间Θ(logn)的关系,确定目标合并排序方式。
其中,结合图4进行说明,若至少一个数据列表的长度大于排序时间Θ(logn),则确定K路合并排序为目标合并排序方式;若至少一个数据列表的长度小于或等于排序时间Θ(logn),则确定插入合并排序为目标合并排序方式。
每层数据文件中数据列表的长度一般是一致的,假设数据列表的长度为m,该层数据文件中键值数据的数据为n,则该层数据文件中数据列表为n/m个,以n/m个数据列表为例进行说明:
a.若对每个数据列表排序的最坏时间是Θ(m2),则n/m个数据列表需要Θ(nm)的渐进时间。
b.合并数据列表需要Θ(nlog(n/m))的时间:最初合并n/m个规模为m的数据列表需要C(n/m)*m=Θ(n),利用数学归纳法可证每次合并都需要Θ(n),并且需要log(n/m)次合并。其中,C为对长度为n/m的数组进行排序所需的常数值。
c.总时间为Θ(nm+nlog(n/m)),可以利用这个总渐进时间,导出m取值的界值范围,即,由可知,m值小于或等于Θ(logn),并且,m的界值可以保证插排优化的渐进时间不会慢于采用K-路合并排序方式所需要的时间。
故当数据列表中存在列表长度m大于数据量Θ(logn)的情况下,选择在K路合并算法对第K层数据列表和第K+1层数据列表进行合并排序,反之采用插入合并方式对第K层数据列表和第K+1层数据列表进行合并排序。
步骤306.基于目标合并排序方式,将第K层数据列表合并至第K+1层数据列表中,并对合并后的第K+1层数据列表进行排序,以更新第K+1层数据文件。
其中,K路合并算法和插入合并算法在数据组排序中被采用,K路合并算法在磁盘中的数据一般只被读入主存多次,多用于海量数据的排序,可以减少IO时间。而插入排序合并算法一般针对小规模数组,可以显著提高合并排序的效率。
在本发明实施例中,针对至少一个数据列表的长度与排序时间的比较,确定目标合并排序方式,即判断采用K路合并算法或是插入合并算法,以进行排序合并,可以提高系统的处理性能。
如此,在对第K层数据列表和第K+1层数据列表进行合并排序过程中,利用插入合并排序不仅可以减少递归次数,还可以减少内存分配次数,从而通过K路合并排序与插入合并排序的结合,在提高合并排序性能的同时,实现对外部存储空间中数据文件的更新,以快速记录数据文件变更,并进行有序存储,并且,可以避免内存中的数据在出现主备宕机使用持久化数据进行恢复时容易导致数据丢失的问题发生。其中,针对对数函数的增长特点,并结合实际的排序规模,一般层级K的实际取值在10~20之间。
在上述进一步的实施中,获取第K层数据文件中所述至少一个数据列表的长度和所述第K层数据文件中的键值数据的数目,包括:
基于数据库系统查询字典,获取第K层数据文件中至少一个数据列表的长度。基于getter查询方式,获取第K层数据文件中的键值数据的数目。即,通过coherence可查询当前缓存的数据,以得到每层数据文件中数据列表的长度,而查询一个值对象的属性通过getter方法,以得到对象的所有缓存条目n值。
在上述任一项实施中,数据文件更新方法还可包括:
若第K层数据文件存在与第K+1层数据文件的目标键值名相同的键值名,则删除第K+1层数据文件中的目标键值名、以及与目标键值名对应的键值内容,以完成新的第K+1层数据文件。
当然,如果第K层数据文件存在与第K+1层数据文件的目标键值名相同的键值名,则可以不删除第K+1层数据文件中的目标键值名、以及与目标键值名对应的键值内容,可形成新的第K+1层数据文件。
应理解,对多个数据文件采用以上的合并排序方式后,依次找出其中最小的key记录,以对多个数据文件中的所有记录重新进行排序。并且,如图4所示,在找出其中最小的key记录后,判断这个key是否保存,如继续保存,则将其写入K+1层中以形成新的第K+1层数据文件,若不保存,则删除该key以及对应的value后,完成对第K+1层数据文件的更新。如此,从第0层数据文件开始,依次对第K层数据文件与第K+1层数据文件通过上述过程,循环进行k-v(数据列表中的键值名-与键值名对应的键值内容)数据处理,以依次更新第K+1层数据文件,完成第K层和第K+1层数据文件的合并,从而达到对外部存储空间中数据文件更新的目的。
其中,判断k-v记录是否抛弃(即删除)的标准为:对于某层数据文件的数据列表中的某一key,如果在小于K层中存在该key,则该层中的k-v值在合并过程中可以删除。即,对于层级低于K层级的数据文件,若存在同一key的记录,则对于key来说,有更新版本value存在,因此,允许覆盖。如果还需要继续保存,则将其合并至K+1层中,以更新K+1层的数据文件。如此,可以对k-v数据进行一一处理,更新一系列的第K+1层数据文件。从而完成了K层和K+1层文件记录的合并过程。
简而言之,对于K层中的某一key,若K-1层中存在该key,则删除K-1层中该key。以一个具体实施说明,若在键值数据库中插入一条数据{key="www.123.com",value="游戏"},过了几天,网站值改名为:社交,此时,插入的数据{key="www.123.com",value="社交"},可见,同样的key,但对应有不同的value,一般应该只有一个存储记录,但在数据库中很可能存在两条记录,即数据库中同时存储有两个记录,此时,如果查询key="www.123.com",对于用户而言,更希望找到最新的更新记录,即希望查询后可得到第二个记录返回,因此,查找的顺序应该依照数据更新的新鲜度进行确定,而对于数据文件来说,如果同时在K层和K+1层找到同一个key,K层的信息一定比K+1的要新。因此,可在合并的过程中,可将K+1层中的key以及key对应的value删除,以保留有K中新更新的key以及对应的value。
需要说明的是,在内存中的键值数据持久化至外部存储空间生成N层数据文件的具体过程可以为:
因为外部不断有k-v数据(该数据可以是客户端产生的网络数据后,传输给通信运营商系统的数据,也可以是内部应用系统的监控数据,又或者是各个营业厅前端系统的业务数据等待)写入到Coherence内存中,内存会不断地被消耗,当内存中的部分空间被写完时,内存中的键值数据开始持久化至外存文件中。
其中,当内存中的部分空间被写完时,内存中的键值数据开始持久化至外存文件中的第0层数据文件中,当第0层数据文件的文件大小超过预设阈值时,将第0层数据文件中溢出的数据转移至第1层数据文件中;此时,由于外部的k-v数据持续写入到Coherence内存中,因此,内存中的键值数据也持续持久化至外存文件中,其中,内存中的键值数据同样是先持久化至外存文件中的第0层数据文件中,此时,根据第0层数据文件的文件大小与预设阈值的比较关系,将第0层数据文件中溢出的数据转移至第1层数据文件中,然后再对第1层数据文件的文件大小与预设阈值进行比较,在第1层数据文件的文件大小超过预设阈值时,将第1层数据文件中溢出的数据转移至第2层数据文件中…,由此,形成N层数据文件。
不难发现,当内存中的键值数据持续持久化至外存文件中时,由于内存中的键值数据是先持久化至外存文件中的第0层数据文件中,然后再陆续存储至第1层数据文件、第2层数据文件中…,因此,层级低的数据文件中的数据会先被更新,从而不难理解,对于第K层级的数据文件来说,若第K-1层数据文件中存在与第K层级的数据文件中相同的目标key,则对于key来说,有更新版本value存在,即第K-1层数据文件中数据为更新版本的数据,此时,可将第K层级的数据文件中的目标key以及对应的value删除,并将第K-1层数据文件合并至第K层数据文件中,以更新第K层数据文件。如此,可以快速记录数据文件变更,并进行有序存储。
在上述任一项实施例中,数据文件更新方法通过对外部存储空间中数据文件进行快速分层,并通过K路合并排序算法或插入合并排序算法进行有效地合并排序,从而便于快速查找数据,并且,可以避免内存中的数据在出现主备宕机使用持久化数据进行恢复时容易导致数据丢失的问题发生。
本发明实施例还提供一种基于数据库的数据文件更新装置,如图5所示,其可包括获取单元502,用于在内存中的键值数据持久化至存储空间生成数据文件时,若参数K的值小于参数N,则获取第K层数据文件中至少一个数据列表的长度和第K层数据文件中的键值数据的数目;更新单元504,用于基于至少一个数据列表的长度和键值数据的数目,将第K层数据文件与第K+1层数据文件进行合并排序,以更新第K+1层数据文件。其中,K为整数,初始值为0,N为数据文件的层级数量,N>0,第0层数据文件为访问的最底层数据文件。
由于基于数据库的数据文件更新装置通过更新单元504在内存中的键值数据持久化至存储空间生成N层数据文件时,从第0层数据文件开始,分别依据第K层数据文件中至少一个数据列表的长度和该层数据文件中的键值数据的数目,将第K层数据文件合并至第K+1层数据文件中,以分别通过更新第K+1层数据文件,实现对外部存储空间内数据文件的更新。如此,通过将内存中的数据持久化至外部存储空间内的数据文件层中第K层数据文件合并至第K+1层数据文件实现数据文件更新的方式,不仅可以快速记录数据文件变更,并进行有序存储,而且还可以避免内存中的数据在出现主备宕机使用持久化数据进行恢复时容易导致数据丢失的问题发生。从而解决了现有技术中在出现主备宕机而使用持久化数据进行恢复时容易导致数据丢失的问题。
在上述实施例中,数据文件更新装置还包括第一确定单元506,用于基于至少一个数据列表的长度和第K层数据文件中的键值数据的数目,确定满足执行第K层数据文件中多个数据列表排序所需要的排序时间Θ(logn),其中,n为第K层数据文件中的键值数据的数目;第二确定单元508,用于基于至少一个数据列表的长度与排序时间Θ(logn)的关系,确定目标合并排序方式;更新单元504用于基于目标合并排序方式,将第K层数据列表合并至第K+1层数据列表中,并对合并后的第K+1层数据列表进行排序,以更新第K+1层数据文件。其中,第二确定单元508还可用于若至少一个数据列表的长度大于排序时间Θ(logn),则确定K路合并排序为目标合并排序方式;若至少一个数据列表的长度小于或等于排序时间Θ(logn),则确定插入合并排序为目标合并排序方式。
如此,在对第K层数据列表和第K+1层数据列表进行合并排序过程中,利用插入合并排序不仅可以减少递归次数,还可以减少内存分配次数,从而通过K-路合并排序与插入合并排序的结合,实现对外部存储空间中数据文件的更新,以快速记录数据文件变更,并进行有序存储,并且,可以避免内存中的数据在出现主备宕机使用持久化数据进行恢复时容易导致数据丢失的问题发生。
在上述进一步的实施例中,数据列表包括键值名和与键值名对应的键值内容,更新单元还用于:若第K层数据文件存在与第K+1层数据文件的目标键值名相同的键值名,则删除第K+1层数据文件中的目标键值名、以及与目标键值名对应的键值内容,以更新第K+1层数据文件。
应理解,对多个数据文件采用上述任一项实施例所述的合并排序方式,依次找出其中最小的key记录,以对多个数据文件中的所有记录重新进行排序。并且,在找出其中最小的key记录后,判断这个key是否保存,如继续保存,则将其写入K+1层中以形成新的第K+1层数据文件,若不保存,则删除该key以及对应的value后,完成对第K+1层数据文件的更新。如此,从第0层数据文件开始,依次对第K层数据文件与第K+1层数据文件通过上述过程,循环进行k-v(数据列表中的键值名-与键值名对应的键值内容)数据处理,以依次更新第K+1层数据文件,完成第K层和第K+1层数据文件的合并,从而达到对外部存储空间中数据文件更新的目的。
优选地,本发明实施例还提供一种终端设备,其可包括处理器,存储器,存储在存储器上并可在所述处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述图1和图3所示的方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述图1和图3所示的方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本发明的实施例可提供为方法、系统或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
Claims (6)
1.一种基于数据库的数据文件更新方法,所述方法包括:
在内存中的键值数据持久化至存储空间生成数据文件时,若参数K的值小于参数N,则循环执行以下方法:
获取第K层数据文件中至少一个数据列表的长度m和所述第K层数据文件中的键值数据的数目n;
基于所述至少一个数据列表的长度m和所述键值数据的数目n,将所述第K层数据文件与第K+1层数据文件进行合并排序,以更新所述第K+1层数据文件;
其中,K为整数,初始值为0,N为所述数据文件的层级数量,N > 0,第0层数据文件为访问的最底层数据文件;
基于所述至少一个数据列表的长度m和所述键值数据的数目n,将所述第K层数据文件与第K+1层数据文件进行合并排序,包括:
基于所述至少一个数据列表的长度m和所述第K层数据文件中的键值数据的数目n,确定满足执行第K层数据文件中多个数据列表排序所需要的排序时间;
基于所述至少一个数据列表的长度m与所述排序时间的关系,确定目标合并排序方式;
基于所述目标合并排序方式,将所述第K层数据列表合并至所述第K+1层数据列表中,并对合并后的第K+1层数据列表进行排序,以更新所述第K+1层数据文件;
确定目标合并排序方式,包括:
若所述至少一个数据列表的长度m大于所述排序时间数据量Θ(logn),则确定K路合并排序为所述目标合并排序方式;
若所述至少一个数据列表的长度m小于或等于所述排序时间数据量Θ(logn),则确定插入合并排序为所述目标合并排序方式。
2.如权利要求1所述的方法,其特征在于,所述数据列表包括键值名和与所述键值名对应的键值内容,所述方法还包括:
若所述第K层数据文件存在与所述第K+1层数据文件的目标键值名相同的键值名,则删除所述第K+1层数据文件中的目标键值名、以及与所述目标键值名对应的键值内容,以完成所述第K+1层数据文件的更新。
3.如权利要求1所述的方法,其特征在于,获取第K层数据文件中所述至少一个数据列表的长度m和所述第K层数据文件中的键值数据的数目n,包括:
基于数据库系统查询字典,获取所述第K层数据文件中所述至少一个数据列表的长度m;
基于getter查询方式,获取所述第K层数据文件中的键值数据的数目n。
4.一种基于数据库的数据文件更新装置,包括:
获取单元,用于在内存中的键值数据持久化至存储空间生成数据文件时,若参数K的值小于参数N,则获取第K层数据文件中至少一个数据列表的长度m和所述第K层数据文件中的键值数据的数目n;
更新单元,用于基于所述至少一个数据列表的长度m和所述键值数据的数目n,将所述第K层数据文件与第K+1层数据文件进行合并排序,以更新所述第K+1层数据文件;
其中,K为整数,初始值为0,N为所述数据文件的层级数量,N > 0,第0层数据文件为访问的最底层数据文件;
还包括:
第一确定单元,用于基于所述至少一个数据列表的长度m和所述第K层数据文件中的键值数据的数目n,确定满足执行第K层数据文件中多个数据列表排序所需要的排序时间;
第二确定单元,用于基于所述至少一个数据列表的长度m与所述排序时间的关系,确定目标合并排序方式;
所述更新单元用于基于所述目标合并排序方式,将所述第K层数据列表合并至所述第K+1层数据列表中,并对合并后的第K+1层数据列表进行排序,以更新所述第K+1层数据文件;
所述第二确定单元用于:
若所述至少一个数据列表的长度m大于所述排序时间数据量Θ(logn),则确定K路合并排序为所述目标合并排序方式;
若所述至少一个数据列表的长度m小于或等于所述排序时间数据量Θ(logn),则确定插入合并排序为所述目标合并排序方式。
5.如权利要求4所述的装置,其特征在于,所述数据列表包括键值名和与所述键值名对应的键值内容,所述更新单元还用于:
若所述第K层数据文件存在与所述第K+1层数据文件的目标键值名相同的键值名,则删除所述第K+1层数据文件中的目标键值名、以及与所述目标键值名对应的键值内容,以更新所述第K+1层数据文件。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至3中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910411968.6A CN111949439B (zh) | 2019-05-17 | 2019-05-17 | 基于数据库的数据文件更新方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910411968.6A CN111949439B (zh) | 2019-05-17 | 2019-05-17 | 基于数据库的数据文件更新方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111949439A CN111949439A (zh) | 2020-11-17 |
CN111949439B true CN111949439B (zh) | 2023-08-01 |
Family
ID=73336738
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910411968.6A Active CN111949439B (zh) | 2019-05-17 | 2019-05-17 | 基于数据库的数据文件更新方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111949439B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101256526A (zh) * | 2008-03-10 | 2008-09-03 | 清华大学 | 检查点容错技术中文件状态一致性维护的实现方法 |
CN103812877A (zh) * | 2014-03-12 | 2014-05-21 | 西安电子科技大学 | 基于Bigtable分布式存储系统的数据压缩方法 |
CN104133867A (zh) * | 2014-07-18 | 2014-11-05 | 中国科学院计算技术研究所 | 分布式顺序表片内二级索引方法及系统 |
CN107526550A (zh) * | 2017-09-06 | 2017-12-29 | 中国人民大学 | 一种基于日志结构合并树的两阶段合并方法 |
CN107665255A (zh) * | 2017-09-30 | 2018-02-06 | 杭州时趣信息技术有限公司 | 键值数据库数据变更的方法、装置、设备及存储介质 |
CN109416682A (zh) * | 2016-06-30 | 2019-03-01 | 华为技术有限公司 | 用于管理数据库的系统和方法 |
CN109426585A (zh) * | 2017-08-22 | 2019-03-05 | 阿里巴巴集团控股有限公司 | 一种备份、恢复数据库数据的方法和装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8930635B2 (en) * | 2009-12-14 | 2015-01-06 | International Business Machines Corporation | Page invalidation processing with setting of storage key to predefined value |
US9379887B2 (en) * | 2012-09-14 | 2016-06-28 | Qualcomm Incorporated | Efficient cryptographic key stream generation using optimized S-box configurations |
US9959207B2 (en) * | 2015-06-25 | 2018-05-01 | Vmware, Inc. | Log-structured B-tree for handling random writes |
-
2019
- 2019-05-17 CN CN201910411968.6A patent/CN111949439B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101256526A (zh) * | 2008-03-10 | 2008-09-03 | 清华大学 | 检查点容错技术中文件状态一致性维护的实现方法 |
CN103812877A (zh) * | 2014-03-12 | 2014-05-21 | 西安电子科技大学 | 基于Bigtable分布式存储系统的数据压缩方法 |
CN104133867A (zh) * | 2014-07-18 | 2014-11-05 | 中国科学院计算技术研究所 | 分布式顺序表片内二级索引方法及系统 |
CN109416682A (zh) * | 2016-06-30 | 2019-03-01 | 华为技术有限公司 | 用于管理数据库的系统和方法 |
CN109426585A (zh) * | 2017-08-22 | 2019-03-05 | 阿里巴巴集团控股有限公司 | 一种备份、恢复数据库数据的方法和装置 |
CN107526550A (zh) * | 2017-09-06 | 2017-12-29 | 中国人民大学 | 一种基于日志结构合并树的两阶段合并方法 |
CN107665255A (zh) * | 2017-09-30 | 2018-02-06 | 杭州时趣信息技术有限公司 | 键值数据库数据变更的方法、装置、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
Building an Efficient Put-Intensive Key-Value Store with Skip-Tree;Y. Yue 等;《IEEE Transactions on Parallel and Distributed Systems》;第28卷(第04期);961-973 * |
Facade模式在数据持久层中的应用;张俐 等;《计算机工程与科学》;第33卷(第10期);105-110 * |
Also Published As
Publication number | Publication date |
---|---|
CN111949439A (zh) | 2020-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11182356B2 (en) | Indexing for evolving large-scale datasets in multi-master hybrid transactional and analytical processing systems | |
US7418544B2 (en) | Method and system for log structured relational database objects | |
US9672235B2 (en) | Method and system for dynamically partitioning very large database indices on write-once tables | |
US7469241B2 (en) | Efficient data aggregation operations using hash tables | |
US7505960B2 (en) | Scalable retrieval of data entries using an array index or a secondary key | |
US9495398B2 (en) | Index for hybrid database | |
CN109416694A (zh) | 包括资源有效索引的键值存储系统 | |
US20100106713A1 (en) | Method for performing efficient similarity search | |
CN112287182A (zh) | 图数据存储、处理方法、装置及计算机存储介质 | |
CN107783985B (zh) | 一种分布式数据库查询方法、装置及管理系统 | |
CN106294772A (zh) | 分布式内存列式数据库的缓存管理方法 | |
CN110321325A (zh) | 文件索引节点查找方法、终端、服务器、系统及存储介质 | |
US11210281B2 (en) | Technique for log records management in database management system | |
CN110134335A (zh) | 一种基于键值对的rdf数据管理方法、装置及存储介质 | |
CN111752945A (zh) | 一种基于容器和层次模型的时序数据库数据交互方法和系统 | |
Si et al. | Query optimization for broadcast database | |
US7752181B2 (en) | System and method for performing a data uniqueness check in a sorted data set | |
CN109213760B (zh) | 非关系数据存储的高负载业务存储及检索方法 | |
CN111949439B (zh) | 基于数据库的数据文件更新方法和装置 | |
CN115469810A (zh) | 一种数据获取方法、装置、设备及存储介质 | |
Mullangi et al. | SCISSOR: scalable and efficient reachability query processing in time-evolving hierarchies | |
CN114416741A (zh) | 基于多级索引的kv数据写入读取方法、装置及存储介质 | |
Wu et al. | PABIRS: A data access middleware for distributed file systems | |
US20240160617A1 (en) | Garbage collection based on metadata indicating unmodified objects | |
Lim | A new flash TPR-tree for indexing moving objects with frequent updates |
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 |