CN109933590B - 一种数据更新方法、装置、服务器及存储介质 - Google Patents
一种数据更新方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN109933590B CN109933590B CN201910207811.1A CN201910207811A CN109933590B CN 109933590 B CN109933590 B CN 109933590B CN 201910207811 A CN201910207811 A CN 201910207811A CN 109933590 B CN109933590 B CN 109933590B
- Authority
- CN
- China
- Prior art keywords
- data
- updating
- updated
- update
- instruction
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据更新方法、装置、服务器及存储介质。该方法包括:接收至少一条待更新数据的更新指令;根据各所述更新指令,确定各所述待更新数据的更新顺序;按照所述更新顺序对各所述待更新数据进行更新。通过上述技术方案,按照一定的顺序对待更新数据进行更新,避免了直接根据更新指令更新时数据的重复加载和写入,提高了数据更新效率。
Description
技术领域
本发明实施例涉及大数据技术领域,尤其涉及一种数据更新方法、装置、服务器及存储介质。
背景技术
随着大数据技术的发展,出现了与传统的行存储不同的存储方式,列存储。列存储将数据表以列为单位进行存储,各列的数据都按照数据规模划分为一个或多个数据区块存储在磁盘中,同一列的数据为相同类型。例如,一个数据表有3列数据,这3列从左至右依次是int(整型)、varchar(字符型)和bool(布尔型),该表有100条(行)记录,则第一列数据都是int类型。列存储利于数据的压缩处理,并具有优越的查询性能,在大数据领域的应用广泛。
然而,在对列存储的数据进行更新时,由于同一列数据可能存储在不同的数据区块,同一条(行)记录的数据也存储在不同的数据区块,一次数据更新往往需要从多个数据区块修改数据,每次更新都要加载数据区块到内存进行更新,再将更新后的数据区块写入对应的存储空间(磁盘块),尤其在待更新的数据较多时,会有频繁的加载和写入操作,列存储数据的更新效率低下。
发明内容
本发明提供了一种数据更新方法、装置、服务器及存储介质,通过按照一定的顺序对待更新数据进行更新,避免了直接根据更新指令进行更新时数据的重复加载和写入,提高了数据更新效率。
第一方面,本发明实施例提供了一种数据更新方法,包括:
接收至少一条待更新数据的更新指令;
根据各所述更新指令,确定各所述待更新数据的更新顺序;
按照所述更新顺序对各所述待更新数据进行更新。
进一步的,所述更新指令包括:待更新数据的行标识及目标更新值。
进一步的,根据各所述更新指令,确定各所述待更新数据的更新顺序,包括:
将各所述更新指令存储至设定缓存区中;
基于各所述更新指令中的行标识,由小到大对所述设定缓存区中的各所述更新指令排序;
根据各所述更新指令在所述设定缓存区中的排列顺序确定相应待更新数据的更新顺序。
进一步的,根据各所述更新指令,确定各所述待更新数据的更新顺序,包括:
提取各所述更新指令中包括的相应待更新数据的行标识;
基于各所述行标识,将相应更新指令由小到大存储至设定缓存区中;
根据各所述更新指令在所述设定缓存区中的排列顺序确定相应待更新数据的更新顺序。
进一步的,所述至少一条待更新数据存储在列存储表的至少一个数据区块中;
相应的,按照所述更新顺序对各所述待更新数据进行更新,包括:
按照所述更新顺序选取当前待更新数据;
根据所述当前待更新数据的行标识,确定所述当前待更新数据在列存储表中的所属数据区块;
如果所属数据区块已加载至内存中,则将内存中的所属数据区块中的当前待更新数据更替为相应更新指令中的目标更新值;
如果所属数据区块未加载至内存中,则将已加载至内存中的数据区块重新写入列存储表对应的存储空间,并将所述所属数据区块加载至内存中,将所述所属数据区块中的待更新数据更替为相应更新指令中的目标更新值;
返回当前待更新数据的选取操作,直至所有待更新数据均已被选取。
第二方面,本发明实施例提供了一种数据更新装置,包括:
指令接收模块,用于接收至少一条待更新数据的更新指令;
顺序确定模块,用于根据各所述更新指令,确定各所述待更新数据的更新顺序;
更新模块,用于按照所述更新顺序对各所述待更新数据进行更新。
进一步的,所述更新指令包括:待更新数据的行标识及目标更新值。
进一步的,所述顺序确定模块,包括:
第一存储单元,用于将各所述更新指令存储至设定缓存区中;
排序单元,用于基于各所述更新指令中的行标识,由小到大对所述设定缓存区中的各所述更新指令排序;
第一顺序确定单元,用于根据各所述更新指令在所述设定缓存区中的排列顺序确定相应待更新数据的更新顺序。
第三方面,本发明实施例提供了一种服务器,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的数据更新方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的数据更新方法。
本发明实施例提供了一种数据更新方法、装置、服务器及存储介质,该方法包括:接收至少一条待更新数据的更新指令;根据各所述更新指令,确定各所述待更新数据的更新顺序;按照所述更新顺序对各所述待更新数据进行更新。通过上述技术方案,按照一定的顺序对相邻的待更新数据进行集中更新,避免了直接按照更新指令更新时需要重复加载和写入的问题,从而减少数据加载和写入的次数,提高了数据更新效率。
附图说明
图1为本发明实施例一提供的一种数据更新方法的流程图;
图2为本发明实施例一中的数据区块的示意图;
图3为本发明实施例二提供的一种数据更新方法的流程图;
图4为本发明实施例四提供的一种数据更新装置的结构示意图;
图5为本发明实施例五提供的一种服务器的硬件结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种数据更新方法的流程图,本实施例可适用于对列存储数据进行更新的情况。具体的,该数据更新方法可以由数据更新装置执行,该数据更新装置可以通过软件和/或硬件的方式实现,并集成在服务器中。进一步的,服务器包括但不限定于:工业集成服务器、系统后台服务器以及云端服务器。
图2为本发明实施例一中的数据区块的示意图。本实施例中的待更新数据是指列存储数据中需要更新的数据。列存储是将数据表以列为单位进行存储,相同列的数据按照数据规模存储在一个或多个数据区块中。如图2所示,每个方框代表一个数据区块,左边的两个方框中存储的是数据表C1列的数据,右边的两个方框中为数据表C2列的数据,最左侧的数字为数据的行标识。示例性的,每一列都有4096条数据,每2048条数据存储在一个数据区块内。当需要更新C1列的第100条数据时,会将C1列的第100条数据所在的数据区块(图2左边靠上的方框)加载到内存中进行更新,更新后再将该数据区块重新写入对应的存储空间(刷盘)。之后当再次对同一数据区块中的某个数据进行更新时,存在该数据区块被重复加载和写入的问题,影响了数据的更新效率。
参考图1,该方法具体包括如下步骤:
S110、接收至少一条待更新数据的更新指令。
具体的,待更新数据是指列存储数据中需要更新的数据。相同列的数据按照数据规模存储在一个或多个数据区块中。例如,一个数据区块可存储一列中的2048条数据,则当一列数据的数据规模小于2048时,可存储在一个数据区块中,数据规模大于2048时,则每2048条存储为一个数据区块。更新指令是指对待更新数据进行更新的指令,可以由用户输入,或者由服务器自动生成。例如,列存储数据为对环境的各项指标(温度、湿度、气压等)的监测数据,在传感器监测到某项或多项的指标发生改变时,服务器可根据检测到的变化生成更新指令,用以对列存储数据中相应的数据进行更新,需要更新的数据即为待更新数据。又如,列存储数据为所有员工的个人信息及业绩的统计数据,当个人信息或者业绩数据需要更新时,可由用户输入更新指令等。
示例性的,更新指令的形式如下:
UPDATE TABLE T SET C1=112,C2=1112 WHERE C0=100;其含义是,将数据表T中的C1列的第100条数据更新为112,C2列的第100条数据更新为1112,其中,C0为待更新数据的行标识,C1列的第100条数据、C2列的第100条数据为待更新数据。
又如:UPDATE TABLE T SET C1=3004 WHERE C0=3000;其含义是,将数据表T中的C1列的第3000条数据更新为3004,其中,C0为待更新数据的行标识,C1列的第3000条数据为待更新数据。
S120、根据各所述更新指令,确定各所述待更新数据的更新顺序。
具体的,根据接收到的各更新指令可知待更新数据在数据表中的具体位置,据此确定各待更新数据的更新顺序,具体为:将位于同一数据区块内的待更新数据的更新指令排列在一起或划分为一组,在更新时,根据排列在一起(或一组)的更新指令可对同一数据区块内的所有待更新数据集中进行更新,更新之后再将该数据区块写入对应的存储空间,使得该数据区块在更新过程中只被加载一次、写入一次即可;更新完这一数据区块内的所有待更新数据后,再根据排列在后面(或下一组)的更新指令继续更新下一数据区块内的待更新数据。
示例性的,接收到的更新指令为:
UPDATE TABLE T SET C1=112,C2=1112 WHERE C0=100;
UPDATE TABLE T SET C1=3004 WHERE C0=3000;
UPDATE TABLE T SET C1=226,C2=2226 WHERE C0=200;
其中,C1列的第1-2048条数据存储在数据区块A中,C2列的第1-2048条数据存储在数据区块B中,C1列的第2048-4096条数据存储在数据区块C中,则在执行第一条更新指令时,会将数据区块A加载至内存,以对C1列的第100条数据进行更新后再将数据区块A写入对应的存储空间,然后加载数据区块B,对C2列的第100条数据进行更新后写入;然后加载数据区块C,对C1列的第3000条数据进行更新后写入;之后又需要重新加载数据区块A以更新C1列的第200条数据、重新加载数据区块B以更新C2列的第200条数据。
而根据各更新指令,将位于同一数据区块内的待更新数据的更新指令排列在一起,即:
UPDATE TABLE T SET C1=112 WHERE C0=100;
UPDATE TABLE T SET C1=226 WHERE C0=200;
UPDATE TABLE T SET C2=1112 WHERE C0=100;
UPDATE TABLE T SET C2=2226 WHERE C0=200;
UPDATE TABLE T SET C1=3004 WHERE C0=3000;
根据上述排列结果可确定待更新数据的更新顺序为:先加载数据区块A至内存,对数据区块A中的第100条、第200条数据进行更新,更新后再将数据区块A写入;然后加载数据区块B至内存,对C2列中的第100条、第200条数据进行更新并写入;然后加载数据区块C对C1列中的第3000条数据更新,从而实现避免数据区块被重复加载和写入。
进一步的,所述更新指令包括:待更新数据的行标识及目标更新值。
具体的,行标识用于指示待更新数据在数据表中的位置,例如上述示例中“WHERE”后面C0所指示的即为行标识;目标更新指为待更新数据更新之后的值,例如上述实例中“SET”后C1或C2等于的值。在确定待更新数据的更新顺序时,需要根据各待更新数据的行标识,将属于同一数据区块中的行标识对应的更新指令排列在一起。
需要说明的是,当更新指令只有一条时,或者更新指令对应的待更新数据分别存储在不同的数据区块时,不会出现同一数据区块被重复加载和写入的现象,此时可直接将接收到的更新指令的默认顺序作为待更新数据的更新顺序。
S130、按照所述更新顺序对各所述待更新数据进行更新。
具体的,按照确定的更新顺序更新待更新数据,即可实现对同一数据区块内的待更新数据进行集中更新。
本发明实施例一提供的一种数据更新方法,包括:接收至少一条待更新数据的更新指令;根据各所述更新指令,确定各所述待更新数据的更新顺序;按照所述更新顺序对各所述待更新数据进行更新。通过上述技术方案,按照一定的顺序对待更新数据进行更新,实现了对同一数据区块的数据集中更新,避免了直接按照更新指令进行更新时数据的重复加载和写入,提高了数据更新效率。
实施例二
图3为本发明实施例二提供的一种数据更新方法的流程图,本实施例是在上述实施例的基础上进行优化,对确定各待更新数据的更新顺序以及按照更新顺序对各待更新数据进行更新的过程进行具体说明。需要说明的是,未在本实施例中详尽描述的技术细节可参见上述任意实施例。
具体的,参考图3,该方法具体包括如下步骤:
S201、接收至少一条待更新数据的更新指令。
进一步的,所述至少一条待更新数据存储在列存储表的至少一个数据区块中。
具体的,待更新数据按列存储在数据区块中,数据区块的大小预先设置,本实施例中示例性地设置数据区块的大小为2048条(行)。
S202、将各更新指令存储至设定缓存区中。
具体的,在接收到更新指令时,数据库事务执行更新操作,首先为更新指令按列分配缓存区,缓存区的个数与更新指令中包含的列的个数相同,缓存区用于暂时存储更新指令。若在这个事务中之前已经为该数据表的列分配了缓存区,则不必重复分配。更新指令以(rowid,newdata)的格式存储至各列的设定缓存区。
示例性的,对于数据表T的C1列、C2列进行如下的更新操作:
UPDATE TABLE T SET C1=112,C2=1112 WHERE C0=100;
UPDATE TABLE T SET C1=3004WHERE C0=3000;
UPDATE TABLE T SET C1=226,C2=2226 WHERE C0=200;
UPDATE TABLE T SET C1=3005,C2=30005 WHERE C0=3001;
UPDATE TABLE T SET C1=358,C2=3358 WHERE C0=300;
UPDATE TABLE T SET C1=3006,C2=30006 WHERE C0=3003;
UPDATE TABLE T SET C2=4423 WHERE C0=400;
则分别为C1列、C2列各分配一个设定缓存区,将针对C1列、C2列的更新指令分别存储至对应的设定缓存区。
表1为将针对C1列的更新指令存储至设定缓存区的结果。如表1所示,按照上述的更新指令需要对C1列更新第100、3000、200、3001、300、3003条数据,则将这些行标识存储至C1列对应的设定缓存区的rowid中,将更新指令中与行标识对应的目标更新值存储至设定缓存区的newdata中。
rowid | newdata |
100 | 112 |
3000 | 3004 |
200 | 226 |
3001 | 3005 |
300 | 358 |
3003 | 3006 |
表1将针对C1列的更新指令存储至设定缓存区的结果同理,表2为将针对C2列的更新指令存储至设定缓存区的结果。
rowid | newdata |
100 | 1112 |
200 | 2226 |
3001 | 30005 |
300 | 3358 |
3003 | 30006 |
400 | 4423 |
表2将针对C2列的更新指令存储至设定缓存区的结果S203、基于各更新指令中的行标识,由小到大对设定缓存区中的各更新指令排序。
具体的,对于设定缓存区中存储的内容,基于各更新指令中的行标识(rowid),由小到大,对更新指令进行排序。表3为针对C1列的更新指令的排序结果。如表3所示,根据排序结果中行标识的顺序,即可确定待更新数据的更新顺序,具体为:对C1列的第100、200、300、3000、3001、3003条数据进行更新。
rowid | newdata |
100 | 112 |
200 | 226 |
300 | 358 |
3000 | 3004 |
3001 | 3005 |
3003 | 3006 |
表3针对C1列的更新指令的排序结果。
同理,表4为针对C2列的更新指令的排序结果。如表4所示,根据排序结果中行标识的顺序,确定待更新数据的更新顺序,具体为:对C2列的第100、200、300、400、3001、3003条数据进行更新。
rowid | newdata |
100 | 1112 |
200 | 2226 |
300 | 3358 |
400 | 4423 |
3001 | 30005 |
3003 | 30006 |
表4针对C2列的更新指令的排序结果。
需要说明的是,本实施例仅为示例性地由小到大进行排序,在实际应用中也可按照由大到小或者其他规则进行排序,满足针对同一数据区块的更新指令排列在一起或处于同一分组中即可。
S204、根据各更新指令在所述设定缓存区中的排列顺序确定相应待更新数据的更新顺序。
具体的,在本实施例中,如表3和表4所示的排序结果,即为待更新数据的更新顺序。其中,C1列和C2列之间的更新顺序不作限定,但对同一列数据必须按照设定缓存区中的排序结果进行更新。
S205、按照更新顺序选取当前待更新数据。
具体的,以对C1列的数据进行更新为例,按照根据表3确定的更新顺序,依次选取各行标识对应的数据作为当前待更新数据,进行更新操作。
S206、根据当前待更新数据的行标识,确定当前待更新数据在列存储表中的所属数据区块。
具体的,列存储表中的数据都已按照列和预先设置的大小,分为多个数据区块。例如,C1列的第1-2048条数据存储在数据区块A中,第2049-4096条数据存储在数据区块C中。根据行标识可确定当前待更新数据的所属数据区块,例如,对C1列进行更新时,当前待更新数据为C1列的第100条数据,则根据行标识100可确定所属数据区块为数据区块A。
S207、所属数据区块是否已加载至内存中,若是,则执行步骤S210,若否,则执行步骤S208。
具体的,判断所属数据区块是否已加载至内存中,若是,则说明当前内存中正在对该所属数据区块进行更新,此时,跳转至步骤S210,直接将内存中的所属数据区块中的当前待更新数据更替为相应更新指令中的目标更新值;若否,则执行步骤S208。
S208、将已加载至内存中的数据区块重新写入列存储表对应的存储空间。
具体的,若所属数据区块未加载至内存中,则说明当前待更新数据并不属于内存中已加载的数据区块,而是属于下一个需要更新的数据区块,即,内存中已加载的数据区块中所有的待更新数据已完成更新,则将内存中已加载的数据区块重新写入列存储表中对应的存储空间(刷盘)。
S209、将当前待更新数据的所属数据区块加载至内存中。
具体的,在将内存中已加载并完成更新的数据区块写入对应的存储空间后,将当前待更新数据的所属数据区块加载至内存中,开始对新的数据区块的集中更新。例如,在更新C1列的第300条数据时,内存中加载的是数据区块A。如果当前待更新数据为C1列的第3000条数据,当前待更新数据的所属数据区块为数据区块C,则说明内存中的数据区块A已完成更新,此时将数据区块A写入对应的存储空间,并将数据区块C加载至内存中,开始对数据区块C中的待更新数据进行更新。
S210、将内存中的所属数据区块中的当前待更新数据更替为相应更新指令中的目标更新值。
具体的,当前的内存中的数据区块正是当前待更新数据的所属数据区块,即当前内存中正在对该所属数据区块进行更新,此时,将内存中的所属数据区块中的当前待更新数据更替为相应更新指令中的目标更新值。例如,在更新C1列的第200条数据时,已加载至内存中的正是数据区块A,此时,在内存中的数据区块A中,将第200条数据更替为226即可。
S211、是否所有待更新数据均已被选取,若是,转至步骤S212,若否,返回执行步骤S205,继续选取当前待更新数据。
S212、将已加载至内存中的数据区块重新写入列存储表对应的存储空间,数据更新完成。
具体的,若所有待更新数据均已被选取,则当前待更新数据为最后一条待更新数据,内存中已加载的数据区块为最后一个需要集中更新的数据区块,此时,将内存中的数据区块重新写入列存储表对应的存储空间,数据更新完成。
需要说明的是,上述只是本实施例对数据更新过程的示例性说明,判断当前待更新数据的所述数据区块是否已加载至内存的步骤,实质为判断当前待更新数据是属于内存中已加载的数据区块,还是属于下一需要更新的数据区块。可选的,在步骤S240中在设定缓存区中得到排列结果后,根据数据区块的预设大小(2048),可对更新指令进行分组,将行标识属于同一数据区块的更新指令分为一组,对一组的待更新数据进行集中更新即可,而不同分组之间的先后顺序不作限定。例如,C1列的第1-2048条数据存储在数据区块A,对应的更新指令为分组M1,C2列的第1-2048条数据存储在数据区块B,对应的更新指令为分组M2,C1列的第2048-4096条数据存储在数据区块C,对应的更新指令为分组M3,C2列的第2048-4096条数据存储在数据区块D,对应的更新指令为分组M4。则加载数据区块的顺序可以为A、B、C、D之间的任意排列,都可实现任意数据区块只加载和写入一次,提高更新效率。
本发明实施例二提供的一种数据更新方法,在上述实施例的基础上进行优化,通过在设定缓存区中对更新指令基于行标识由小到大进行排序,使同一数据区块的待更新数据的更新指令集中在一起,以此确定待更新数据的更新顺序,从而实现对同一数据区块的集中更新,避免同一数据区块被重复加载和写入,减少加载和刷盘次数,提高了数据更新的效率。
实施例三
本实施例是在上述实施例的基础上进行优化,对确定各待更新数据的更新顺序的过程进行具体说明。需要说明的是,未在本实施例中详尽描述的技术细节可参见上述任意实施例。
具体的,该方法具体包括如下步骤:
S310、接收至少一条待更新数据的更新指令。
S320、提取各所述更新指令中包括的相应待更新数据的行标识。
具体的,更新指令中包括待更新数据的行标识,提取行标识作为更新指令存储至设定缓存区的依据。
S330、基于各所述行标识,将相应更新指令由小到大存储至设定缓存区中。
具体的,在接收到更新指令之后,为更新指令按照列分配缓存区,缓存区的个数与更新指令中包含的列的个数相同,缓存区用于暂时存储更新指令。将更新指令以(rowid,newdata)的格式存储至各列的设定缓存区的过程中,基于行标识由小到大的顺序,依次将更新指令插入设定缓存区,以保证设定缓存区中存储的数据是有序的。
示例性的,对于数据表T的C1列、C2列进行如下的更新操作:
UPDATE TABLE T SET C1=112,C2=1112 WHERE C0=100;
UPDATE TABLE T SET C1=3004 WHERE C0=3000;
UPDATE TABLE T SET C1=226,C2=2226 WHERE C0=200;
UPDATE TABLE T SET C1=3005,C2=30005 WHERE C0=3001;
UPDATE TABLE T SET C1=358,C2=3358 WHERE C0=300;
UPDATE TABLE T SET C1=3006,C2=30006 WHERE C0=3003;
UPDATE TABLE T SET C2=4423WHERE C0=400;
则分别为C1列、C2列各分配一个缓存区。
表5为将针对C1列的更新指令插入至设定缓存区的结果。如表5所示,更新指令基于行标识由小到大插入至设定缓存区中,以使设定缓存区始终是按rowid有序的,则事务提交时无需再进行排序。
rowid | newdata |
100 | 112 |
200 | 226 |
300 | 358 |
3000 | 3004 |
3001 | 3005 |
3003 | 3006 |
表5将针对C1列的更新指令插入至设定缓存区的结果。
相应的,表6为将针对C2列的更新指令插入至设定缓存区的结果。
rowid | newdata |
100 | 1112 |
200 | 2226 |
300 | 3358 |
400 | 4423 |
3001 | 30005 |
3003 | 30006 |
表6将针对C2列的更新指令插入至设定缓存区的结果。
S340、根据各所述更新指令在所述设定缓存区中的排列顺序确定相应待更新数据的更新顺序。
S350、按照所述更新顺序对各所述待更新数据进行更新。
本发明实施例三提供的一种数据更新方法,在上述实施例的基础上进行优化,通过提取各更新指令中包括的行标识,基于各行标识,将更新指令由小到大存储至设定缓存区中,使同一数据区块的待更新数据的更新指令集中在一起,以此确定待更新数据的更新顺序,从而实现对同一数据区块的集中更新,避免同一数据区块被重复加载和写入,减少加载和刷盘次数,提高了数据更新的效率。
实施例四
图4为本发明实施例四提供的一种数据更新装置的结构示意图。本实施例提供的数据更新装置包括:
指令接收模块410,用于接收至少一条待更新数据的更新指令;
顺序确定模块420,用于根据各所述更新指令,确定各所述待更新数据的更新顺序;
更新模块430,用于按照所述更新顺序对各所述待更新数据进行更新。
本发明实施例四提供的一种数据更新装置,通过指令接收模块接收待更新数据的更新指令,通过顺序确定模块根据各所述更新指令,确定各所述待更新数据的更新顺序,通过更新按照所述更新顺序对各所述待更新数据进行更新,避免了直接按照更新指令进行更新时数据的重复加载和写入,提高了数据更新效率。
在上述实施例的基础上,所述更新指令包括:待更新数据的行标识及目标更新值。
进一步的,所述顺序确定模块420,包括:
第一存储单元,用于将各所述更新指令存储至设定缓存区中;
排序单元,用于基于各所述更新指令中的行标识,由小到大对所述设定缓存区中的各所述更新指令排序;
第一顺序确定单元,用于根据各所述更新指令在所述设定缓存区中的排列顺序确定相应待更新数据的更新顺序。
进一步的,所述顺序确定模块420,包括:
提取单元,用于提取各所述更新指令中包括的相应待更新数据的行标识;
第二存储单元,用于基于各所述行标识,将相应更新指令由小到大存储至设定缓存区中;
第二顺序确定单元,用于根据各所述更新指令在所述设定缓存区中的排列顺序确定相应待更新数据的更新顺序。
进一步的,所述至少一条待更新数据存储在列存储表的至少一个数据区块中,
相应的,所属更新模块430,包括:
选取单元,用于按照所述更新顺序选取当前待更新数据;
数据区块确定单元,用于根据所述当前待更新数据的行标识,确定所述当前待更新数据在列存储表中的所属数据区块;
第一更新单元,用于如果所属数据区块已加载至内存中,则将内存中的所属数据区块中的当前待更新数据更替为相应更新指令中的目标更新值;
第二更新单元,用于如果所属数据区块未加载至内存中,则将已加载至内存中的数据区块重新写入列存储表对应的存储空间,并将所述所属数据区块加载至内存中,将所述所属数据区块中的待更新数据更替为相应更新指令中的目标更新值;
返回单元,用于返回当前待更新数据的选取操作,直至所有待更新数据均已被选取。
本发明实施例四提供的数据更新装置可以用于执行上述任意实施例提供的数据更新方法,具备相应的功能和有益效果。
实施例五
图5为本发明实施例五提供的一种服务器的硬件结构示意图。如图5所示,本实施例提供的一种服务器,包括:处理器510和存储装置520。该服务器中的处理器可以是一个或多个,图5中以一个处理器510为例,所述服务器中的处理器510和存储装置520可以通过总线或其他方式连接,图5中以通过总线连接为例。
所述一个或多个程序被所述一个或多个处理器510执行,使得所述一个或多个处理器实现上述实施例中任意所述的数据更新方法。
该服务器中的存储装置520作为一种计算机可读存储介质,可用于存储一个或多个程序,所述程序可以是软件程序、计算机可执行程序以及模块,如本发明实施例中数据更新方法对应的程序指令/模块(例如,附图4所示的数据更新装置中的模块,包括:指令接收模块410、顺序确定模块420以及更新模块430)。处理器510通过运行存储在存储装置520中的软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的数据更新方法。
存储装置520主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据服务器的使用所创建的数据等(如上述实施例中的更新指令、行标识等)。此外,存储装置520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置520可进一步包括相对于处理器510远程设置的存储器,这些远程存储器可以通过网络连接至服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
并且,当上述服务器中所包括一个或者多个程序被所述一个或者多个处理器510执行时,程序进行如下操作:接收至少一条待更新数据的更新指令;根据各所述更新指令,确定各所述待更新数据的更新顺序;按照所述更新顺序对各所述待更新数据进行更新。
本实施例提出的服务器与上述实施例提出的数据更新方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述任意实施例,并且本实施例具备与执行数据更新方法相同的有益效果。
在上述实施例的基础上,本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被数据更新装置执行时实现本发明上述任意实施例中的数据更新方法,该方法包括:接收至少一条待更新数据的更新指令;根据各所述更新指令,确定各所述待更新数据的更新顺序;按照所述更新顺序对各所述待更新数据进行更新。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的数据更新方法操作,还可以执行本发明任意实施例所提供的数据更新方法中的相关操作,且具备相应的功能和有益效果。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的数据更新方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (7)
1.一种数据更新方法,其特征在于,包括:
接收至少一条待更新数据的更新指令,所述更新指令包括:待更新数据的行标识及目标更新值;
根据各所述更新指令中的行标识,确定各所述待更新数据的更新顺序;
按照所述更新顺序对各所述待更新数据进行更新;
所述至少一条待更新数据存储在列存储表的至少一个数据区块中;
相应的,按照所述更新顺序对各所述待更新数据进行更新,包括:
按照所述更新顺序选取当前待更新数据;
根据所述当前待更新数据的行标识,确定所述当前待更新数据在列存储表中的所属数据区块;
如果所属数据区块已加载至内存中,则将内存中的所属数据区块中的当前待更新数据更替为相应更新指令中的目标更新值;
如果所属数据区块未加载至内存中,则将已加载至内存中的数据区块重新写入列存储表对应的存储空间,并将所述所属数据区块加载至内存中,将所述所属数据区块中的待更新数据更替为相应更新指令中的目标更新值;
返回当前待更新数据的选取操作,直至所有待更新数据均已被选取。
2.根据权利要求1所述的方法,其特征在于,根据各所述更新指令中的行标识,确定各所述待更新数据的更新顺序,包括:
将各所述更新指令存储至设定缓存区中;
基于各所述更新指令中的行标识,由小到大对所述设定缓存区中的各所述更新指令排序;
根据各所述更新指令在所述设定缓存区中的排列顺序确定相应待更新数据的更新顺序。
3.根据权利要求1所述的方法,其特征在于,根据各所述更新指令中的行标识,确定各所述待更新数据的更新顺序,包括:
提取各所述更新指令中包括的相应待更新数据的行标识;
基于各所述行标识,将相应更新指令由小到大存储至设定缓存区中;
根据各所述更新指令在所述设定缓存区中的排列顺序确定相应待更新数据的更新顺序。
4.一种数据更新装置,其特征在于,包括:
指令接收模块,用于接收至少一条待更新数据的更新指令,所述更新指令包括:待更新数据的行标识及目标更新值;
顺序确定模块,用于根据各所述更新指令中的行标识,确定各所述待更新数据的更新顺序;
更新模块,用于按照所述更新顺序对各所述待更新数据进行更新;
所述至少一条待更新数据存储在列存储表的至少一个数据区块中,
相应的,所述 更新模块,包括:
选取单元,用于按照所述更新顺序选取当前待更新数据;
数据区块确定单元,用于根据所述当前待更新数据的行标识,确定所述当前待更新数据在列存储表中的所属数据区块;
第一更新单元,用于如果所属数据区块已加载至内存中,则将内存中的所属数据区块中的当前待更新数据更替为相应更新指令中的目标更新值;
第二更新单元,用于如果所属数据区块未加载至内存中,则将已加载至内存中的数据区块重新写入列存储表对应的存储空间,并将所述所属数据区块加载至内存中,将所述所属数据区块中的待更新数据更替为相应更新指令中的目标更新值;
返回单元,用于返回当前待更新数据的选取操作,直至所有待更新数据均已被选取。
5.根据权利要求4所述的装置,其特征在于,所述顺序确定模块,包括:
第一存储单元,用于将各所述更新指令存储至设定缓存区中;
排序单元,用于基于各所述更新指令中的行标识,由小到大对所述设定缓存区中的各所述更新指令排序;
第一顺序确定单元,用于根据各所述更新指令在所述设定缓存区中的排列顺序确定相应待更新数据的更新顺序。
6.一种服务器,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-3中任一所述的数据更新方法。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-3中任一所述的数据更新方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910207811.1A CN109933590B (zh) | 2019-03-19 | 2019-03-19 | 一种数据更新方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910207811.1A CN109933590B (zh) | 2019-03-19 | 2019-03-19 | 一种数据更新方法、装置、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109933590A CN109933590A (zh) | 2019-06-25 |
CN109933590B true CN109933590B (zh) | 2021-04-20 |
Family
ID=66987500
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910207811.1A Active CN109933590B (zh) | 2019-03-19 | 2019-03-19 | 一种数据更新方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109933590B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012899A (zh) * | 2009-09-07 | 2011-04-13 | 中国移动通信集团公司 | 一种数据更新的方法、系统及设备 |
CN104750738A (zh) * | 2013-12-30 | 2015-07-01 | 中国移动通信集团公司 | 一种更新数据信息的方法、数据节点、管理节点及系统 |
CN107562851A (zh) * | 2017-08-28 | 2018-01-09 | 北京奇艺世纪科技有限公司 | 一种数据的更新方法、装置及电子设备 |
CN108023908A (zh) * | 2016-10-31 | 2018-05-11 | 腾讯科技(深圳)有限公司 | 数据更新方法、装置及系统 |
CN108959587A (zh) * | 2018-07-10 | 2018-12-07 | 上海达梦数据库有限公司 | 基于列存储的数据更新方法、装置、服务器及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8572063B2 (en) * | 2009-06-30 | 2013-10-29 | Hasso-Plattner-Institut fur Softwaresytemtechnik GmbH | Computer-implemented method for operating a database and corresponding computer-system |
US10067909B2 (en) * | 2014-06-25 | 2018-09-04 | Sap Se | Sparse linear algebra in column-oriented in-memory database |
US10963440B2 (en) * | 2015-08-10 | 2021-03-30 | Singlestore, Inc. | Fast incremental column store data loading |
US10496629B2 (en) * | 2017-09-13 | 2019-12-03 | Coursera, Inc. | Dynamic state tracking with query serving in an online content platform |
-
2019
- 2019-03-19 CN CN201910207811.1A patent/CN109933590B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012899A (zh) * | 2009-09-07 | 2011-04-13 | 中国移动通信集团公司 | 一种数据更新的方法、系统及设备 |
CN104750738A (zh) * | 2013-12-30 | 2015-07-01 | 中国移动通信集团公司 | 一种更新数据信息的方法、数据节点、管理节点及系统 |
CN108023908A (zh) * | 2016-10-31 | 2018-05-11 | 腾讯科技(深圳)有限公司 | 数据更新方法、装置及系统 |
CN107562851A (zh) * | 2017-08-28 | 2018-01-09 | 北京奇艺世纪科技有限公司 | 一种数据的更新方法、装置及电子设备 |
CN108959587A (zh) * | 2018-07-10 | 2018-12-07 | 上海达梦数据库有限公司 | 基于列存储的数据更新方法、装置、服务器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109933590A (zh) | 2019-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103488709B (zh) | 一种索引建立方法及系统、检索方法及系统 | |
EP2924594B1 (en) | Data encoding and corresponding data structure in a column-store database | |
EP3309685B1 (en) | Method and apparatus for writing data to cache | |
US20160188227A1 (en) | Method and apparatus for writing data into solid state disk | |
CN108009008A (zh) | 数据处理方法和系统、电子设备 | |
CN103164490B (zh) | 一种不固定长度数据的高效存储实现方法和装置 | |
US20120166402A1 (en) | Techniques for extending horizontal partitioning to column partitioning | |
CN103106158A (zh) | 包括键-值存储的存储器系统 | |
CN103186622B (zh) | 一种全文检索系统中索引信息的更新方法以及装置 | |
CN104238962A (zh) | 向缓存中写入数据的方法及装置 | |
CN113342750A (zh) | 一种文件的数据比对方法、装置、设备及存储介质 | |
CN111708895B (zh) | 一种知识图谱系统的构建方法及装置 | |
US20070239663A1 (en) | Parallel processing of count distinct values | |
CN104933051A (zh) | 文件存储空间回收方法和装置 | |
CN112085644A (zh) | 多列数据排序方法、装置、可读存储介质和电子设备 | |
CN110597912B (zh) | 一种区块存储方法及装置 | |
CN102054001A (zh) | 一种数据挖掘系统中数据预处理的方法、系统及装置 | |
EP3267329A1 (en) | Data processing method having structure of cache index specified to transaction in mobile environment dbms | |
CN112596949B (zh) | 一种高效率的ssd删除数据恢复方法及系统 | |
CN101635001A (zh) | 从数据库提取信息的方法和设备 | |
CN103049561A (zh) | 一种数据压缩方法、存储引擎及存储系统 | |
WO2024078122A1 (zh) | 数据库表扫描的方法、装置以及设备 | |
CN111414422B (zh) | 一种数据分布方法、装置、设备和存储介质 | |
CN109933590B (zh) | 一种数据更新方法、装置、服务器及存储介质 | |
US9507794B2 (en) | Method and apparatus for distributed processing of file |
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 |