CN115495462A - 批量数据更新方法、装置、电子设备和可读存储介质 - Google Patents
批量数据更新方法、装置、电子设备和可读存储介质 Download PDFInfo
- Publication number
- CN115495462A CN115495462A CN202211150677.4A CN202211150677A CN115495462A CN 115495462 A CN115495462 A CN 115495462A CN 202211150677 A CN202211150677 A CN 202211150677A CN 115495462 A CN115495462 A CN 115495462A
- Authority
- CN
- China
- Prior art keywords
- data
- updated
- unique key
- piece
- updating
- 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
Images
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/23—Updating
-
- 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/2282—Tablespace storage structures; Management thereof
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (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
本申请公开了批量数据更新方法、装置、电子设备和可读存储介质,该方法包括:从一批待更新数据中选取一条数据,其中,所述待更新数据中的每条数据均包括唯一键和数据内容;根据所述一条数据的唯一键查找存储所述唯一键的第一数据块,并根据所述唯一键将所述一条数据中的数据内容更新到对应的数据块中;从所述第一数据块中获取除所述一条数据的唯一键之外的其他唯一键,并从所述待更新数据中查找包括所述其他唯一键的数据;将包括所述其他唯一键的数据的数据内容更新到对应的数据块中。通过本申请解决了现有技术中在数据库进行批量数据更新时所存在的更新慢影响数据库性能的问题,从而提高了数据库的更新效率,在一定程度上提高了数据库的性能。
Description
技术领域
本申请涉及到数据处理领域,具体而言,涉及批量数据更新方法、装置、电子设备和可读存储介质。
背景技术
数据库一般用来保存大量的数据,在数据库使用的过程中会出现批量数据更新的过程,所谓批量更新是将一批数据一次性的更新到数据库中。虽然是批量更新,但是在执行的时候,仍然需要根据批量数据中的每条数据在数据库中进行查询,在数据库中得到查询结果之后,执行相应的操作将该条数据更新到数据库中。
由于数据库中已经保存了大量的数据,因此,每条数据在数据库中进行查询均需要消耗时间,在进行批量数据更新的时候,这些查询时间累积起来会变得很大,从而使得批量更新比较慢,另外每条数据均在数据库中进行查询,也会影响到数据库的性能。
发明内容
本申请实施例提供了批量数据更新方法、装置、电子设备和可读存储介质,以至少解决现有技术中在数据库进行批量数据更新时所存在的更新慢影响数据库性能的问题。
根据本申请的一个方面,提供了一种批量数据更新方法,包括:从一批待更新数据中选取一条数据,其中,所述待更新数据中的每条数据均包括唯一键和数据内容,该唯一键用于标识该条数据;根据所述一条数据的唯一键查找存储所述唯一键的第一数据块,并根据所述唯一键将所述一条数据中的数据内容更新到对应的数据块中;从所述第一数据块中获取除所述一条数据的唯一键之外的其他唯一键,并从所述待更新数据中查找包括所述其他唯一键的数据;将包括所述其他唯一键的数据的数据内容更新到对应的数据块中。
进一步地,获取所述其他唯一键,从所述待更新数据中查找并将包括所述其他唯一键的数据的数据内容更新到对应的数据库中包括:在所述第一数据块中从所述一条数据的唯一键所在位置开始依次获取下一条数据的唯一键,在所述待更新数据中查找到包括此次获取到的唯一键的数据的情况下,将包括此次获取到的唯一键的数据的数据内容更新到对应的数据块中,直至到达所述第一数据块的末尾或者在所述待更新数据中未查找到此次获取到的唯一键。
进一步地,将包括所述其他唯一键的数据的数据内容更新到对应的数据块中之后,将所述待更新数据中的剩余数据作为新的一批待更新数据,并对所述新的一批待更新数据执行上述的方法,直到所述待更新数据中没有剩余数据,其中,所述剩余数据为在已有数据块中能够查找到唯一键并且数据内容未更新到对应数据块中的数据。
进一步地,还包括:获取所述待更新数据中未在已有数据块中查找到唯一键的至少一条数据;将所述至少一条数据插入列表中;在所述列表中的数据条数超过阈值或者当前时间满足时间要求的情况下,将所述列表中的数据插入到对应的数据块中。
进一步地,在将包括所述其他唯一键的数据的数据内容更新到对应的数据块中之后,或者,在所述待更新数据中的所有数据的数据内容均更新到对应的数据块中之后,还包括:将被更新数据内容的数据块从内存更新到磁盘中。
进一步地,从所述待更新数据中查找包括所述其他唯一键的数据包括:从二叉树中查找包括所述其他唯一键的数据,其中,所述二叉树是根据所述待更新数据的所有唯一键预先创建的。
进一步地,所述待更新数据包括:对针对预定目标对多媒体文件进行分析后得到的结果,其中,如果多个数据的唯一键相同,则所述多个数据为:包括针对相同目标并对相同多媒体文件采用不同分析设备、算法和/或神经网络模型进行分析后得到的结果的数据。
进一步地,还包括:在所述待更新数据包括多个字段的数据内容的情况下,获取配置信息,其中,所述配置信息中携带有字段名称;在所述多个字段中查找与所述字段名称匹配的字段;将与所述字段名称匹配的字段作为数据的唯一键。
根据本申请的另一个方面,还提供了一种批量数据更新装置,包括:选取模块,用于从一批待更新数据中选取一条数据,其中,所述待更新数据中的每条数据均包括唯一键和数据内容,该唯一键用于标识该条数据;第一查找模块,用于根据所述一条数据的唯一键查找存储所述唯一键的第一数据块,并根据所述唯一键将所述一条数据中的数据内容更新到对应的数据块中;第二查找模块,用于从所述第一数据块中获取除所述一条数据的唯一键之外的其他唯一键,并从所述待更新数据中查找包括所述其他唯一键的数据;更新模块,用于将包括所述其他唯一键的数据的数据内容更新到对应的数据块中。
进一步地,所述第二查找模块用于在所述第一数据块中从所述一条数据的唯一键所在位置开始依次获取下一条数据的唯一键,在所述待更新数据中查找到包括此次获取到的唯一键的数据的情况下,所述更新模块将包括此次获取到的唯一键的数据的数据内容更新到对应的数据块中,直至到达所述第一数据块的末尾或者在所述待更新数据中未查找到此次获取到的唯一键。
进一步地,将包括所述其他唯一键的数据的数据内容更新到对应的数据块中之后,将所述待更新数据中的剩余数据作为新的一批待更新数据,并对所述新的一批待更新数据经过所述选取模型、所述第一查找模块、所述第二查找模块和所述更新模块的处理,直到所述待更新数据中没有剩余数据,其中,所述剩余数据为在已有数据块中能够查找到唯一键并且数据内容未更新到对应数据块中的数据。
进一步地,所述更新模块还用于,用于获取所述待更新数据中未在已有数据块中查找到唯一键的至少一条数据;将所述至少一条数据插入列表中;在所述列表中的数据条数超过阈值或者当前时间满足时间要求的情况下,将所述列表中的数据插入到对应的数据块中。
进一步地,还包括:持久化模块,用于在将包括所述其他唯一键的数据的数据内容更新到对应的数据块中之后,或者,在所述待更新数据中的所有数据的数据内容均更新到对应的数据块中之后将被更新数据内容的数据块从内存更新到磁盘中。
进一步地,所述第二查找模块用于:从二叉树中查找包括所述其他唯一键的数据,其中,所述二叉树是根据所述待更新数据的所有唯一键预先创建的。
进一步地,所述待更新数据包括:对针对预定目标对多媒体文件进行分析后得到的结果,其中,如果多个数据的唯一键相同,则所述多个数据为:包括针对相同目标并对相同多媒体文件采用不同分析设备、算法和/或神经网络模型进行分析后得到的结果的数据。
进一步地,还包括:配置模块,用于在所述待更新数据包括多个字段的数据内容的情况下,获取配置信息,其中,所述配置信息中携带有字段名称;在所述多个字段中查找与所述字段名称匹配的字段;将与所述字段名称匹配的字段作为数据的唯一键。
根据本申请的另一个方面,还提供了一种电子设备,包括存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现上述的方法步骤。
根据本申请的另一个方面,还提供了一种可读存储介质,其上存储有计算机指令,其中,该计算机指令被处理器执行时实现上述的方法步骤。
在本申请实施例中,采用了从一批待更新数据中选取一条数据,其中,所述待更新数据中的每条数据均包括唯一键和数据内容,该唯一键用于标识该条数据;根据所述一条数据的唯一键查找存储所述唯一键的第一数据块,并根据所述唯一键将所述一条数据中的数据内容更新到对应的数据块中;从所述第一数据块中获取除所述一条数据的唯一键之外的其他唯一键,并从所述待更新数据中查找包括所述其他唯一键的数据;将包括所述其他唯一键的数据的数据内容更新到对应的数据块中。通过本申请解决了现有技术中在数据库进行批量数据更新时所存在的更新慢影响数据库性能的问题,从而提高了数据库的更新效率,在一定程度上提高了数据库的性能。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的批量数据更新方法的流程图;
图2是根据本实施的数据批量更新并持久化的流程示意图;
图3是根据本实施例的读取唯一键配置的流程示意图;
图4是根据本申请实施例的后台异步更新的处理流程示意图;以及,
图5是根据本申请实施例的数据插入的流程图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在批量数据进行进行更新的时候,批量数据中存在两种情况,一种是该条数据在数据库中已经存在了,此时就将新的数据内容替换到数据中原有的数据内容;另一种情况是该条数据在数据库中没有,此时就将该条数据作为新数据插入到数据库中。数据的插入(insert)和更新(update)是数据库提供的两种最基本的操作,对于批量更新的数据,需要得知哪些数据在数据库中是存在的,哪些数据在数据库中不存在,这样才能确定是采用update操作还是insert操作,因此,虽然是批量数据更新,但是仍然需要对每条数据进行查询,需要说明的是,对于数据库来说,进行insert和update操作所消耗的时间基本上是不变的,批量更新的时间大部分都消耗在数据库中逐条数据查找的过程中。
为了解决这个问题,可以采用异步更新的方式,异步更新的主要思路是在数据库中对需要更新的数据进行标记,在查询到该数据的时候,根据该数据的标记再进行更新。这种处理方式的本质是将批量数据更新分不同的时间进行,在查询到该数据时再进行更新,没有查询到该数据时不更新。在这种处理方式中每次检索到标记需要更新的数据时,首先要对该数据进行更新之后才能返回检索结果,因此,异步更新会影响检索性能,并且异步更新其实在本质上也没有解决批量更新过程中对于每条数据均进行查询所导致的耗时以及影响数据库性能的问题。
考虑到在数据库进行批量数据更新的时候,需要每条数据均进行查询,查询一般是在整个数据库的范围内进行的,而数据库中一般已经保存有大量的数据,这样在进行检索的时候需要对数据库中的已有数据进行遍历,从而查询会消耗一定的时间,即使单条数据的查询时间是可以接受的,但是对于批量数据而言,多条数据的查询就会消耗大量的时间,并且数据库一直在执行查询操作也会影响数据库对其他请求的响应,从而使得数据库的性能降低。在以下实施方式中,从缩短查询时间的角度来解决数据库批量更新的问题,在查询时间缩短之后,批量数据的更新时间也会随之缩短,从而解决现有技术中所存在的问题。
在以下实施方式中提供了一种批量数据更新方法,图1是根据本申请实施例的批量数据更新方法的流程图,如图1所示,下面对图1中包括的步骤进行说明。
步骤S102,从一批待更新数据中选取一条数据,其中,所述待更新数据中的每条数据均包括唯一键和数据内容,该唯一键用于标识该条数据。
数据库中包括的数据一般包括多个字段的内容,以保存用户数据的数据库为例,该数据库中保存的一个用户的数据可能包括:用户编号、用户姓名、用户年龄等多个字段,在这些字段中用户编号用于标识该条用户数据,因此该用户编号为该条数据的唯一键,而该条数据的其他字段的内容如用户姓名、用户年龄等为该条数据的数据内容。该唯一键是检索数据的依据。
在该步骤中,可以随机从该批待更新数据中选择一条数据,或者也可以选择该批待更新的数据中的第一条数据或者最后一条数据等固定位置的数据。无论如何选择这一条数据,均不影响以下步骤的执行。在以下实施方式中均使用的是该批待更新数据中的第一条数据。
步骤S104,根据所述一条数据的唯一键查找存储所述唯一键的第一数据块,并根据所述唯一键将所述一条数据中的数据内容更新到对应的数据块中。
数据库中保存的数据会以数据块的方式来进行保存,数据库数据一般被保存在多个数据块中,每个数据块中均保存相应的数据内容。在该步骤中,从数据块中检索选择出的一条数据的唯一键,为了描述方便,将存储有该条数据唯一键的数据块称为第一数据块,在检索到保存该条数据的数据块时,将该条数据的数据内容更新到数据块中。
步骤S106,从所述第一数据块中获取除所述一条数据的唯一键之外的其他唯一键,并从所述待更新数据中查找包括所述其他唯一键的数据。
需要说明的是,一个数据块中不仅仅保存一条数据或者一个唯一键,在一个数据块中一般保存有多个唯一键,因此,在该步骤中从第一数据块中直接获取其他的唯一键,然后将其他唯一键在待更新数据中进行检索。在现有技术中均是根据唯一键在数据库中进行检索,在该步骤中从数据块中获取唯一键,然后在待更新数据中进行检索,在以下实施方式中将这种检索方式称为反向检索(或简称为反查)。考虑到数据库中保存的数据很多,在数据库中进行检索的过程会比较耗时,但是在待更新的批量数据中进行查询时其查询速度比较快,而且也不影响数据库进行其他操作,因此,这种反向检索节约了检索时间。
步骤S108,将包括所述其他唯一键的数据的数据内容更新到对应的数据块中。
在待更新的批量数据中进行反查之后,如果在待更新的数据中查找到与第一数据块中的唯一键对应的数据,则将待更新数据中的该条数据的数据内容更新到对应的数据块中。一条数据的数据内容可能保存在一个或多个数据块中,在更新的时候需要将该条数据的数据内容更新到对应的数据块中。
在上述步骤中,不再是将待更新数据中的每条数据都在数据库中进行查询,而是采用了在查找到一条数据的唯一键所保存的数据块之后,将该第一数据块中其他唯一键在待更新数据中进行反查,相比于在数据库中进行查询数据,这种反查一方面数据基数比较小,提高数据的查询速度;另一个方面不影响数据库进行其他操作,不影响数据库的性能。因此,通过上述步骤,解决了现有技术中在数据库进行批量数据更新时所存在的更新慢影响数据库性能的问题,从而提高了数据库的更新效率,在一定程度上提高了数据库的性能。
为了进一步提高在待更新数据中反查数据的速度,可以根据所述待更新数据的所有唯一键预先创建二叉树,然后从二叉树中查找包括所述其他唯一键的数据。通过二叉树可以提高检索速度。二叉树是一种树状结构,最多有2个孩子的树称为二叉树。由于二叉树中的每个元素只能有2个孩子,通常将它们命名为左孩子和右孩子。二叉树的种类有很多,例如,二叉查找树(Binary Search Tree,简称BST),它是一种基于节点的二叉树数据结构,具有以下特性:节点的左子树仅包含值小于节点值的节点,节点的右子树仅包含值大于节点值的节点,左右子树也必须是二叉查找树。又例如,平衡二叉树,平衡二叉树是一种自平衡二叉查找树(BST),并且其中所有节点的左右子树的高度差不能超过1。又例如,红黑树,红黑树是一种自平衡二叉搜索树,每个节点都有一个额外的位置用来存储节点的颜色(红色或黑色)。这些颜色用于确保树在插入和删除过程中保持平衡。在红黑树中,每个节点要么是红色,要么是黑色;根节点永远是黑色的;所有的叶子节点都是空节点(即null),并且是黑色的;没有两个相邻的红色节点(红色节点不能有红色父节点或红色子节点);从任一节点到其子树中每个叶子节点的路径都包含相同数量的黑色节点。虽然红黑树的平衡性并不完美,但足以减少搜索时间。使用这些类型的二叉树均能够提高检索时间,作为一个比较优的实施方式,推荐使用红黑树。
上述步骤还涉及到查找第一数据块中存储有的其他的唯一键,从该第一数据块中获取其他唯一键的方式有很多种,例如,可以通过遍历的方式找到该第一数据块中的所有的其他唯一键,然后在待更新数据中进行反查,将反查到的数据的数据内容更新到对应的数据块中即可。为了提高在第一数据块中的查找其他唯一键的速度,可以从选择出的一条数据的唯一键开始查找下一条数据的唯一键,这种获取唯一键的方式是按照数据在第一存储块中的存储顺序来获取的,获取其他唯一键的效率较高。即在该可选实施方式中,获取所述其他唯一键,从所述待更新数据中查找并将包括所述其他唯一键的数据的数据内容更新到对应的数据库中可以包括如下步骤:在所述第一数据块中从所述一条数据的唯一键所在位置开始依次获取下一条数据的唯一键,在所述待更新数据中查找到包括此次获取到的唯一键的数据的情况下,将包括此次获取到的唯一键的数据的数据内容更新到对应的数据块中,直至到达所述第一数据块的末尾或者在所述待更新数据中未查找到此次获取到的唯一键。在该可选实施方式中,可以按照数据在第一存储块中的存储顺序依次获取下一条数据,直至到达第一数据块的末尾或者未在待更新数据中查找到此次获取的唯一键,这样可以在待更新数据中快速查找第一存储块中的其他唯一键对应的数据并进行更新,提高了数据的更新速度。
在另一个可选实施方式中,将待更新数据中包括所述其他唯一键的数据的数据内容更新到对应的数据块中之后,如果待更新数据中还有剩余数据,则将所述待更新数据中的剩余数据作为新的一批待更新数据,并对所述新的一批待更新数据执行步骤S102到步骤S108,直到所述待更新数据中没有剩余数据,其中,所述剩余数据为在已有数据块中能够查找到唯一键并且数据内容未更新到对应数据块中的数据。需要说明的是,待更新数据中数据中存在两种数据:一种数据是在数据库中已经有的数据,对于该条数据能够在数据库的数据块中查找到唯一键;另一种数据是在数据库中没有的数据,对于该条数据是需要插入到数据库的数据块中的数据。在该可选实施方式中,将待更新数据中所有在数据库中已有的数据查找到之后进行更新操作。对于待更新数据中在数据库中没有的数据,可以在数据库中执行插入操作,进行插入操作的时候,可以逐条进行插入。在一个可选实施方式中,为了提高插入效率,可以进行多条数据的同时插入,这种同时插入可以提高数据的插入效率。即在该可选实施方式中还可以包括如下步骤:获取所述待更新数据中未在已有数据块中查找到唯一键的至少一条数据;将所述至少一条数据插入列表中;在所述列表中的数据条数超过阈值或者当前时间满足时间要求的情况下,将所述列表中的数据插入到对应的数据块中。例如,将所有的待插入数据均保存在列表中,然后每间隔预定10秒或者其他时长执行一次插入操作;又例如,可以在列表中的数据的数量超过100条或者其他数量的情况下,执行一次插入操作,该插入操作可以将列表中的数据均插入到数据库的数据块中,提高了数据插入的效率。
通过上述实施方式将待更新的数据通过更新(update)或插入(insert)的方式将数据均更新到了数据块中,这种更新均涉及到了从待更新数据到数据块的拷贝,通常待更行数据会放在内存中进行缓存,为了提高从待更新数据到内存块的拷贝速度,在一个可选实施方式中,也可以提前将数据库的数据块从磁盘中读取到内存中,即上述可选实施方式中数据块均保存在内存中。内存中的数据并不是永远存在的,例如,在发生断电时内存中的数据就会丢失,因此在该可选实施方式中,需要将被更新的数据块保存到磁盘中,保存在磁盘中的数据不会随断电丢失,该数据可以持久化存在,因此,将数据块保存到磁盘的过程中也可以称为是一种持久化。持久化的过程可以在每个数据块被更新时就进行一次,这种处理方式对磁盘资源消耗比较大,因此,每次持久化时可以将多个数据块同时更新到磁盘中,以提高持久化效率。例如,可以在将第一数据块中包括的其他唯一键对应的待更新数据的数据内容均更新到对应的数据块之后,对这些数据块进行持久化;又例如,也可以将待更新数据中的所有数据均更新到对应的数据块中之后,对所有的这些数据库进行持久化。即可以在将包括所述其他唯一键的数据的数据内容更新到对应的数据块中之后,或者,还可以在所述待更新数据中的所有数据的数据内容均更新到对应的数据块中之后,将被更新数据内容的数据块从内存更新到磁盘中。这两个例子中的持久化时机可以在实际应用时灵活选择。
图2是根据本实施的数据批量更新并持久化的流程示意图,在图2中,待更新数据中的每条数据均包括:(rowKeyi,colA-i,colB-i,...),其中,i表示第几条数据,rowKey标识唯一键,colA和colB是该条数据的数据内容,colA和colB表示不同的字段,图2中示出的数据库是一种列式数据库,在列式数据库中每一列的数据(即每个字段的数据)均保存在一个数据块中,即图2中示出了rowKey保存在一个数据块中,colA和colB分别保存在一个数据块中。图2中通过数据库接口和应用程序编程接口(Application Programming Interface,简称为API)来进行数据更新,数据库接口是由数据库提供商提供的用于访问数据库的接口,上述实施方式的方法可以作为成一个API,通过该API可以实现上述反查方式的连续数据更新的方法。如图2所示,该批量数据更新的流程可以包括如下步骤:
步骤一,接收到客户端请求的批量更新时,先将待更新的数据保存至更新缓存,随即返回更新成功。在该步骤中,客户端是用于访问数据库的客户端,由于更新需要一定时间,在接收到批量更新请求时,向客户端反馈更新成功,可以避免客户端一直处于等待状态。
步骤二,后台更新线程从更新缓存中取出最早的一条数据,并查找该唯一键所在的数据块以及偏移量。在该步骤中对于批量数据更新可以放在后台来实现,此时可以通过一个专用的线程进行数据更新,该线程可以称为数据更新线程。在数据块保存有多个唯一键,每一个唯一键在数据块中均具有相应的位置,该位置可以用相对于文件起始位置的偏移量来表示,因此,在该步骤中需要查找该唯一键所在的数据块和偏移量。由于同一字段的不同数据的长度是相同的,所以一个数据块中的每条数据相对于上一条数据的偏移量均是相同的。
步骤三,查找到数据位置以后,根据数据的偏移量,将这一条数据的其余非空字段进行更新。在该步骤中,一条数据中的空字段内容是不需要更新的,因此,将非空字段进行更新,每个非空字段均保存在一个对应的数据块中,如图2中示出的保存colA和colB字段的两个数据块。
步骤四,在步骤三的数据更新完成以后,紧接着获取偏移量的下一条唯一键,并从更新缓存中反查这一条待更新数据。这样的操作,节省了每一条待更新数据都需要去数据块中遍历查找唯一键所在位置的时间;
步骤五,反查到待更新数据后,重复步骤四将其余非空字段整合到分析结果中;
步骤六,当迭代到数据块的末尾或者反查的唯一键在待更新缓存中不存在,则提交commit操作,将期间修改的数据块进行刷盘;
步骤七,重复步骤二、步骤三、步骤四、步骤五、步骤六步骤,直至更新缓存中没有数据。
步骤八,按照预先配置的时间间隔将被更新的数据块持久化到磁盘中。
上述实施方式可以应用到多种类型的数据的批量更新中。例如,针对视频图像分析场景,当对抓拍的视频和图片进行多次分析的时候,需要对统一目标的多次分析结果进行整合。即所述待更新数据包括:对针对预定目标对多媒体文件进行分析后得到的结果,其中,如果多个数据的唯一键相同,则所述多个数据为:包括针对相同目标并对相同多媒体文件采用不同分析设备、算法和/或神经网络模型进行分析后得到的结果的数据。
在一个可选实施方式中,唯一键是可以由用户来进行配置的,即在所述待更新数据包括多个字段的数据内容的情况下,获取配置信息,其中,所述配置信息中携带有字段名称;在所述多个字段中查找与所述字段名称匹配的字段;将与所述字段名称匹配的字段作为数据的唯一键。图3是根据本实施例的读取唯一键配置的流程示意图,如图3所示,该流程可以包括如下步骤:读取用于对唯一键进行配置的配置信息,该配置信息中会涉及到多个字符串,字符串之间会使用特殊符号进行分割,从配置信息中读取到的字符串使用特殊符号进行分割,就可以得到表示各个字段的字符串,其中,配置信息中可以包括为多张表配置的唯一键,其中,每一张表配置一个唯一键,多张表之间的唯一键可以使用特殊字符进行分割。例如,表A则使用字符串A作为唯一键,表B使用了字符串B作为唯一键,此时读取到的配置信息为“字符串A,字符串B”,其中“,”作为特殊字符对字符串A和字符串B进行分割,得到字符串A和字符串B,可以将字符串A和字符串B保存到配置列表中。将字符串A和字符串B作为一组数据,在待更新的数据中查找是否存在与字符串A相同的字段,如果查找到则将字符串A配置为唯一键(即将表中的字符串A和唯一键信息进行映射),配置唯一键之后将配置列表中的数据删除。如果在待更新数据中没有查找到与字符串A和字符串B匹配的字段,则丢弃该组配置并记录错误日志。在配置了唯一键之后,配置列表为空则该配置唯一键的流程结束。
在配置了唯一键的情况下,会涉及数据的多次按唯一键更新。此时,数据库的更新性能都会面临较大的瓶颈。其中主要的耗时有以下两个:在二次或多次分析结果入库时,需要对一次入库的数据进行检索。这时候,就需要根据数据的唯一键,检索一次数据结果的存储位置,这一部分需要消耗较长时间,会成为更新性能的瓶颈。在多次分析结果整合完成后,需要将对应的数据块持久化到磁盘,以保障结果的可靠性。而每次更新一条数据,就要对多个数据文件进行刷盘操作,这一部分也降低了更新的性能。为了解决上述问题,可以采用在后台进行异步更新的处理方式,图4是根据本申请实施例的后台异步更新的处理流程示意图,如图4所示,将待更新数据放入缓存(称为更新缓存)中,从缓存中查找最早的一条数据,然后获取该最早的一条数据的唯一键,对唯一键所在的数据块进行遍历,直至找到这条数据对应的唯一键所在数据块和偏移量,之后将该数据的其余字段进行更新;在第一条数据更新完成以后,便按照唯一键所在数据块的顺序,迭代到该数据块中保存的下一条唯一键,并从更新缓存中反查待更新数据,在待更新数据中查找到该唯一键之后将包含该唯一键的待更新数据的其余字段更新到的对应的数据块中。由于更新缓存根据唯一键创建了红黑树,因此查询性能较高,因此也节省了查找唯一键而遍历数据块的耗时。重复反查和更新的步骤,直至未能在更新缓存中找到对应唯一键的待更新数据,或者已到数据块的末尾,则跳出循环迭代,并提交这一批量更新数据。此时,会将此前所有存在更新的数据块持久化到磁盘。如果此时缓存中仍然有待更新数据,则重复整个图4中示出的流程即可。
在经过图4中的流程之后,对于待更新数据中新数据(即在数据库中之前没有保存过侧数据)需要执行插入过程保存到数据库中,图5是根据本申请实施例的数据插入的流程图,如图5所示,对唯一键进行查找之后,未找到该唯一键的一次入库数据时,这条数据转插入处理。出现未找到一次入库数据需要转插入时,会将该数据写入带插入列表,并定时提交批量插入,以减小插入耗时,同时也减小对更新性能的损耗。
通过上述图2至图5示出的流程,可以增加对唯一键的配置,从而用户可以配置用于标记对于同一视频或视频基于相同目标的多次分析结果的唯一键。在接收到用户的批量更新请求时,将待更新数据存入更新缓存;从更新缓存中,取出最早的一条数据,查找该数据的唯一键存储位置;根据查找到的唯一键位置,将其余非空字段更新到这一条数据;向后迭代遍历最早一条数据唯一键所在的数据块,以在该数据块中查找到其他唯一键的位置,取出该数据块中下一条数据的唯一键;根据取出的唯一键,在更新缓存中反查待更新数据,如果存在,则取出这一条数据,将该待更新数据的其余非空字段更新到对应的数据块中;重复上述步骤直至数据块的末尾或取出的唯一键未在更新缓存中找到;将本次批量更新中涉及修改的数据块持久化到磁盘。通过这些步骤对批量更新中存在的以上瓶颈点进行了优化,提高了批量更新的效率,进而提高了数据库的性能。
在本实施例中,提供一种电子装置,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行以上实施例中的方法。
上述程序可以运行在处理器中,或者也可以存储在存储器中(或称为计算机可读介质),计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
这些计算机程序也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤,对应与不同的步骤可以通过不同的模块来实现。
该本实施例中就提供了这样的一种装置,该装置被称为批量数据更新装置,包括:选取模块,用于从一批待更新数据中选取一条数据,其中,所述待更新数据中的每条数据均包括唯一键和数据内容,该唯一键用于标识该条数据;第一查找模块,用于根据所述一条数据的唯一键查找存储所述唯一键的第一数据块,并根据所述唯一键将所述一条数据中的数据内容更新到对应的数据块中;第二查找模块,用于从所述第一数据块中获取除所述一条数据的唯一键之外的其他唯一键,并从所述待更新数据中查找包括所述其他唯一键的数据;更新模块,用于将包括所述其他唯一键的数据的数据内容更新到对应的数据块中。
该系统或者装置用于实现上述的实施例中的方法的功能,该系统或者装置中的每个模块与方法中的每个步骤相对应,已经在方法中进行过说明的,在此不再赘述。
可选地,所述第二查找模块用于在所述第一数据块中从所述一条数据的唯一键所在位置开始依次获取下一条数据的唯一键,在所述待更新数据中查找到包括此次获取到的唯一键的数据的情况下,所述更新模块将包括此次获取到的唯一键的数据的数据内容更新到对应的数据块中,直至到达所述第一数据块的末尾或者在所述待更新数据中未查找到此次获取到的唯一键。
可选地,将包括所述其他唯一键的数据的数据内容更新到对应的数据块中之后,将所述待更新数据中的剩余数据作为新的一批待更新数据,并对所述新的一批待更新数据经过所述选取模型、所述第一查找模块、所述第二查找模块和所述更新模块的处理,直到所述待更新数据中没有剩余数据,其中,所述剩余数据为在已有数据块中能够查找到唯一键并且数据内容未更新到对应数据块中的数据。
可选地,所述更新模块还用于,用于获取所述待更新数据中未在已有数据块中查找到唯一键的至少一条数据;将所述至少一条数据插入列表中;在所述列表中的数据条数超过阈值或者当前时间满足时间要求的情况下,将所述列表中的数据插入到对应的数据块中。
可选地,还包括:持久化模块,用于在将包括所述其他唯一键的数据的数据内容更新到对应的数据块中之后,或者,在所述待更新数据中的所有数据的数据内容均更新到对应的数据块中之后将被更新数据内容的数据块从内存更新到磁盘中。
可选地,所述第二查找模块用于:从二叉树中查找包括所述其他唯一键的数据,其中,所述二叉树是根据所述待更新数据的所有唯一键预先创建的。
可选地,所述待更新数据包括:对针对预定目标对多媒体文件进行分析后得到的结果,其中,如果多个数据的唯一键相同,则所述多个数据为:包括针对相同目标并对相同多媒体文件采用不同分析设备、算法和/或神经网络模型进行分析后得到的结果的数据。
可选地,还包括:配置模块,用于在所述待更新数据包括多个字段的数据内容的情况下,获取配置信息,其中,所述配置信息中携带有字段名称;在所述多个字段中查找与所述字段名称匹配的字段;将与所述字段名称匹配的字段作为数据的唯一键。
通过上述可选实施方式解决了现有技术中在数据库进行批量数据更新时所存在的更新慢影响数据库性能的问题,从而提高了数据库的更新效率,在一定程度上提高了数据库的性能。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (12)
1.一种批量数据更新方法,其特征在于,包括:
从一批待更新数据中选取一条数据,其中,所述待更新数据中的每条数据均包括唯一键和数据内容,该唯一键用于标识该条数据;
根据所述一条数据的唯一键查找存储所述唯一键的第一数据块,并根据所述唯一键将所述一条数据中的数据内容更新到对应的数据块中;
从所述第一数据块中获取除所述一条数据的唯一键之外的其他唯一键,并从所述待更新数据中查找包括所述其他唯一键的数据;
将包括所述其他唯一键的数据的数据内容更新到对应的数据块中。
2.根据权利要求1所述的方法,其特征在于,获取所述其他唯一键,从所述待更新数据中查找并将包括所述其他唯一键的数据的数据内容更新到对应的数据库中包括:
在所述第一数据块中从所述一条数据的唯一键所在位置开始依次获取下一条数据的唯一键,在所述待更新数据中查找到包括此次获取到的唯一键的数据的情况下,将包括此次获取到的唯一键的数据的数据内容更新到对应的数据块中,直至到达所述第一数据块的末尾或者在所述待更新数据中未查找到此次获取到的唯一键。
3.根据权利要求1所述的方法,其特征在于,
将包括所述其他唯一键的数据的数据内容更新到对应的数据块中之后,将所述待更新数据中的剩余数据作为新的一批待更新数据,并对所述新的一批待更新数据执行权利要求1中所述的方法,直到所述待更新数据中没有剩余数据,其中,所述剩余数据为在已有数据块中能够查找到唯一键并且数据内容未更新到对应数据块中的数据。
4.根据权利要求3所述的方法,其特征在于,还包括:
获取所述待更新数据中未在已有数据块中查找到唯一键的至少一条数据;
将所述至少一条数据插入列表中;
在所述列表中的数据条数超过阈值或者当前时间满足时间要求的情况下,将所述列表中的数据插入到对应的数据块中。
5.根据权利要求1至4中任一项所述的方法,其特征在于,在将包括所述其他唯一键的数据的数据内容更新到对应的数据块中之后,或者,在所述待更新数据中的所有数据的数据内容均更新到对应的数据块中之后,还包括:
将被更新数据内容的数据块从内存更新到磁盘中。
6.根据权利要求1至4中任一项所述的方法,其特征在于,从所述待更新数据中查找包括所述其他唯一键的数据包括:
从二叉树中查找包括所述其他唯一键的数据,其中,所述二叉树是根据所述待更新数据的所有唯一键预先创建的。
7.根据权利要求1至4中任一项所述的方法,其特征在于,所述待更新数据包括:对针对预定目标对多媒体文件进行分析后得到的结果,其中,如果多个数据的唯一键相同,则所述多个数据为:包括针对相同目标并对相同多媒体文件采用不同分析设备、算法和/或神经网络模型进行分析后得到的结果的数据。
8.根据权利要求7所述的方法,其特征在于,还包括:
在所述待更新数据包括多个字段的数据内容的情况下,获取配置信息,其中,所述配置信息中携带有字段名称;
在所述多个字段中查找与所述字段名称匹配的字段;
将与所述字段名称匹配的字段作为数据的唯一键。
9.一种批量数据更新装置,其特征在于,包括:
选取模块,用于从一批待更新数据中选取一条数据,其中,所述待更新数据中的每条数据均包括唯一键和数据内容,该唯一键用于标识该条数据;
第一查找模块,用于根据所述一条数据的唯一键查找存储所述唯一键的第一数据块,并根据所述唯一键将所述一条数据中的数据内容更新到对应的数据块中;
第二查找模块,用于从所述第一数据块中获取除所述一条数据的唯一键之外的其他唯一键,并从所述待更新数据中查找包括所述其他唯一键的数据;
更新模块,用于将包括所述其他唯一键的数据的数据内容更新到对应的数据块中。
10.根据权利要求9所述的装置,其特征在于,
所述第二查找模块用于在所述第一数据块中从所述一条数据的唯一键所在位置开始依次获取下一条数据的唯一键,在所述待更新数据中查找到包括此次获取到的唯一键的数据的情况下,所述更新模块将包括此次获取到的唯一键的数据的数据内容更新到对应的数据块中,直至到达所述第一数据块的末尾或者在所述待更新数据中未查找到此次获取到的唯一键;和/或,
将包括所述其他唯一键的数据的数据内容更新到对应的数据块中之后,将所述待更新数据中的剩余数据作为新的一批待更新数据,并对所述新的一批待更新数据经过所述选取模型、所述第一查找模块、所述第二查找模块和所述更新模块的处理,直到所述待更新数据中没有剩余数据,其中,所述剩余数据为在已有数据块中能够查找到唯一键并且数据内容未更新到对应数据块中的数据;和/或,
所述更新模块还用于,用于获取所述待更新数据中未在已有数据块中查找到唯一键的至少一条数据;将所述至少一条数据插入列表中;在所述列表中的数据条数超过阈值或者当前时间满足时间要求的情况下,将所述列表中的数据插入到对应的数据块中;和/或,
还包括:持久化模块,用于在将包括所述其他唯一键的数据的数据内容更新到对应的数据块中之后,或者,在所述待更新数据中的所有数据的数据内容均更新到对应的数据块中之后将被更新数据内容的数据块从内存更新到磁盘中;和/或,
所述第二查找模块用于:从二叉树中查找包括所述其他唯一键的数据,其中,所述二叉树是根据所述待更新数据的所有唯一键预先创建的;和/或,
所述待更新数据包括:对针对预定目标对多媒体文件进行分析后得到的结果,其中,如果多个数据的唯一键相同,则所述多个数据为:包括针对相同目标并对相同多媒体文件采用不同分析设备、算法和/或神经网络模型进行分析后得到的结果的数据;和/或,
还包括:配置模块,用于在所述待更新数据包括多个字段的数据内容的情况下,获取配置信息,其中,所述配置信息中携带有字段名称;在所述多个字段中查找与所述字段名称匹配的字段;将与所述字段名称匹配的字段作为数据的唯一键。
11.一种电子设备,包括存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现权利要求1至8任一项所述的方法步骤。
12.一种可读存储介质,其上存储有计算机指令,其中,该计算机指令被处理器执行时实现权利要求1至8任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211150677.4A CN115495462A (zh) | 2022-09-21 | 2022-09-21 | 批量数据更新方法、装置、电子设备和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211150677.4A CN115495462A (zh) | 2022-09-21 | 2022-09-21 | 批量数据更新方法、装置、电子设备和可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115495462A true CN115495462A (zh) | 2022-12-20 |
Family
ID=84470289
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211150677.4A Pending CN115495462A (zh) | 2022-09-21 | 2022-09-21 | 批量数据更新方法、装置、电子设备和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115495462A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116107572A (zh) * | 2023-04-07 | 2023-05-12 | 苏州万店掌网络科技有限公司 | 一种批量操作持久化对象方法、装置、计算机设备和介质 |
-
2022
- 2022-09-21 CN CN202211150677.4A patent/CN115495462A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116107572A (zh) * | 2023-04-07 | 2023-05-12 | 苏州万店掌网络科技有限公司 | 一种批量操作持久化对象方法、装置、计算机设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107491487B (zh) | 一种全文数据库架构及位图索引创建、数据查询方法、服务器及介质 | |
US8229932B2 (en) | Storing XML documents efficiently in an RDBMS | |
US9292554B2 (en) | Thin database indexing | |
US8924373B2 (en) | Query plans with parameter markers in place of object identifiers | |
JP5088668B2 (ja) | 計算機負荷見積システム、計算機負荷見積方法、計算機負荷見積プログラム | |
US8694510B2 (en) | Indexing XML documents efficiently | |
US20110302195A1 (en) | Multi-Versioning Mechanism for Update of Hierarchically Structured Documents Based on Record Storage | |
CN110109894B (zh) | 非关系型数据库的实现方法、装置、存储介质和设备 | |
CN109815240B (zh) | 用于管理索引的方法、装置、设备和存储介质 | |
CN109150962B (zh) | 一种通过关键字快速识别http请求头的方法 | |
US11868328B2 (en) | Multi-record index structure for key-value stores | |
CN114691721A (zh) | 图数据的查询方法、装置、电子设备及存储介质 | |
CN114610708A (zh) | 一种向量数据处理方法及装置、电子设备及存储介质 | |
CN115935020A (zh) | 一种图数据存储方法和装置 | |
CN115495462A (zh) | 批量数据更新方法、装置、电子设备和可读存储介质 | |
CN116756253B (zh) | 关系型数据库的数据存储、查询方法、装置、设备和介质 | |
CN106874329A (zh) | 数据库表索引的实现方法和装置 | |
CN111752941B (zh) | 一种数据存储、访问方法、装置、服务器及存储介质 | |
US11144580B1 (en) | Columnar storage and processing of unstructured data | |
US9292553B2 (en) | Queries for thin database indexing | |
CN109947739B (zh) | 数据源管理方法及装置 | |
KR100859710B1 (ko) | 데이터에 대한 검색을 수행하기 위한 자료구조를 이용하여 데이터를 검색, 저장, 삭제하는 방법 | |
CN114416741A (zh) | 基于多级索引的kv数据写入读取方法、装置及存储介质 | |
CN114398373A (zh) | 应用于数据库存储的文件数据存储读取方法及装置 | |
CN111581123A (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 |