本发明涉及计算机,特别涉及大数据,尤其涉及一种基于日志文件的数据查询方法和装置。
背景技术:
1、数据库的数据导出是数据迁移的起始工作,将数据进行正确完整的导出,才能进一步对数据进行处理并写入到目标数据库,保证导出数据的快照一致性是基础条件之一。相关技术中,通过使用锁或长事务条件,对大数据表进行导出。但使用锁的方式阻止了正常业务需要的写操作,在偏交易类的系统可近似人为是停机状态,即使粒度再小的锁,也会造成数据库业务不可用状态,用户体验较差;长事务条件对数据库的负载和性能会造成较大影响,数据处理效率较低。
技术实现思路
1、本发明的一个目的在于提供一种基于日志文件的数据查询方法,通过结合日志文件实时对分段数据进行查询分析,能够在无锁、不依赖长事务条件下实现大数据表的导出,降低对数据库的负载,实现无感且高可行性的数据导出,保证数据库性能和数据导出操作时间段的数据快照一致性。本发明的另一个目的在于提供一种基于日志文件的数据查询装置。本发明的再一个目的在于提供一种计算机可读介质。本发明的还一个目的在于提供一种计算机设备。
2、为了达到以上目的,本发明一方面公开了一种基于日志文件的数据查询方法,包括:
3、获取待导出数据表和当前日志文件,待导出数据表包括主键信息和数据行信息;
4、根据预设的分段数据量、主键信息和数据行信息,对待导出数据表进行多段划分,得到多段查询数据记录;
5、按照预设的查询并发度,对每段查询数据记录进行迭代查询,得到当前数据查询结果;
6、通过当前日志文件,对当前数据查询结果进行更新,得到目标数据查询结果。
7、优选的,根据预设的分段数据量、主键信息和数据行信息,对待导出数据表进行多段划分,得到多段查询数据记录,包括:
8、根据主键信息,确定出数据快照范围;
9、根据分段数据量、主键信息和数据行信息,对数据快照范围进行多段划分,得到多段查询数据记录。
10、优选的,主键信息包括最大主键值、最小主键值和递增列值,数据行信息包括数据行数;
11、根据主键信息,确定出数据快照范围,包括:
12、若主键信息的类型为自增整数类型,根据最大主键值、最小主键值和数据行数,确定出数据快照范围;
13、若主键信息的类型为非自增整数类型,根据预先配置的列名信息,获取对应的递增列值,递增列值包括最大列值和最小列值;
14、根据最大列值、最小列值和数据行数,确定出数据快照范围。
15、优选的,主键信息的类型为自增整数类型;
16、根据分段数据量、主键信息和数据行信息,对数据快照范围进行多段划分,得到多段查询数据记录,包括:
17、根据分段数据量和数据行数,生成查询数据记录的总段数;
18、按照查询数据记录的总段数和分段数据量,根据最大主键值和最小主键值,将数据快照范围划分为多个区间,得到多段查询数据记录。
19、优选的,按照查询并发度,对每段查询数据记录进行迭代查询,得到当前数据查询结果,包括:
20、获取每段查询数据记录的低水位标识码和高水位标识码;
21、按照查询并发度,根据低水位标识码和高水位标识码进行数据并发查询,得到当前数据查询结果。
22、优选的,方法还包括:
23、将低水位标识码和高水位标识码存储至预先设置的水印表。
24、优选的,在按照查询并发度,对每段查询数据记录进行迭代查询,得到当前数据查询结果之前,还包括:
25、获取每段查询数据记录在当前日志文件中对应的日志起始位置;
26、根据当前日志文件的文件名和日志起始位置,生成每段查询数据记录对应的日志解析起始点。
27、优选的,通过当前日志文件,对当前数据查询结果进行更新,得到目标数据查询结果,包括:
28、按照日志解析起始点,对当前日志文件进行解析,得到全量事件;
29、按照事件类型、事件主键、查询数据记录的低水位标识码和高水位标识码,对全量事件进行事件过滤,得到目标更新事件;
30、根据目标更新事件,对当前数据查询结果进行更新,得到目标数据查询结果。
31、优选的,在通过预设的查询并发度和获取的当前日志文件,对每段查询数据记录进行迭代查询更新,得到目标数据查询结果之后,还包括:
32、将目标数据查询结果转换为磁盘文件;
33、导出磁盘文件。
34、本发明还公开了一种基于日志文件的数据查询装置,包括:
35、第一获取单元,用于获取待导出数据表和当前日志文件,待导出数据表包括主键信息和数据行信息;
36、划分单元,用于根据预设的分段数据量、主键信息和数据行信息,对待导出数据表进行多段划分,得到多段查询数据记录;
37、数据查询单元,用于按照预设的查询并发度,对每段查询数据记录进行迭代查询,得到当前数据查询结果;
38、结果更新单元,用于通过当前日志文件,对当前数据查询结果进行更新,得到目标数据查询结果。
39、优选的,划分单元,具体用于根据主键信息,确定出数据快照范围;根据分段数据量、主键信息和数据行信息,对数据快照范围进行多段划分,得到多段查询数据记录。
40、优选的,主键信息包括最大主键值、最小主键值和递增列值,数据行信息包括数据行数;
41、划分单元,具体用于若主键信息的类型为自增整数类型,根据最大主键值、最小主键值和数据行数,确定出数据快照范围;若主键信息的类型为非自增整数类型,根据预先配置的列名信息,获取对应的递增列值,递增列值包括最大列值和最小列值;根据最大列值、最小列值和数据行数,确定出数据快照范围。
42、优选的,主键信息的类型为自增整数类型;
43、划分单元,具体用于根据分段数据量和数据行数,生成查询数据记录的总段数;按照查询数据记录的总段数和分段数据量,根据最大主键值和最小主键值,将数据快照范围划分为多个区间,得到多段查询数据记录。
44、优选的,数据查询单元,具体用于获取每段查询数据记录的低水位标识码和高水位标识码;按照查询并发度,根据低水位标识码和高水位标识码进行数据并发查询,得到当前数据查询结果。
45、优选的,装置还包括:
46、存储单元,用于将低水位标识码和高水位标识码存储至预先设置的水印表。
47、优选的,装置还包括:
48、第二获取单元,用于获取每段查询数据记录在当前日志文件中对应的日志起始位置;
49、解析起始点生成单元,用于根据当前日志文件的文件名和日志起始位置,生成每段查询数据记录对应的日志解析起始点。
50、优选的,结果更新单元,具体用于按照日志解析起始点,对当前日志文件进行解析,得到全量事件;按照事件类型、事件主键、查询数据记录的低水位标识码和高水位标识码,对全量事件进行事件过滤,得到目标更新事件;根据目标更新事件,对当前数据查询结果进行更新,得到目标数据查询结果。
51、优选的,装置还包括:
52、转换单元,用于将目标数据查询结果转换为磁盘文件;
53、导出单元,用于导出磁盘文件。
54、本发明还公开了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述方法。
55、本发明还公开了一种计算机设备,包括存储器和处理器,所述存储器用于存储包括程序指令的信息,所述处理器用于控制程序指令的执行,所述处理器执行所述程序时实现如上所述方法。
56、本发明还公开了一种计算机程序产品,包括计算机程序/指令,计算机程序/指令被处理器执行时实现如上所述方法。
57、本发明获取待导出数据表和当前日志文件,待导出数据表包括主键信息和数据行信息;根据预设的分段数据量、主键信息和数据行信息,对待导出数据表进行多段划分,得到多段查询数据记录;按照预设的查询并发度,对每段查询数据记录进行迭代查询,得到当前数据查询结果;通过当前日志文件,对当前数据查询结果进行更新,得到目标数据查询结果,通过结合日志文件实时对分段数据进行查询分析,能够在无锁、不依赖长事务条件下实现大数据表的导出,降低对数据库的负载,实现无感且高可行性的数据导出,保证数据库性能和数据导出操作时间段的数据快照一致性。