一、数据采集
二、数据同步
2.1、数据同步方式:
数据同步的三种方式:直连方式、数据文件同步、数据库日志解析方式
关系型数据库的结构化数据:MYSQL、Oracle、DB2、SQL Server
非关系型数据库的非结构化数据(数据库表形式存储):OceanBase、HBase、MongoDB
文件系统的结构化和非结构化数据(文件形式存储):阿里云对象存储OSS、文件存储NAS
2.1.1、直连同步
通过规范接口API(ODBC/JDBC等)和基于动态链接库的方式直连业务库
适合:适合操作型业务系统数据同步
优点:配置简单、方便
缺点:对源系统性能影响 -- 可考虑主备的方式从备库抽取,但当数据量很大时,抽取性能很差,不适合从业务库到数仓的数据同步
主备抽取:
2.1.2、数据文件同步
数据文件通过约定好的文件编码、格式、大小等将源库生成的数据的文本文件,通过专门的文件服务器(如FTP服务器),加载到目标数据库系统
适合:数据源有多个异构数据库系统(MYSQL、Oracle、SQL Server、DB2等),互联网的日志类数据通常是文本文件,也适合
优点:适合多个数据源
缺点:文件服务器上传下载易丢包,通常在上传时候伴随一份校验文件,记录数据文件数据量和大小。同时也可以在上传下载时候进行压缩,减少传输量
2.1.3、数据库日志解析(主流)
大多主流库实现了日志文件系统进行系统恢复、主从同步,所以可以通过解析日志文件进行获取数据变更,达到增量数据同步需求。
以Orcale为例,通过源系统进程,读取归档日志文件收集变化数据信息,解析到对应目标数据文件中(这种读操作在操作系统层面,不影响源系统性能---在机器层面)。然后通过网络协议,实现源系统和目标系统之间数据文件传输(相关进程保证数据文件接受和网络包的顺序,童工网络传输冗余,确保文件完整性)。数据到目标系统后可通过数据加载模块完成数据导入,完成同步。
适用:绝大部分实现了日志文件系统的主流数据库,用于绝大多数业务库到数仓增量同步
优点:效率高、性能好,达到了实时和准实时同步能力(ms级别延迟),对源库性能影响很小
缺点:数据延迟(例:业务库做补录会导致数据增量超出系统处理峰值,导致数据延迟);
投入较大,需要部署一个实时抽取任务抽取数据同步;
数据飘移和遗漏:“零点飘移”问题
注:日志抽取获得所有数据记录变更(增-I、删-D、改-U),所以我们需要根据主键去重按照时间倒排去获取最后状态变化情况
1、不过滤删除。不管是否是删除操作,都获取同一主键最后的变更记录
2、过滤最后一条删除记录。如果同一主键最后一跳变更记录是删除操作,就取倒数第二条变更记录
3、过滤删除和之前的操作。如果同一主键的变更记录中有删除操作,则根据操作时间将删除操作对应的记录和之前的记录都过滤掉