CN111400333A - 数据并行写入方法、系统和计算机可读介质 - Google Patents
数据并行写入方法、系统和计算机可读介质 Download PDFInfo
- Publication number
- CN111400333A CN111400333A CN202010195026.1A CN202010195026A CN111400333A CN 111400333 A CN111400333 A CN 111400333A CN 202010195026 A CN202010195026 A CN 202010195026A CN 111400333 A CN111400333 A CN 111400333A
- Authority
- CN
- China
- Prior art keywords
- sub
- data
- array
- identifier
- database
- 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
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000003491 array Methods 0.000 claims abstract description 28
- 238000004590 computer program Methods 0.000 claims description 5
- 230000000875 corresponding effect Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 241000533950 Leucojum Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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
- G06F16/2308—Concurrency control
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据并行写入方法、系统和计算机存储介质。该方法包括以下步骤:接收待写入的原始数据;获取数据标识符;将原始数据分拆成多个子数组,并为每个子数组创建一个子线程;每个子线程获取一个数据库连接,并开启一个事务;在每个数据库连接中执行将对应的子数组写入数据库的操作,每个子数组对应一个子数组标识符和一个子数组状态,其中子数组标识符设置为数据标识符,子数组状态设置为未提交;当所有子线程都执行写入操作后,获取每个子线程对应的事务的事务状态;以及当所有子线程的事务状态都为成功时,执行全局提交操作,否则执行全局回滚操作。本发明可以在保障数据写入一致性的基础上提高大量数据写入的性能。
Description
技术领域
本发明主要涉及数据库领域,尤其涉及一种数据并行写入方法、系统和计算机可读介质。
背景技术
在对数据库做大量的数据写入(Insert)的时候,为了保障数据库的事务一致性,通常的做法是将数据的写入操作放在一个事务(Transaction)中,通过串行机制来执行。但是使用串行机制进行大量数据写入时,尤其是需要写入超过10000条以上数据的时候,串行写入的性能较差。
现有的做法是通过数据的批量插入(Batch Insert)操作来处理大量数据写入,但其本质上还是串行处理,进行大量数据写入时的写入性能仍旧低下。
发明内容
本发明要解决的技术问题是提供一种数据并行写入方法,可以在保障数据写入一致性的基础上提高大量数据写入的性能。
为解决上述技术问题,本发明提供了一种数据并行写入方法,包括以下步骤:接收待写入的原始数据;获取数据标识符;将原始数据分拆成多个子数组,并为每个子数组创建一个子线程;每个子线程获取一个数据库连接,并开启一个事务;在每个数据库连接中执行将对应的子数组写入数据库的操作,每个子数组对应一个子数组标识符和一个子数组状态,其中子数组标识符设置为数据标识符,子数组状态设置为未提交;当所有子线程都执行写入操作后,获取每个子线程对应的事务的事务状态;以及当所有子线程的事务状态都为成功时,执行全局提交操作,否则执行全局回滚操作。
可选地,数据标识符在数据库中为唯一。
可选地,数据标识符是通用唯一识别码。
可选地,数据标识符是数据库自增标识符。
可选地,在执行全局提交操作时,将所有为数据标识符的子数组标识符设置为空值。
可选地,子数组写入数据库的操作是通过批量插入操作进行。
可选地,在将原始数据分拆成多个子数组前,还包括:根据处理器的核数和/或频率确定分拆的子数组的数量。
可选地,当子数组的子数组状态为未提交时,禁止其它程序对子数组进行操作。
可选地,全局提交操作包括:将所有子数组标识符为数据标识符的子数组的子数组状态设置为已提交。
可选地,全局回滚操作包括:将所有子数组标识符为数据标识符的子数组删除。
可选地,每个子线程获取一个数据库连接还可以包括:每个子线程在数据库连接池中获取一个数据库连接。
可选地,该方法还包括:将子数组标识符设置为索引。
本发明还提供了一种数据并行写入系统,包括:存储器,用于存储可由处理器执行的指令;以及处理器,用于执行所述指令以实现如上所述的方法。
本发明还提供了一种存储有计算机程序代码的计算机可读介质,所述计算机程序代码在由处理器执行时实现如上所述的方法。
与现有技术相比,本发明具有以下优点:
通过将数据分拆成多个子数组进行并行写入,大幅度地提高了数据写入的速率;通过设置子数组标识符和子数组状态这两个参数,大幅度地减少了数据并行写入时可能发生的一致性问题,保障了数据并行写入的一致性,从而大幅度地提高了数据写入的性能。
附图说明
包括附图是为提供对本申请进一步的理解,它们被收录并构成本申请的一部分,附图示出了本申请的实施例,并与本说明书一起起到解释本发明原理的作用。附图中:
图1示出了根据本发明一实施例的数据并行写入方法的示意流程图。
图2示出了根据本发明一实施例示出的数据并行写入系统的系统框图。
具体实施方式
为了更清楚地说明本申请的实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
如本申请和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其他的步骤或元素。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本申请的范围。同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本申请中使用了流程图用来说明根据本申请的实施例的系统所执行的操作。应当理解的是,前面或下面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各种步骤。同时,或将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
图1示出了根据本发明一实施例的数据并行写入方法的示意流程图。如图1所示,本发明实施例提供了一种数据并行写入方法,包括以下步骤:
步骤101,接收待写入的原始数据;
步骤102,获取数据标识符;
步骤103,将原始数据分拆成多个子数组,并为每个子数组创建一个子线程;
步骤104,每个子线程获取一个数据库连接,并开启一个事务;
步骤105,在每个数据库连接中执行将对应的子数组写入数据库的操作,每个子数组对应一个子数组标识符和一个子数组状态,其中子数组标识符设置为数据标识符,子数组状态设置为未提交;
步骤106,当所有子线程都执行写入操作后,获取每个子线程对应的事务的事务状态;以及
步骤107,当所有子线程的事务状态都为成功时,执行全局提交操作,否则执行全局回滚操作。
下面对该数据并行写入方法中的各个步骤进行进一步的详细描述:
在步骤101中,接收待写入的原始数据。
数据并行写入系统接收待写入的原始数据。原始数据可以是大量数据,例如超过10000条的数据。大量数据在使用现有的串行写入方法时需要花费大量的时间,写入效率很低。
在步骤102中,获取数据标识符。
系统获取数据标识符,其中数据标识符可以由相应的数据标识符生成模块来生成。
可选地,数据标识符可以在数据库中为唯一。
当数据标识符在数据库中为唯一时,在数据库层面保证了数据标识符是不重复的。生成具有唯一性的数据标识符的算法包括但不限于:通用唯一识别码、数据库自增标识符、雪花算法等,本发明对此不作限定。
数据标识符在后续步骤中可用于设置子数组标识符。在数据库中对数据标识符设置唯一性,也就在数据库层面保证了子数组标识符的唯一性,从而确保了设置为同一个数据标识符的子数组标识符在数据库内不会与不相关的子数组标识符重复。
可选地,数据标识符可以是通用唯一识别码。
通用唯一识别码(Universally Unique Identifier,UUID)是在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。一般来说,可以保证这个值是真正唯一的,任何地方产生的任意一个UUID都不会有相同的值。使用UUID作为数据标识符可以很好地保证数据标识符的唯一性,确保不会发生数据标识符重复的情况。UUID具有多个版本,各个版本的算法不同,包括但不限于:全局唯一标识符、Linux ext2/ext3文件系统、LUKS加密分区、GNOME、KDE、Mac OS X等,本发明对UUID版本不作限定。
在一个示例中,通用唯一识别码可以使用全局唯一标识符(GloballyUniqueIdentifier,GUID)。GUID是一种由算法生成的二进制长度为128位的数字标识符。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。因此,使用GUID作为数据标识符可以很好地保证数据标识符的唯一性,确保不会发生数据标识符重复的情况。
可选地,数据标识符可以是数据库自增标识符。
数据标识符可以是数据库自增标识符,又称为数据库自增ID。数据库自增ID是在数据库内自增长生成的ID。在自增长ID超出自增长的取值范围前,生成的数据库自增ID在数据库范围内是唯一的。使用数据库自增ID作为数据标识符能够较好地保证数据标识符的唯一性,而且占用较小的数据存储空间,提高了数据库运行效率。
可选地,在执行全局提交操作时,可以将所有为数据标识符的子数组标识符设置为空值。
当数据标识符使用量很大时,有可能会出现重复的数据标识符,导致设置为数据标识符的子数组标识符也出现了重复的情况,原始数据无法正确地写入数据库。其中,数据库自增ID出现重复的可能性要高于GUID。当数据库自增ID使用量很大,导致数据库自增ID超出了自增长的取值范围时,数据库自增ID就会出现重复的情况,也就是说数据库自增ID不再是唯一的。而系统在执行全局提交操作后将所有为数据标识符的子数组标识符设置为空值,原来的数据标识符便不再作为子数组标识符使用,也不再保存在系统或数据库中。这样一来,即使数据标识符中再次生成已经使用过的值,使用该值的子数组标识符也早已被系统设置为空值,因此能够大幅度地降低来自不同原始数据的子数组的子数组标识符出现重复的概率,更好地保证来自同一原始数据的子数组的子数组标识符的唯一性。
在步骤103中,将原始数据分拆成多个子数组,并为每个子数组创建一个子线程;
系统将原始数据分拆成多个子数组,其中分拆的子数组的数量可以是预先设置的。每个子数组包含的数据量可以相等或不相等,本发明对此不作限定。其中,当每个子数组包含的数据量相等时,数据写入速率最高。系统为每个子数组创建一个子线程。多个子线程可以并发执行,也就是说系统可以同时对多个子数组进行操作,从而大幅度地提高了系统的执行吞吐率和数据写入性能。
可选地,在将原始数据分拆成多个子数组前,还可以包括:根据处理器的核数和/或频率确定分拆的子数组的数量。
系统可以在将原始数据分拆成多个子数组前,确定原始数据所分拆成的子数组的数量。系统可以根据所使用的处理器的核数和/或频率来确定分拆的子数组的数量。在一个示例中,处理器可以是计算机的中央处理器(CentralProcessing Unit,CPU)。分拆的子数组的数量可以是处理器核数的整数倍。在一个示例中,子数组数量可以是处理器核数的2-10倍。分拆的子数组的数量可以与处理器频率成正相关关系。下面以核数为4、频率为4GHz的处理器为例,因为处理器频率4GHz较高,子数组数量可以取处理器核数的较高倍数8。因此,最终的分拆的子数组的数量为4*8=32个。通过根据处理器的核数和/或频率来确定分拆的子数组的数量,能够充分地利用处理器最大性能,从而大幅度地提高数据并行写入的速率。系统还可以根据处理器的其它参数确定分拆的子数组的数量,本发明对此不作限定。
在步骤104中,每个子线程获取一个数据库连接,并开启一个事务。
每个子线程获取一个数据库连接,其中获取方式可以是在数据库中打开一个连接,也可以是在数据库连接池中获取一个数据库连接。每个子线程开启一个事务(Transaction)。事务是指访问并可能更新数据库中各种数据项的一个程序执行单元,具有原子性、一致性、隔离性、持久性这四个属性。数据库事务是指访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部操作组成。通过为每个子线程开启一个事务,能保障每个子线程的事务一致性。通过系统检查每个子线程的正确性后统一修改数据库中所有子线程的事务状态的方式,能够保障所有子线程的一致性。也可以将这种方式称为最终一致性的事务,即能够保障每个子线程的事务一致性的事务。
可选地,每个子线程获取一个数据库连接还可以包括:每个子线程在数据库连接池中获取一个数据库连接。
每个子线程可以在数据库连接池中获取一个数据库连接。系统通过数据库连接池技术来获取数据库连接,可以减少连接数据库的开销和缩减数据库整体响应时间,从而大幅度地提高了数据并行写入的速率。
在步骤105中,在每个数据库连接中执行将对应的子数组写入数据库的操作,每个子数组对应一个子数组标识符和一个子数组状态,其中子数组标识符设置为数据标识符,子数组状态设置为未提交。
系统在每个数据库连接中执行将对应的子数组写入数据库的操作。各个子数组通过使用各自对应的数据库连接来进行数据写入,实现了数据并行写入,大幅度地提高了数据写入性能。
每个子数组对应着一个子数组标识符和一个子数组状态,其中子数组标识符用于标识子数组是否来自同一个原始数据,子数组状态用于标识子数组的提交状态。在一个示例中,系统可以预先在数据库的表中增加一列子数组标识符和一列子数组状态。系统将子数组标识符设置为在步骤102中获取的数据标识符。各个子数组所对应的子数组标识符均为相同的值,即数据标识符。因此,来自同一个原始数据的子数组均会被设置为相同的数据标识符,可以通过查找该数据标识确认原始数据分拆而成的子数组的信息。系统将子数组状态设置为未提交,即尚未确认是否所有子数组均已成功写入。
可选地,子数组写入数据库的操作可以是通过批量插入操作进行。
各个子数组可以通过批量插入(Batch Insert)方式写入数据库。通过批量插入进行数据写入能够缩减大量数据写入所花费的时间,提高数据写入的效率。
可选地,该方法还可以包括:将子数组标识符设置为索引。
系统还可以将子数组标识符设置为索引。索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。当子数组标识符被设置为索引时,程序可以通过索引快速访问子数组及其相关信息。
可选地,当子数组的子数组状态为未提交时,可以禁止其它程序对子数组进行操作。
当子数组的子数组状态为未提交时,系统可以禁止其它程序对子数组进行操作,从而避免了在执行后续步骤107的全局提交操作前子数组数据被其他程序干扰的问题,进而确保了数据并行写入的隔离性。
在步骤106中,当所有子线程都执行写入操作后,获取每个子线程对应的事务的事务状态。
在所有子线程都执行数据写入操作后,系统获取每个子线程所对应的事务的事务状态。当事务状态为成功时,代表对应的子线程已完成数据写入操作;当事务状态为失败时,代表对应的子线程的数据写入操作失败。
在步骤107中,当所有子线程的事务状态都为成功时,执行全局提交操作,否则执行全局回滚操作。
当所有子线程的事务状态都为成功时,代表所有子线程均已完成数据写入操作。在确认所有子线程均已完成数据写入操作后,系统执行全局提交操作,即完成全部原始数据的写入。当不是所有子线程的事务状态都为成功时,也就是说有子线程的事务状态为失败,即该子数组写入失败。当有子数组写入失败时,原始数据不能够完整地写入到数据库中,需要执行全局回滚操作。全局回滚操作是指将所有数据的状态恢复到执行数据写入操作前的状态,没有受到失败的数据写入操作的影响。
可选地,全局提交操作可以包括:将所有子数组标识符为数据标识符的子数组的子数组状态设置为已提交。
原始数据所分拆出来的子数组的子数组标识符均为同一个数据标识符。因此,系统可以通过将所有子数组标识符为数据标识符的子数组的子数组状态设置为已提交的方式设置为已提交的方式进行全局提交操作。在一个示例中,当子数组状态设置为已提交时,系统可以不再禁止其它程序对子数组进行操作。
可选地,全局回滚操作可以包括:将所有子数组标识符为数据标识符的子数组删除。
原始数据所分拆出来的子数组的子数组标识符均为同一个数据标识符。因此,系统可以通过将所有子数组标识符为数据标识符的子数组删除进行全局回滚操作。在子数组被删除后,数据库中不再有子数组的数据,恢复到进行数据写入操作前的状态。
综上所述,本发明实施例的数据并行写入方法通过将数据分拆成多个子数组进行并行写入,大幅度地提高了大量数据写入的速率;通过设置子数组标识符和子数组状态这两个参数,大幅度地降低了数据并行写入时可能发生的一致性问题,保障了数据并行写入的一致性,从而大幅度地提高了大量数据写入的性能。根据发明人的实际测试,本发明中的数据并行写入方法在原始数据超过10000条时的数据写入性能显著高于数据串行写入。
本发明还提供了一种数据并行写入系统,包括:存储器,用于存储可由处理器执行的指令;以及处理器,用于执行所述指令以实现如上所述的数据并行写入方法。
图2示出了根据本发明一实施例示出的数据并行写入系统的系统框图。数据并行写入系统200可包括内部通信总线201、处理器(Processor)202、只读存储器(ROM)203、随机存取存储器(RAM)204、通信端口205、以及硬盘207。内部通信总线201可以实现数据并行写入系统200组件间的数据通信。处理器202可以进行判断和发出提示。在一些实施例中,处理器202可以由一个或多个处理器组成。通信端口205可以实现数据并行写入系统200与外部的数据通信。在一些实施例中,数据并行写入系统200可以通过通信端口205从网络发送和接受信息及数据。数据并行写入系统200还可以包括不同形式的程序储存单元以及数据储存单元,例如硬盘207,只读存储器(ROM)203和随机存取存储器(RAM)204,能够存储计算机处理和/或通信使用的各种数据文件,以及处理器202所执行的可能的程序指令。处理器执行这些指令以实现方法的主要部分。处理器执行这些指令以实现方法的主要部分。处理器处理的结果通过通信端口传给用户设备,在用户界面上显示。
本发明还提供了一种存储有计算机程序代码的计算机可读介质,所述计算机程序代码在由处理器执行时实现如上所述的数据并行写入方法。
上述的数据并行写入方法可以实施为计算机程序,保存在硬盘207中,并可记载到处理器202中执行,以实施本发明的方法。
数据并行写入方法实施为计算机程序时,也可以存储在计算机可读存储介质中作为制品。例如,计算机可读存储介质可以包括但不限于磁存储设备(例如,硬盘、软盘、磁条)、光盘(例如,压缩盘(CD)、数字多功能盘(DVD))、智能卡和闪存设备(例如,电可擦除可编程只读存储器(EPROM)、卡、棒、键驱动)。此外,本文描述的各种存储介质能代表用于存储信息的一个或多个设备和/或其它机器可读介质。术语“机器可读介质”可以包括但不限于能存储、包含和/或承载代码和/或指令和/或数据的无线信道和各种其它介质(和/或存储介质)。
应该理解,上文所描述的实施例仅是示意。本文描述的实施例可在硬件、软件、固件、中间件、微码或者其任意组合中实现。对于硬件实现,处理单元可以在一个或者多个特定用途集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器和/或设计为执行本文所述功能的其它电子单元或者其结合内实现。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述发明披露仅仅作为示例,而并不构成对本发明的限定。虽然此处并没有明确说明,本领域技术人员可能会对本发明进行各种修改、改进和修正。该类修改、改进和修正在本发明中被建议,所以该类修改、改进、修正仍属于本发明示例性实施例的精神和范围。
同时,本发明使用了特定词语来描述本发明的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本发明至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本发明的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
本发明的一些方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。处理器可以是一个或多个专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理器件(DAPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器或者其组合。此外,本发明的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。例如,计算机可读介质可包括,但不限于,磁性存储设备(例如,硬盘、软盘、磁带……)、光盘(例如,压缩盘CD、数字多功能盘DVD……)、智能卡以及闪存设备(例如,卡、棒、键驱动器……)。
同理,应当注意的是,为了简化本发明披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本发明实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本发明对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
虽然本发明已参照当前的具体实施例来描述,但是本技术领域中的普通技术人员应当认识到,以上的实施例仅是用来说明本发明,在没有脱离本发明精神的情况下还可作出各种等效的变化或替换,因此,只要在本发明的实质精神范围内对上述实施例的变化、变型都将落在本发明的权利要求书的范围内。
Claims (14)
1.一种数据并行写入方法,包括以下步骤:
接收待写入的原始数据;
获取数据标识符;
将所述原始数据分拆成多个子数组,并为每个所述子数组创建一个子线程;
每个所述子线程获取一个数据库连接,并开启一个事务;
在每个所述数据库连接中执行将对应的子数组写入数据库的操作,每个所述子数组对应一个子数组标识符和一个子数组状态,其中所述子数组标识符设置为所述数据标识符,所述子数组状态设置为未提交;
当所有所述子线程都执行所述写入操作后,获取每个所述子线程对应的所述事务的事务状态;以及
当所有所述子线程的所述事务状态都为成功时,执行全局提交操作,否则执行全局回滚操作。
2.如权利要求1所述的方法,其特征在于,所述数据标识符在数据库中为唯一。
3.如权利要求1或2所述的方法,其特征在于,所述数据标识符是通用唯一识别码。
4.如权利要求1或2所述的方法,其特征在于,所述数据标识符是数据库自增标识符。
5.如权利要求1所述的方法,其特征在于,在执行所述全局提交操作时,将所有为所述数据标识符的所述子数组标识符设置为空值。
6.如权利要求1所述的方法,其特征在于,所述子数组写入所述数据库的操作是通过批量插入操作进行。
7.如权利要求1所述的方法,其特征在于,在所述将所述原始数据分拆成多个子数组前,还包括:根据处理器的核数和/或频率确定所述分拆的子数组的数量。
8.如权利要求1所述的方法,其特征在于,当所述子数组的所述子数组状态为未提交时,禁止其它程序对所述子数组进行操作。
9.如权利要求1所述的方法,其特征在于,所述全局提交操作包括:将所有所述子数组标识符为所述数据标识符的所述子数组的所述子数组状态设置为已提交。
10.如权利要求1所述的方法,其特征在于,所述全局回滚操作包括:将所有所述子数组标识符为所述数据标识符的所述子数组删除。
11.如权利要求1所述的方法,其特征在于,所述每个所述子线程获取一个数据库连接还包括:每个所述子线程在数据库连接池中获取一个所述数据库连接。
12.如权利要求1所述的方法,其特征在于,还包括:将所述子数组标识符设置为索引。
13.一种数据并行写入系统,包括:
存储器,用于存储可由处理器执行的指令;以及
处理器,用于执行所述指令以实现如权利要求1-12任一项所述的方法。
14.一种存储有计算机程序代码的计算机可读介质,所述计算机程序代码在由处理器执行时实现如权利要求1-12任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010195026.1A CN111400333A (zh) | 2020-03-19 | 2020-03-19 | 数据并行写入方法、系统和计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010195026.1A CN111400333A (zh) | 2020-03-19 | 2020-03-19 | 数据并行写入方法、系统和计算机可读介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111400333A true CN111400333A (zh) | 2020-07-10 |
Family
ID=71432696
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010195026.1A Pending CN111400333A (zh) | 2020-03-19 | 2020-03-19 | 数据并行写入方法、系统和计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111400333A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102436490A (zh) * | 2010-10-28 | 2012-05-02 | 微软公司 | 多功能存储器内数据库恢复 |
CN103729442A (zh) * | 2013-12-30 | 2014-04-16 | 华为技术有限公司 | 记录事务日志的方法和数据库引擎 |
CN107273542A (zh) * | 2017-07-06 | 2017-10-20 | 华泰证券股份有限公司 | 高并发数据同步方法及系统 |
CN107918620A (zh) * | 2016-10-10 | 2018-04-17 | 阿里巴巴集团控股有限公司 | 一种数据库的写入方法及装置、电子设备 |
CN109408214A (zh) * | 2018-11-06 | 2019-03-01 | 北京字节跳动网络技术有限公司 | 一种数据的并行处理方法、装置、电子设备及可读介质 |
-
2020
- 2020-03-19 CN CN202010195026.1A patent/CN111400333A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102436490A (zh) * | 2010-10-28 | 2012-05-02 | 微软公司 | 多功能存储器内数据库恢复 |
CN103729442A (zh) * | 2013-12-30 | 2014-04-16 | 华为技术有限公司 | 记录事务日志的方法和数据库引擎 |
CN107918620A (zh) * | 2016-10-10 | 2018-04-17 | 阿里巴巴集团控股有限公司 | 一种数据库的写入方法及装置、电子设备 |
CN107273542A (zh) * | 2017-07-06 | 2017-10-20 | 华泰证券股份有限公司 | 高并发数据同步方法及系统 |
CN109408214A (zh) * | 2018-11-06 | 2019-03-01 | 北京字节跳动网络技术有限公司 | 一种数据的并行处理方法、装置、电子设备及可读介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391628B (zh) | 数据同步方法及装置 | |
US9348883B2 (en) | Systems and methods for replication replay in a relational database | |
US9953050B2 (en) | Garbage collection of versions driving the garbage collection of multi-version concurrency control timestamps | |
EP3159810B1 (en) | Improved secondary data structures for storage class memory (scm) enabled main-memory databases | |
US20160147809A1 (en) | Exporting and Importing Database Tables in a Multi-User Database Environment | |
US10754854B2 (en) | Consistent query of local indexes | |
EP3493071B1 (en) | Multi-version concurrency control (mvcc) in non-volatile memory | |
CN111316255B (zh) | 数据存储系统以及用于提供数据存储系统的方法 | |
CN114936188B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
US11714794B2 (en) | Method and apparatus for reading data maintained in a tree data structure | |
CN110019530A (zh) | 基于分布式数据库的事务处理方法及装置 | |
US10452496B2 (en) | System and method for managing storage transaction requests | |
US10599614B1 (en) | Intersection-based dynamic blocking | |
CN110704199A (zh) | 数据压缩方法、装置、计算机设备及存储介质 | |
CN113505114B (zh) | 数据库的多版本并发控制方法及数据库系统 | |
CN111373389B (zh) | 数据存储系统以及用于提供数据存储系统的方法 | |
AU2020200649B2 (en) | Apparatus and method for managing storage of primary database and replica database | |
CN111400333A (zh) | 数据并行写入方法、系统和计算机可读介质 | |
WO2022002128A1 (zh) | 一种读数据的方法、写数据的方法、设备和系统 | |
CN115760405A (zh) | 交易执行方法、装置、计算机设备及介质 | |
CN114579530A (zh) | 表空间迁移方法、装置、电子设备及计算机可读存储介质 | |
CN111444214A (zh) | 一种大规模数据和工业监控内存数据库处理的方法及装置 | |
CN117076147B (zh) | 死锁检测方法、装置、设备和存储介质 | |
CN114461605B (zh) | 内存多维数据库的事务数据多版本实现方法、装置及设备 | |
CN115712652A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200710 |