CN117687994A - 数据入库方法、装置、系统、设备及计算机介质 - Google Patents
数据入库方法、装置、系统、设备及计算机介质 Download PDFInfo
- Publication number
- CN117687994A CN117687994A CN202211105137.4A CN202211105137A CN117687994A CN 117687994 A CN117687994 A CN 117687994A CN 202211105137 A CN202211105137 A CN 202211105137A CN 117687994 A CN117687994 A CN 117687994A
- Authority
- CN
- China
- Prior art keywords
- data
- target database
- historical data
- information
- checkpoint information
- 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 81
- 238000003860 storage Methods 0.000 claims abstract description 28
- 238000012545 processing Methods 0.000 claims abstract description 23
- 238000013507 mapping Methods 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 14
- 238000012217 deletion Methods 0.000 claims description 8
- 230000037430 deletion Effects 0.000 claims description 8
- 238000001514 detection method Methods 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 abstract description 14
- 239000012634 fragment Substances 0.000 description 21
- 238000010586 diagram Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 16
- 238000004891 communication Methods 0.000 description 10
- 238000007726 management method Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 230000003139 buffering effect Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000037406 food intake Effects 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- 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
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24578—Query processing with adaptation to user needs using ranking
-
- 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
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2462—Approximate or statistical queries
-
- 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/25—Integrating or interfacing systems involving database management systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开一种数据入库方法、装置、系统、设备及计算机介质,可应用于云技术、文件存储、区块链、数据处理等各种场景。该方法包括:当检测到目标数据库或自身重启后,获取最近的第一检查点信息,第一检查点信息包括以下至少之一:第一检查点信息的第一快照标识、第一检查点信息的第一快照时间戳、用于向目标数据库提交数据的算子的第一算子标识;根据第一检查点信息确定第一检查点信息对应的第一历史数据的第一提交状态;若第一提交状态未指示第一历史数据已成功提交至目标数据库,则删除目标数据库中第一历史数据的残留数据;自第一消息队列设备获取第一历史数据;将第一历史数据存储至目标数据库,提升了向数据库存储的数据的数据一致性。
Description
技术领域
本申请涉及数据存储技术,具体涉及一种数据入库方法、装置、系统、设备及计算机介质。
背景技术
相关技术中,ClickHouse由于其优越的查询性能给数据分析带来了便利,但是在基于Flink流计算与ClickHouse、Druid等方式存储的结合模式搭建数字仓库时,容易导致通过Flink写入数据至ClickHouse后可能会出现数据丢失、重复写的情况发生,数据的一致性较差。
发明内容
本申请实施例提供一种数据入库方法、装置、系统、设备及计算机介质,可以提高向数据库存储的数据的数据一致性。
一方面,本申请实施例提供一种数据入库方法,所述方法包括:
当检测到目标数据库或自身重启后,获取最近的第一检查点信息,所述第一检查点信息包括以下至少之一:所述第一检查点信息的第一快照标识、所述第一检查点信息的第一快照时间戳、用于向所述目标数据库提交数据的算子的第一算子标识;
根据所述第一检查点信息确定所述第一检查点信息对应的第一历史数据的第一提交状态;
若所述第一提交状态未指示所述第一历史数据已成功提交至所述目标数据库,则删除所述目标数据库中所述第一历史数据的残留数据;
自第一消息队列设备获取所述第一历史数据;
将所述第一历史数据存储至所述目标数据库。
另一方面,本申请实施例提供一种数据处理系统,包括:
第二消息队列设备,用于接收多个对象的终端设备上传的待处理数据;
统计设备,用于对所述待处理数据进行统计,得出预设时间段内的所述待处理数据的统计结果;
第一消息队列设备,用于接收所述统计结果;
入库缓冲设备,用于消费所述统计结果,并将所述统计结果存储入目标数据库,还用于在检测到目标数据库或自身重启后,获取最近的第一检查点信息,所述第一检查点信息包括以下至少之一:所述第一检查点信息的第一快照标识、所述第一检查点信息的第一快照时间戳、用于向所述目标数据库提交数据的算子的第一算子标识;根据所述第一检查点信息确定所述第一检查点信息对应的第一历史数据的第一提交状态;若所述第一提交状态未指示所述第一历史数据已成功提交至所述目标数据库,则删除所述目标数据库中所述第一历史数据的残留数据;自第一消息队列设备获取所述第一历史数据;将所述第一历史数据存储至所述目标数据库;
所述目标数据库,用于存储所述统计结果;
其中,所述统计结果为前述数据入库方法中的第一历史数据。
另一方面,本申请实施例提供一种数据输入装置,所述装置包括:
获取单元,用于当检测到目标数据库或自身重启后,获取最近的第一检查点信息,所述第一检查点信息包括以下至少之一:所述第一检查点信息的第一快照标识、所述第一检查点信息的第一快照时间戳、用于向所述目标数据库提交数据的算子的第一算子标识;
确定单元,用于根据所述第一检查点信息确定所述第一检查点信息对应的第一历史数据的第一提交状态;
删除单元,用于若所述提交状态未指示所述第一历史数据已成功提交至所述目标数据库,则删除所述目标数据库中所述第一历史数据的残留数据;
所述获取单元,还用于自第一消息队列设备获取所述第一历史数据;
存储单元,用于将所述第一历史数据存储至所述目标数据库。
另一方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于处理器进行加载,以执行如上任一实施例所述的数据入库方法中的步骤。
另一方面,本申请实施例提供一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序,用于执行如上任一实施例所述的数据入库方法中的步骤。
另一方面,本申请实施例提供一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行时实现如上任一实施例所述的数据入库方法中的步骤。
本申请实施例通过当检测到目标数据库或自身重启后,获取最近的第一检查点信息,所述第一检查点信息包括以下至少之一:所述第一检查点信息的第一快照标识、所述第一检查点信息的第一快照时间戳、用于向所述目标数据库提交数据的算子的第一算子标识;根据所述第一检查点信息确定所述第一检查点信息对应的第一历史数据的第一提交状态;若所述第一提交状态未指示所述第一历史数据已成功提交至所述目标数据库,则删除所述目标数据库中所述第一历史数据的残留数据;自第一消息队列设备获取所述第一历史数据;将所述第一历史数据存储至所述目标数据库的方案,可以在检测到目标数据库或自身重启后,检测目标数据库是否已成功存储入目标数据库,在目标数据库中未存储成功相关数据时,重新进行存储,避免了数据丢失以及数据的重复写入,提高了向数据库存储的数据的数据一致性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的数据处理系统的结构示意图。
图2a为本申请实施例提供的数据入库方法的流程示意图。
图2b为本申请实施例提供的入库缓冲设备在检测到目标数据库或自身重启后的数据处理过程的示意图。
图2c为本申请实施例提供的入库缓冲设备在预提交阶段与提交阶段的数据处理过程的示意图。
图2d为本申请实施例提供的一种数据丢失情况的示意图。
图2e为本申请实施例提供的通过使用本方案后的数据丢失情况的示意图。
图2f为本申请实施例提供的在统计每分钟一平台点击量的时候,出现的重复写入数据的情况的示意图。
图2g为本申请实施例提供的使用本方案后的数据情况,不再出现重复写的问题的效果的示意图。
图3为本申请实施例提供的数据入库装置的结构示意图。
图4为本申请实施例提供的计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例可应用于云技术、文件存储、区块链、数据处理等各种场景。
本申请实施例提供一种数据入库方法、装置、系统、设备及计算机介质具体地,本申请实施例的数据入库方法可以由计算机设备执行,其中,该计算机设备可以为终端或者服务器等设备。该终端可以为智能手机、平板电脑、笔记本电脑、智能语音交互设备、智能家电、穿戴式智能设备、飞行器、智能车载终端等设备,终端还可以包括客户端,该客户端可以是视频客户端、浏览器客户端或即时通信客户端等。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
首先,在对本申请实施例进行描述的过程中出现的部分名词或者术语作如下解释:
云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
数据库(Database):简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
区块链系统可以是由客户端、多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)通过网络通信的形式连接形成的分布式系统。节点之间形成组成的点对点(P2P,Peer To Peer)网络,P2P协议是一个运行在传输控制协议(TCP,TransmissionControl Protocol)协议之上的应用层协议,在分布式系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层。
Apache Flink:是一个面向分布式数据流处理和批量数据处理的开源计算平台,提供支持流处理和批处理两种类型应用的功能。
TDBank:是从业务数据源端实时采集数据,进行预处理和分布式消息缓存后,按照消息订阅的方式,分发给后端的离线和在线处理系统。
ClickHouse:是用于在线分析处理查询(OLAP:Online Analytical Processing)MPP架构的列式存储数据库(DBMS:Database Management System),能够使用SQL(Structured Query Language,结构化查询语言,)查询实时生成分析数据报告。
Apache Druid是一个实时分析型数据库,旨在对大型数据集进行快速查询和分析(“OLAP”查询)。Druid最常被当做数据库,用以支持实时摄取、高查询性能和高稳定运行的应用场景。
幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。
数据一致性,当多个用户试图同时访问一个数据库,它们的事务同时使用相同的数据,可能会发生以下四种情况:丢失更新、未确定的相关性、不一致的分析和幻想读。数据一致性是评估数据质量的一个关键点,通常我们说的一致性是指用来描述同一信息主体在不同的数据集中信息属性是否相同,各实体、属性是否符合一致性约束关系。
事务:事务是一个最小的不可在分的工作单元;通常一个事务对应一个完整的业务(例如银行账户转账业务,该业务是一个最小的工作单元),一个完整的业务需要批量的DML(insert、update、delete)语句共同联合完成。
pre-commit:是在代码提交之前做些东西,比如代码打包,代码检测,称之为钩子(hook)。可以理解为在commit之前执行一个函数(callback)。这个函数成功执行完之后,再继续commit,失败则阻止commit。
Checkpoint:是一个内部事件,这个事件激活以后会触发数据库写进程(DBWR)将数据缓冲(DATABUFFER CACHE)中的脏数据块写出到数据文件中。在数据库系统中,写日志和写数据文件是数据库中IO消耗最大的两种操作,在这两种操作中写数据文件属于分散写,写日志文件是顺序写,因此为了保证数据库的性能,通常数据库都是保证在提交(commit)完成之前要先保证日志都被写入到日志文件中,而脏数据块则保存在数据缓存(buffer cache)中再不定期的分批写入到数据文件中。
sink算子:把计算之后的最终结果写入到某个位置。flink的sink是flink三大逻辑结构之一(source,transform,sink),功能就是负责把flink处理后的数据输出到外部系统中。
PrepareStatement:是Statement的一个子接口,可以预编译SQL(StructuredQuery Language,结构化查询语言)语句,预编译后的语句被存储在PrepareStatement的对象中,从而可以使用该对象多次高效的执行该SQL语句。并且PrepareStatement可以使用占位符编写SQL语句。
数据库分片(Database shards):是无共享架构的一个例子。这意味着分片是自治的:分片间不共享任何相同的数据或服务器资源。但是在某些情况下,将某些表复制到每个分片中作为参考表是有意义的。例如,假设某个应用程序的数据库依赖于重量测量的固定转换率。通过将包含必要转换率数据的表复制到每个分片中,有助于确保查询所需的所有数据都保存在每个分片中。
mapState辅助函数:是state的语法糖,帮助生成计算属性,语法糖指的是在计算机语言中添加的某种语法。
请参考图1,图1为本申请实施例提供的数据处理系统的结构示意图。该数据处理系统包括:第二消息队列设备10、统计设备11、第一消息队列设备12、入库缓冲设备13,以及目标数据库14其中:
第二消息队列设备10,用于接收多个对象的终端设备上传的待处理数据;
其中,对象可以为用户,第二消息队列设备10可以为用于存储TDbank消息队列的设备。
可选地,第二消息队列设备10还可以为用于存储Kafka消息队列的设备。
统计设备11,用于对所述待处理数据进行统计,得出预设时间段内的所述待处理数据的统计结果;
具体地,统计设备11可以为用于执行Flink流计算的设备。
可选地,前述待处理数据可以为以下任一种或多种:
被查看对象与该被查看对象的被查看时间;
被购买对象与该被购买对象的购买时间、相应的订单生成时间;
被注册对象与被注册对象的注册时间;
被曝光对象与被曝光对象的曝光时间。
前述对所述待处理数据进行统计包括以下任一种或多种:确定预设时间段内多个预设被查看对象的查看次数、确定预设时间段内多个预设被购买对象被购买的次数及生成的订单数量、确定预设时间段内多个预设被注册对象的注册次数、确定预设时间段内多个预设被曝光对象的曝光次数。
相应地,统计结果包括以下任一种或多种:预设时间段内多个预设被查看对象的查看次数、预设时间段内多个预设被购买对象被购买的次数及生成的订单数量、预设时间段内多个预设被注册对象的注册次数、预设时间段内多个预设被曝光对象的曝光次数。
可选地,前述被查看对象可以为网页,前述被购买对象为商品,前述被注册对象为网站或应用程序,前述被曝光对象为新闻。
可选地,前述待处理数据与统计结果还可以为其它信息,如游戏或广告相关的数据,对此,本申请不做限定。
第一消息队列设备12,用于接收所述统计结果;
其中,第一消息队列设备12可以为用于存储TDbank消息队列,或Kafka消息队列的设备。
入库缓冲设备13,用于消费所述统计结果,并将所述统计结果存储(包括预提交与提交)入目标数据库,还用于在检测到目标数据库或自身重启后,获取最近的第一检查点信息,所述第一检查点信息包括以下至少之一:所述第一检查点信息的第一快照标识、所述第一检查点信息的第一快照时间戳、用于向所述目标数据库提交数据的算子的第一算子标识;根据所述第一检查点信息确定所述第一检查点信息对应的第一历史数据的第一提交状态;若所述第一提交状态未指示所述第一历史数据已成功提交至所述目标数据库,则删除所述目标数据库中所述第一历史数据的残留数据;自第一消息队列设备获取所述第一历史数据;将所述第一历史数据存储至所述目标数据库;
其中,目标数据库14可以为ClickHouse数据库等不支持事务的数据库,还可以为支持事务的数据库,本申请对此不做限定。
所述目标数据库14,用于存储所述统计结果。
前述统计设备11在对前述待处理数据进行统计,并上传至第一消息队列设备12后,前述入库缓冲设备13则可消费统计结果,前述入库缓冲设备13在消费前述统计结果后,写入目标数据库,通过该方案可以使得针对待处理数据的计算与存储过程解耦合,使得即使目标数据库出现故障,也不会对针对待处理数据的计算过程产生影响,并且相应的统计结果也不会丢失,可以有效避免因多个程序并发控制引起的对目标数据库的稳定性的冲击。
可选地,前述入库缓冲设备13的并发度可与第一消息队列设备12中的分区个数一致。
可选地,前述入库缓冲设备13在将前述统计结果存储至目标数据库,并存储成功后,可生成用于指示所述第一消息队列设备12中的下一批统计结果的位置信息,具体地,该位置信息可以为偏移量信息(Offset),以确保在生成前述位置信息之前的统计结果均已入库成功。
可选地,所述第一检查点信息中还可包括最近自第一消息队列设备消费的第一历史数据;其中,所述第一历史数据包括前述统计结果,所述第一消息队列设备12与第二消息队列设备10用于存储消息队列。
本申请的方案可通过在相关技术中的数据处理系统中添加第一消息队列设备12、入库缓冲设备13,增加向数据库中存储数据时的一致性保障,避免数据重复存储入数据库,避免数据丢失以及数据的重复写入,并且也不会因为数据库的故障导致Flink流数据计算的异常。
可选地,所述系统还包括观测设备,所述观测设备,用于获取用户的查看指令,并根据所述查看指令从所述目标数据库获取并展示所述第一历史数据。
具体地,前述观测设备可设置有显示界面,用户可通过该显示界面触发前述查看指令。
以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优先顺序的限定。
本申请实施例提供了一种数据入库方法,图2a为本申请实施例提供的一种数据入库方法的流程示意图,该方法可由前述入库缓冲设备13执行,该方法可包括以下S201-S205:
S201、当检测到目标数据库14或自身(即入库缓冲设备13)重启后,获取最近的第一检查点信息,所述第一检查点信息包括以下至少之一:所述第一检查点信息的第一快照标识、所述第一检查点信息的第一快照时间戳、用于向所述目标数据库14提交数据的算子的第一算子标识;
其中,最近的第一检查点信息为距离当前时刻最近的第一快照信息,即第一快照信息包括:所述第一检查点信息的第一快照标识、所述第一检查点信息的第一快照时间戳、用于向所述目标数据库14提交数据的算子的第一算子标识。
其中,目标数据库14或入库缓冲设备13可在由于设备故障、网络故障、软件故障下线后,可自动或在接收到相关人员的重启指令后重启。
可选地,前述入库缓冲设备13可以为Flink入库缓冲设备13,入库缓冲设备13可按照预设周期对本地数据进行快照,得到相应的快照信息。
其中,前述用于向所述目标数据库14提交数据的算子可以为sink算子。
S202、根据所述第一检查点信息确定所述第一检查点信息对应的第一历史数据的第一提交状态;
可选地,前述S202中,根据所述第一检查点信息确定所述第一检查点信息对应的第一历史数据的第一提交状态,包括S2021-S2022:
S2021、对所述第一检查点信息的第一快照标识、所述第一检查点信息的第一快照时间戳、用于向所述目标数据库14提交数据的算子的第一算子标识做幂等运算,得到第一幂等结果;
可选地,前述S2021中,对所述第一检查点信息的第一快照标识、所述第一检查点信息的第一快照时间戳、用于向所述目标数据库14提交数据的算子的第一算子标识做幂等运算,得到第一幂等结果,包括:对所述第一检查点信息的第一快照标识、所述第一检查点信息的第一快照时间戳、用于向所述目标数据库14提交数据的算子的第一算子标识做哈希运算,得到第一哈希结果;将所述第一哈希结果作为所述第一幂等结果。
S2022、确定本地是否存储有所述第一幂等结果对应的第一映射关系,所述第一映射关系中存储有所述第一历史数据的第一提交状态;若是,则从所述第一映射关系中获取所述第一提交状态。
若本地未存储有所述第一幂等结果对应的第一映射关系,则说明本地未对所述第一历史数据的第一提交状态进行存储,第一历史数据的预提交过程并未完成,此时,则直接自所述第一消息队列设备12获取第二历史数据,将所述第二历史数据存储至所述目标数据库14。其中,第二历史数据与所述第一历史数据为同一批数据。
若本地未存储有所述第一幂等结果对应的第一映射关系,在本申请的一些可选的实施例中,自所述第一消息队列设备12获取所述第二历史数据,包括:获取所述第一检查点信息对应的数据接收快照信息,所述数据接收快照信息包括所述入库缓冲设备13接收自所述第一消息队列设备12的所述第二历史数据。
可选地,在本申请的另一些可选的实施例中,自所述第一消息队列设备12获取所述第二历史数据,包括:获取所述第一检查点信息对应的数据接收快照信息,所述数据接收快照信息包括所述入库缓冲设备13接收自所述第一消息队列设备12的所述第二历史数据的偏移量信息,所述偏移量信息用于指示所述第一消息队列设备12中,所述第二历史数据的位置信息;根据所述偏移量信息从所述第一消息队列设备12中获取所述第二历史数据。
S203、若所述第一提交状态未指示所述第一历史数据已成功提交至所述目标数据库14,则删除所述目标数据库14中所述第一历史数据的残留数据;
S204、自所述第一消息队列设备12获取所述第一历史数据;
在本申请的一些可选的实施例中,自所述第一消息队列设备12获取所述第一历史数据,包括:获取所述第一检查点信息对应的数据接收快照信息,所述数据接收快照信息包括所述入库缓冲设备13接收自所述第一消息队列设备12的所述第一历史数据。
可选地,在本申请的另一些可选的实施例中,自所述第一消息队列设备12获取所述第一历史数据,包括:获取所述第一检查点信息对应的数据接收快照信息,所述数据接收快照信息包括所述入库缓冲设备13接收自所述第一消息队列设备12的所述第一历史数据的偏移量信息,所述偏移量信息用于指示所述第一消息队列设备12中,所述第一历史数据的位置信息;根据所述偏移量信息从所述第一消息队列设备12中获取所述第一历史数据。
可选地,自第一消息队列设备12获取到第一历史数据后,则执行将所述第一历史数据存储至所述目标数据库;自第一消息队列设备12获取到第二历史数据后,则执行将所述第二历史数据存储至所述目标数据库。
其中,将第二历史数据存储至目标数据库与将第一历史数据存储至目标数据库的方式类似。
S205、将所述第一历史数据存储至所述目标数据库14。
在本申请的一些可选的实施例中,图2b为本申请实施例提供的入库缓冲设备在检测到目标数据库14或自身重启后的数据处理过程的示意图。入库缓冲设备13在检测到目标数据库14或自身重启后,此时,入库缓冲设备13用于获取最近的第一检查点信息,所述第一检查点信息包括以下至少之一:所述第一检查点信息的第一快照标识、所述第一检查点信息的第一快照时间戳、用于向所述目标数据库14提交数据的算子的第一算子标识,并计算三者经过Hash后的第一幂等结果;确定本地是否存储有前述第一幂等结果(或第一幂等结果对应的第一映射关系),若是,则获取第一幂等结果对应的第一历史数据的第一提交状态,并根据第一提交状态,执行删除或重新提交第一历史数据的操作,若否,则自所述第一消息队列设备12获取所述第二历史数据,并将所述第二历史数据存储至所述目标数据库14。
在本申请的一些可选的实施例中,前述S205中,将所述第一历史数据存储至所述目标数据库14,包括:
执行所述第一历史数据的预提交过程;
对所述第一历史数据进行快照,得到第二检查点信息,所述第二检查点信息的第二快照标识、所述第二检查点信息的第二快照时间戳、用于向所述目标数据库14提交数据的算子的第二算子标识;
执行所述第一历史数据的提交过程;
可选地,前述第二检查点信息还包括所述第一历史数据。
在本申请的一些可选的实施例中,执行所述第一历史数据的预提交过程,包括:初始化所述第一历史数据的第二提交状态为提交准备状态。
执行所述第一历史数据的预提交过程,还包括:
对SQL的PrepareStatement进行初始化,具体地,包括所述目标数据库14中用于存储前述第一历史数据的表名信息、所述表名信息中的的字段名信息的设置,还可以包括对所述字段名信息中的字段位置的初始化设置。
执行所述第一历史数据的提交过程,包括:将所述第一历史数据提交至所述目标数据库14。
具体地,前述入库缓冲设备13可具体执行2个阶段的提交,具体该2个阶段的提交可包括:预提交阶段与提交阶段,入库缓冲设备13在预提交阶段执行前述预提交过程;以及在提交阶段执行前述提交过程。
可选地,预提交阶段还包括:对所述第二检查点信息的第二快照标识、所述第二检查点信息的第二快照时间戳、用于向所述目标数据库14提交数据的算子的第二算子标识做幂等运算,得到第二幂等结果。
可选地,对所述第二检查点信息的第二快照标识、所述第二检查点信息的第二快照时间戳、用于向所述目标数据库14提交数据的算子的第二算子标识做幂等运算,得到第二幂等结果,包括:对所述第二检查点信息的第二快照标识、所述第二检查点信息的第二快照时间戳、用于向所述目标数据库14提交数据的算子的第二算子标识做哈希运算,得到第二哈希结果;将所述第二哈希结果作为所述第二幂等结果。
在预提交阶段,上述入库缓冲设备13还用于将所述第二幂等结果与所述第一历史数据的第二提交状态通过MapState进行存储。
在本申请的一些可选的实施例中,入库缓冲设备13在预提交阶段与提交阶段的数据处理过程可参见图2c所示,在预提交阶段,入库缓冲设备13具体用于:确定第二幂等结果、通过MapState存储第二提交状态,初始化第二提交状态为准备提交状态。在提交阶段,入库缓冲设备13用于:提交第一历史数据,并根据相应的提交结果确定第二提交状态,若第二提交状态为准备提交状态或提交失败状态,则先删除目标数据库14中第一历史数据的残留数据,并重新提交第一历史数据;在确定第一历史数据提交成功后结束,并当确定第一历史数据未提交成功后,返回重新提交第一历史数据。
其中,在提交第一历史数据后,若在预设时长内未接收到目标数据库14的反馈,则不改变第一历史数据的第二提交状态,若在预设时长内接收到目标数据库14反馈的提用于指示提交失败的提示信息,则将第一历史数据的第二提交状态改为提交失败状态,若在预设时长内接收到目标数据库14反馈的提用于指示提交成功的提示信息,则将第一历史数据的第二提交状态改为提交成功状态。
可选地,入库缓冲设备13在执行所述第一历史数据的提交过程之前,还包括:
获取所述第二幂等结果;
获取所述第一历史数据中各条数据对应的第一分片标识;
获取所述第二提交状态;
根据所述第二幂等结果、所述第一分片标识,以及所述第二提交状态创建第二映射关系。
可选地,前述第二映射关系的一侧为第二幂等结果,另一侧为第一分片标识与所述第二提交状态。其中,第一分片标识为第二目标位置信息,所述第二目标位置信息为所述目标数据库中的位置信息。
前述提交第一历史数据包括:将所述第一历史数据与所述第二目标位置信息提交至所述目标数据库,使所述目标数据库基于所述第二目标位置信息存储所述第一历史数据。
相应地,所述第一映射关系中还存储有所述第一历史数据对应的第一目标位置信息,所述第一目标位置信息为所述目标数据库中的位置信息,自第一消息队列设备获取所述第一历史数据之前,所述方法还包括:将所述第一历史数据与所述第一目标位置信息提交至所述目标数据库,使所述目标数据库基于所述第一目标位置信息存储所述第一历史数据。
可选地,前述第二映射关系为一键值对,该键值对的键为第一分片标识,与第二提交状态,该键值对的值为第二幂等结果。
前述第二映射关系中的第二提交状态可在执行所述第一历史数据的提交过程根据提交结果适应性变化。
在本申请的一些可选的实施例中,前述第一历史数据包括预设条数的子数据,各子数据包括数据内容以及数据内容的获取时间,每条子数据对应一子数据分片标识,前述键值对中的键中包含的第一分片标识为第一历史数据包含的多条子数据对应的多条子数据分片标识。
可选地,前述第一分片标识可通过以下方式进行计算:
针对每条子数据,获取所述子数据包含的时间字段;
获取所述目标数据库14中的包含的分片数量;
根据所述时间字段与所述分片数量确定所述子数据对应的子数据分片标识;
将多条子数据对应的多条子数据分片标识作为第一分片标识。
在本申请的一些可选的实施例中,根据所述时间字段与所述分片数量确定所述子数据对应的子数据分片标识,包括:
计算所述时间字段与所述分片数量的模;
将所述模作为所述子数据分片标识。
在本申请的另一些可选的实施例中,上述方法还包括:
对所述第一历史数据进行分类,得到多个类型的数据组,每组第一历史数据对应一个类型,各组第一历史数据可包括一个或多条子数据,其中,多个类型可包括:游戏、广告、新闻等中的至少2个。
进一步地,在本申请的另一些可选的实施例中,前述第一分片标识可通过以下方式进行计算:
针对每条子数据,获取所述子数据包含的时间字段以及所述子数据所属的数据组对应的类型;
获取所述目标数据库14中的包含的分片数量;
根据所述时间字段、所述类型与所述分片数量确定所述子数据对应的子数据分片标识;
将多条子数据对应的多条子数据分片标识作为第一分片标识。
在本申请的一些可选的实施例中,根据所述时间字段、所述类型与所述分片数量确定所述子数据对应的子数据分片标识,包括:
计算所述时间字段与所述分片数量的模;
根据所述模确定对应的分片组标识,所述目标数据库14中包含的多个分片可分为多个分片组,各分片组对应一分片组标识,各分片组标识对应一个模;
获取所述类型对应的数值;
根据所述数值与预设对应关系确定所述分片组标识对应的分片组中,所述子数据对应的子数据分片标识。
可选地,针对一个分片组中的分片,一个分片中可仅存储一个类型的数据,通过该方案可以提高在观测设备侧相关人员查看该类型的数据的查看速度。
可选地,前述第一幂等结果、所述第一映射关系可通过MapState进行存储。
可选地,关于前述第一映射关系的创建,所述方法还包括:
获取所述第一幂等结果;获取所述第一历史数据中各条数据对应的第二分片标识;获取所述第一提交状态;
根据所述第一幂等结果、所述第二分片标识,以及所述第一提交状态创建第一映射关系,其中,第二分片标识则为前述第一目标位置信息。
可选地,前述第一映射关系的一侧为第一幂等结果,另一侧为第二分片标识与所述第一提交状态。
可选地,前述第一映射关系为一键值对,该键值对的键为第二分片标识,与第一提交状态,该键值对的值为第一幂等结果。
前述第一映射关系中的第一提交状态可在执行所述第一历史数据的提交过程根据提交结果适应性变化。
在本申请的一些可选的实施例中,前述第一历史数据包括预设条数的子数据,各子数据包括数据内容以及数据内容的获取时间,每条子数据对应一子数据分片标识,前述键值对中的键中包含的第一分片标识为第一历史数据包含的多条子数据对应的多条子数据分片标识。
在申请的一些可选的实施例中,所述方法还包括:
当所述第一提交状态为提交准备状态或提交失败状态时,确定所述提交状态未指示所述第一历史数据已成功提交至所述目标数据库14。
可选地,第一提交状态可通过状态标识表示,状态标识可以为阿拉伯数字。
可选地,当状态标识为0时,表示提交状态为提交准备状态;当状态标识为1时,表示提交状态为提交失败状态;当状态标识为2时,表示提交状态为提交成功状态。
可选地,前述删除所述目标数据库14中所述第一历史数据的残留数据,包括:查询所述目标数据库14中是否存储有所述第一历史数据的残留数据,若是,则删除所述残留数据,其中,所述残留数据为包含于所述第一历史数据中的数据。若否,则自第一消息队列设备获取所述第一历史数据;将所述第一历史数据存储至所述目标数据库。其中,自第一消息队列设备获取所述第一历史数据;将所述第一历史数据存储至所述目标数据库的具体方式可参见前述内容,此处不再赘述。
其中,将所述第一历史数据提交至所述目标数据库14,包括:将所述第一历史数据与所述第一目标位置信息提交至所述目标数据库14,使所述目标数据库14基于第一目标位置信息存储所述第一历史数据。
可选地,将所述第一历史数据提交至所述目标数据库14可在提交阶段执行。
可选地,所述方法还包括:
获取用于指示所述残留数据是否删除成功的标志位的数值;
若所述标志位的数值指示所述残留数据已删除成功,则触发自所述第一消息队列设备12获取所述第一历史数据。
具体地,前述用于指示所述残留数据是否删除成功的标志位可以为is_done的相应数值位,当标志位为1时,指示所述残留数据已删除成功,当标志位为0时,指示残留数据未删除成功。
在本申请的另一些可选的实施例中,为了修正特定时间段的数据,上述方法还包括以下S01-S06:
S01、获取管理设备发送的起始时刻信息;
S02、获取所述起始时刻信息对应的第三检查点信息,所述第三检查点信息包括以下至少之一:所述第三检查点信息的第三快照标识、所述第三检查点信息的第三快照时间戳、用于向所述目标数据库14提交数据的算子的第三算子标识;
S03、根据所述第三检查点信息确定所述第三检查点信息对应的第三历史数据的第三提交状态;
S04、若所述第三提交状态未指示所述第三历史数据已成功提交至所述目标数据库14,则删除所述目标数据库14中所述第三历史数据的残留数据;
S05、自第一消息队列设备12获取所述第三历史数据;
S06、将所述第三历史数据存储至所述目标数据库14。
具体地,S01-S06的具体实施方式可参见前述内容,此处不再赘述。
可选地,上述方法在检测到当前时刻达到预设时刻时,停止向所述目标数据库14存储数据,前述预设时刻为获取管理设备发送的起始时刻信息的时刻。
可选地,本申请的方案除了可接收相关人员通过管理设备,修正当前时刻距离前述起始时刻信息之间的数据外,还可实现相关人员通过管理设备,修正预设时间段内的数据,相应地,前述获取管理设备发送的起始时刻信息还包括:获取管理设备发送的起始时刻信息与截止时刻信息。
可选地,上述方法还包括将所述起始时刻信息与截止时刻信息,或所述起始时刻至当前时刻修正的数据发送至所述管理设备,供管理设备展示。
可选地,上述方法还包括:按照预设周期清空通过MapState进行存储的数据,其中,预设周期可以为24小时。
通过本申请的方案,可以低成本且有效的在Flink层面实现在写入不支持事务的海量存储组件时的数据一致性,没有增加任何不必要的额外开发,没有针对特定存储组件的定制开发,而是对接通用的不支持事务的存储组件在Flink层面的一致性写入的一种方法,更加轻巧便捷的操作使用。解决了Flink在写入不支持事务的存储的数据一致性的问题。
本申请实施例通过当检测到目标数据库14或自身重启后,获取最近的第一检查点信息,所述第一检查点信息包括以下至少之一:所述第一检查点信息的第一快照标识、所述第一检查点信息的第一快照时间戳、用于向所述目标数据库14提交数据的算子的第一算子标识;根据所述第一检查点信息确定所述第一检查点信息对应的第一历史数据的第一提交状态;若所述第一提交状态未指示所述第一历史数据已成功提交至所述目标数据库14,则删除所述目标数据库14中所述第一历史数据的残留数据;自第一消息队列设备12获取所述第一历史数据;将所述第一历史数据存储至所述目标数据库14的方案,可以在检测到目标数据库14或自身重启后,检测目标数据库14是否已成功存储入目标数据库14,在目标数据库14中未存储成功相关数据时,重新进行存储,避免了数据丢失以及数据的重复写入,提高了向数据库存储的数据的数据一致性。
图2d为一种数据丢失情况的示意图,其中,数据统计窗口为1min(60s),如灰框中的时间戳间隔大于1min,表明中间出现了丢数据的情况,导致入库时间戳错乱。
图2e为一种通过使用本方案后的数据丢失情况示意图,由图可知,使用本方案后,不会再出现数据丢失的情况,时间连续(间隔1分钟):
图2f为本申请实施例提供的在统计每分钟一平台点击量的时候,出现的重复写入数据的情况的示意图,同一时间出现了两条同样的关于IOS平台的click_num(点击量)为2的数据,属于异常的数据。图2g为使用本方案后的数据情况,不再出现重复写的问题。
上述所有的技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。
为便于更好的实施本申请实施例的数据入库方法,本申请实施例还提供一种数据入库装置,请参阅图3,图3为本申请实施例提供的数据入库装置的结构示意图。其中,该数据入库装置30可以包括:
获取单元31,用于当检测到目标数据库14或自身重启后,获取最近的第一检查点信息,所述第一检查点信息包括以下至少之一:所述第一检查点信息的第一快照标识、所述第一检查点信息的第一快照时间戳、用于向所述目标数据库14提交数据的算子的第一算子标识;
确定单元32,用于根据所述第一检查点信息确定所述第一检查点信息对应的第一历史数据的第一提交状态;
删除单元33,用于若所述提交状态未指示所述第一历史数据已成功提交至所述目标数据库14,则删除所述目标数据库14中所述第一历史数据的残留数据;
所述获取单元31,还用于自第一消息队列设备12获取所述第一历史数据;
提交单元34,用于将所述第一历史数据提交至所述目标数据库14。
可选地,前述装置在用于根据所述第一检查点信息确定所述第一检查点信息对应的第一历史数据的第一提交状态时,具体用于:
对所述第一检查点信息的第一快照标识、所述第一检查点信息的第一快照时间戳、用于向所述目标数据库14提交数据的算子的第一算子标识做幂等运算,得到第一幂等结果;
确定本地是否存储有所述第一幂等结果对应的第一映射关系,所述第一映射关系中存储有所述第一历史数据的第一提交状态;
若是,则从所述第一映射关系中获取所述第一提交状态。
可选地,所述装置还用于:若本地未存储有所述第一幂等结果对应的第一映射关系,则直接自所述第一消息队列设备获取第二历史数据,将所述第二历史数据存储至所述目标数据库;其中,第二历史数据与所述第一历史数据为同一批数据。
可选地,所述装置在用于自所述第一消息队列设备获取所述第一历史数据时,具体用于:
获取所述第一检查点信息对应的数据接收快照信息,所述数据接收快照信息包括接收自所述第一消息队列设备的所述第一历史数据的偏移量信息,所述偏移量信息用于指示所述第一消息队列设备中所述第一历史数据的位置信息;
根据所述偏移量信息从所述第一消息队列设备中获取所述第一历史数据。
可选地,所述第一映射关系中还存储有所述第一历史数据对应的第一目标位置信息,所述第一目标位置信息为所述目标数据库14中的位置信息,所述装置还用于:将所述第一历史数据与所述第一目标位置信息提交至所述目标数据库14,使所述目标数据库14基于所述第一目标位置信息存储所述第一历史数据。
可选地,所述装置还用于:当所述第一提交状态为提交准备状态或提交失败状态时,确定所述第一提交状态未指示所述第一历史数据已成功提交至所述目标数据库14。
可选地,所述装置在用于删除所述目标数据库14中所述第一历史数据的残留数据时,具体用于:查询所述目标数据库14中是否存储有所述第一历史数据的残留数据,若是,则删除所述残留数据,其中,所述残留数据为包含于所述第一历史数据中的数据。
可选地,所述装置还用于:
获取用于指示所述残留数据是否删除成功的标志位的数值;
若所述标志位的数值指示所述残留数据已删除成功,则触发自所述第一消息队列设备12获取所述第一历史数据。
可选地,所述装置在用于对所述第一检查点信息的第一快照标识、所述第一检查点信息的第一快照时间戳、用于向所述目标数据库14提交数据的算子的第一算子标识做幂等运算,得到第一幂等结果时,具体用于:
对所述第一检查点信息的第一快照标识、所述第一检查点信息的第一快照时间戳、用于向所述目标数据库14提交数据的算子的第一算子标识做哈希运算,得到第一哈希结果;
将所述第一哈希结果作为所述第一幂等结果。
上述数据入库装置中的各个单元可全部或部分通过软件、硬件及其组合来实现。上述各个单元可以以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行上述各个单元对应的操作。
可选的,本申请还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
图4为本申请实施例提供的计算机设备的结构示意图,该计算机设备可以是图1所示的入库缓冲设备13。如图4所示,该计算机设备400可以包括:通信接口401,存储器402,处理器403和通信总线404。通信接口401,存储器402,处理器403通过通信总线404实现相互间的通信。通信接口401用于计算机设备400与外部设备进行数据通信。存储器402可用于存储软件程序以及模块,处理器403通过运行存储在存储器402的软件程序以及模块,例如前述方法实施例中的相应操作的软件程序。
可选的,该处理器403可以调用存储在存储器402的软件程序以及模块执行如下操作:
当检测到目标数据库14或自身重启后,获取最近的第一检查点信息,所述第一检查点信息包括以下至少之一:所述第一检查点信息的第一快照标识、所述第一检查点信息的第一快照时间戳、用于向所述目标数据库14提交数据的算子的第一算子标识;
根据所述第一检查点信息确定所述第一检查点信息对应的第一历史数据的第一提交状态;
若所述第一提交状态未指示所述第一历史数据已成功提交至所述目标数据库14,则删除所述目标数据库14中所述第一历史数据的残留数据;
自第一消息队列设备12获取所述第一历史数据;
将所述第一历史数据提交至所述目标数据库14。
本申请还提供了一种计算机可读存储介质,用于存储计算机程序。该计算机可读存储介质可应用于计算机设备,并且该计算机程序使得计算机设备执行本申请实施例中的各方法中的相应流程,为了简洁,在此不再赘述。
本申请还提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得计算机设备执行本申请实施例中的各方法中的相应流程,为了简洁,在此不再赘述。
本申请还提供了一种计算机程序,该计算机程序包括计算机指令,计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得计算机设备执行本申请实施例中的各方法中的相应流程,为了简洁,在此不再赘述。
应理解,本申请实施例的处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
可以理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DR RAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (15)
1.一种数据入库方法,其特征在于,所述方法包括:
当检测到目标数据库或自身重启后,获取最近的第一检查点信息,所述第一检查点信息包括以下至少之一:所述第一检查点信息的第一快照标识、所述第一检查点信息的第一快照时间戳、用于向所述目标数据库提交数据的算子的第一算子标识;
根据所述第一检查点信息确定所述第一检查点信息对应的第一历史数据的第一提交状态;
若所述第一提交状态未指示所述第一历史数据已成功提交至所述目标数据库,则删除所述目标数据库中所述第一历史数据的残留数据;
自第一消息队列设备获取所述第一历史数据;
将所述第一历史数据存储至所述目标数据库。
2.根据权利要求1所述的方法,其特征在于,根据所述第一检查点信息确定所述第一检查点信息对应的第一历史数据的第一提交状态,包括:
对所述第一检查点信息的所述第一快照标识、所述第一检查点信息的第一快照时间戳、用于向所述目标数据库提交数据的算子的第一算子标识做幂等运算,得到第一幂等结果;
确定本地是否存储有所述第一幂等结果对应的第一映射关系,所述第一映射关系中存储有所述第一历史数据的第一提交状态,若是,则从所述第一映射关系中获取所述第一提交状态。
3.根据权利要求2所述的方法,其特征在于,若本地未存储有所述第一幂等结果对应的第一映射关系,则直接自所述第一消息队列设备获取第二历史数据,将所述第二历史数据存储至所述目标数据库;其中,第二历史数据与所述第一历史数据为同一批数据。
4.根据权利要求1所述的方法,其特征在于,自所述第一消息队列设备获取所述第一历史数据,包括:
获取所述第一检查点信息对应的数据接收快照信息,所述数据接收快照信息包括接收自所述第一消息队列设备的所述第一历史数据的偏移量信息,所述偏移量信息用于指示所述第一消息队列设备中所述第一历史数据的位置信息;
根据所述偏移量信息从所述第一消息队列设备中获取所述第一历史数据。
5.根据权利要求2所述的方法,其特征在于,所述第一映射关系中还存储有所述第一历史数据对应的第一目标位置信息,所述第一目标位置信息为所述目标数据库中的位置信息,所述方法还包括:将所述第一历史数据与所述第一目标位置信息提交至所述目标数据库,使所述目标数据库基于所述第一目标位置信息存储所述第一历史数据。
6.根据权利要求2所述的方法,其特征在于,对所述第一检查点信息的第一快照标识、所述第一检查点信息的第一快照时间戳、用于向所述目标数据库提交数据的算子的第一算子标识做幂等运算,得到第一幂等结果,包括:
对所述第一检查点信息的第一快照标识、所述第一检查点信息的第一快照时间戳、用于向所述目标数据库提交数据的算子的第一算子标识做哈希运算,得到第一哈希结果;
将所述第一哈希结果作为所述第一幂等结果。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述第一提交状态为提交准备状态或提交失败状态时,确定所述第一提交状态未指示所述第一历史数据已成功提交至所述目标数据库。
8.根据权利要求1所述的方法,其特征在于,删除所述目标数据库中所述第一历史数据的残留数据,包括:查询所述目标数据库中是否存储有所述第一历史数据的残留数据,若是,则删除所述残留数据,其中,所述残留数据为包含于所述第一历史数据中的数据。
9.根据权利要求7所述的方法,其特征在于,所述方法还包括:
获取用于指示所述残留数据是否删除成功的标志位的数值;
若所述标志位的数值指示所述残留数据已删除成功,则触发自所述第一消息队列设备获取所述第一历史数据。
10.一种数据处理系统,其特征在于,包括:
第二消息队列设备,用于接收多个对象的终端设备上传的待处理数据;
统计设备,用于对所述待处理数据进行统计,得出预设时间段内的所述待处理数据的统计结果;
第一消息队列设备,用于接收所述统计结果;
入库缓冲设备,用于消费所述统计结果,并将所述统计结果存储入目标数据库,还用于在检测到目标数据库或自身重启后,获取最近的第一检查点信息,所述第一检查点信息包括以下至少之一:所述第一检查点信息的第一快照标识、所述第一检查点信息的第一快照时间戳、用于向所述目标数据库提交数据的算子的第一算子标识;根据所述第一检查点信息确定所述第一检查点信息对应的第一历史数据的第一提交状态;若所述第一提交状态未指示所述第一历史数据已成功提交至所述目标数据库,则删除所述目标数据库中所述第一历史数据的残留数据;自第一消息队列设备获取所述第一历史数据;将所述第一历史数据存储至所述目标数据库;
所述目标数据库,用于存储所述统计结果;
其中,所述统计结果包括权利要求1-9中任一项所述的第一历史数据。
11.根据权利要求10所述的系统,其特征在于,所述系统还包括观测设备,
所述观测设备,用于获取用户的查看指令,并根据所述查看指令从所述目标数据库获取并展示所述第一历史数据。
12.一种数据入库装置,其特征在于,所述装置包括:
获取单元,用于当检测到目标数据库或自身重启后,获取最近的第一检查点信息,所述第一检查点信息包括以下至少之一:所述第一检查点信息的第一快照标识、所述第一检查点信息的第一快照时间戳、用于向所述目标数据库提交数据的算子的第一算子标识;
确定单元,用于根据所述第一检查点信息确定所述第一检查点信息对应的第一历史数据的第一提交状态;
删除单元,用于若所述提交状态未指示所述第一历史数据已成功提交至所述目标数据库,则删除所述目标数据库中所述第一历史数据的残留数据;
所述获取单元,还用于自第一消息队列设备获取所述第一历史数据;
存储单元,用于将所述第一历史数据存储至所述目标数据库。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于处理器进行加载,以执行如权利要求1-9任一项所述的方法中的步骤。
14.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序,用于执行权利要求1-9任一项所述的方法中的步骤。
15.一种计算机程序产品,包括计算机指令,其特征在于,所述计算机指令被处理器执行时实现权利要求1-9任一项所述的方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211105137.4A CN117687994A (zh) | 2022-09-09 | 2022-09-09 | 数据入库方法、装置、系统、设备及计算机介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211105137.4A CN117687994A (zh) | 2022-09-09 | 2022-09-09 | 数据入库方法、装置、系统、设备及计算机介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117687994A true CN117687994A (zh) | 2024-03-12 |
Family
ID=90132572
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211105137.4A Pending CN117687994A (zh) | 2022-09-09 | 2022-09-09 | 数据入库方法、装置、系统、设备及计算机介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117687994A (zh) |
-
2022
- 2022-09-09 CN CN202211105137.4A patent/CN117687994A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10127120B2 (en) | Event batching, output sequencing, and log based state storage in continuous query processing | |
US10733079B2 (en) | Systems and methods for end-to-end testing of applications using dynamically simulated data | |
US9740582B2 (en) | System and method of failover recovery | |
CN107844388B (zh) | 从备份系统流式恢复数据库 | |
US9697253B2 (en) | Consistent client-side cache | |
US9880880B2 (en) | Automatic scaling of computing resources using aggregated metrics | |
US10270854B2 (en) | Datastore for aggregated measurements for metrics | |
US9910755B2 (en) | Retrieval of authoritative measurement data from in-memory datastores | |
CN111859132A (zh) | 一种数据处理方法、装置及智能设备、存储介质 | |
CA2988805C (en) | Datastore for aggregated measurements for metrics | |
CN112883119B (zh) | 数据同步方法、装置、计算机设备及计算机可读存储介质 | |
CN112069384A (zh) | 一种埋点数据处理方法、服务器及可读存储介质 | |
CN114661823A (zh) | 数据同步的方法、装置、电子设备及可读存储介质 | |
CN110933145A (zh) | 异地调度方法、装置、设备及介质 | |
CN117687994A (zh) | 数据入库方法、装置、系统、设备及计算机介质 | |
US10872073B1 (en) | Lock-free updates to a data retention index | |
CN115658745A (zh) | 数据处理方法、装置、计算机设备和计算机可读存储介质 | |
CN114844771A (zh) | 微服务系统的监测方法、装置、存储介质、程序产品 | |
CN116628042A (zh) | 数据处理方法、装置、设备及介质 | |
CN110489208B (zh) | 虚拟机配置参数核查方法、系统、计算机设备和存储介质 | |
CN113760568A (zh) | 数据处理的方法和装置 | |
US20160378800A1 (en) | Aggregation of metrics data with fine granularity | |
US20230247111A1 (en) | Runtime module conversion | |
CN118410076A (zh) | 指标的查询方法、统计方法、装置、设备和存储介质 | |
CN117453825A (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 |