千万级oracle数据表定时同步到mysql表的方案

news2024/11/26 12:29:22

1:业务背景

第三方系统提供了一张oracle视图,该视图有六千多万条数据,后续每月会产生三百万条数据的数据。需要每天将数据定时同步到自己系统的mysql表中。

(注:我们系统与外界系统访问都要经过一个中间系统的跳转才行。流程如下: 我们系统A发起请求  ----> 进入网关系统跳转  --->获得第三方oracle的数据)。

2:解决思路

2.1:通过数据库管理软件先把历史数据导出为excel表格数据

2.2:通过代码层面采用odbc驱动进行每天的数据同步。

3:该方案遇见的问题

3.1:历史的数据处理中oracle与mysql通过sql导入导出不兼容。

解决方法:将数据导出为excel格式,然后通过excel导入数据到mysql)

3.2:新增大量数据通过代码每天同步时会不会导致内存溢出。

解决方法:采用分批同步数据来保证服务器内存不会溢出,先获取新增的数据总量,然后通过手动分页进行控制每次同步的数据量。

3.3:数据同步过程中会不会出现重复同步以及遗漏同步。

解决方法:应对重复数据可以采用给mysql表创建一个唯一索引来进行限制重复数据。应对遗漏的数据可以手写一个预留接口通过传递日期来进行随时同步遗漏数据的日期。也可以采用定时任务每天多次调用接口同步数据提高数据的准确性(因为有唯一索引所以多次同步 不会导致数据重复,但会消耗服务器资源)。

4:详细实现步骤

4.1导出历史数据

先通过数据库管理软件把oracle的数据全部查询出来。然后点击软件“导出结果”--->导出当前的结果。

 

 

 此处我选择的导出数据为csv格式,该格式进行大数据处理相对速度要快一点。导出oracle历史数据后,把csv文件导入到mysql的数据表中。此时历史数据就解决了。

4.2:每天新增的几百万数据处理

 1:通过定时任务注解@Scheduled实现自动调用同步接口。

2:通过http方法来同步调用网关系统获取第三方数据保证每次调用都是同步实现。

3:网关系统通过oracle.jdbc.driver.OracleDriver驱动远程调用第三方oracle数据。

 

4:同步数据时,先调用oracle来获取当天需要新增的数据总量,然后通过for循环+分页来批量同步数据防止内存溢出。同步过程出现异常可采取手动补救措施进行二次同步。或采用多次定时任务来保证数据准确性减少人为干预次数。

5:数据同步时,由于mysql对处理大数据量有瓶颈,所以建表时需要慎重考虑每个字段的存储类型来减少存储空间,对查询需求建立合理的索引来保证查询速度。

如何建立正确的索引可参考我的另一篇博客:

https://blog.csdn.net/wang5701071/article/details/108797859

此时oracle数据表定时同步到mysql表已经实现。但后续还引发了一些思考。

5:后续思考

1:目前数据量已经有近七千万条数据,按每月三百万的数据来处理。一年时间就将达到上亿的数据量,而mysql的单表数据到一亿就达到了处理瓶颈。所以该方案后续可能还要采用分表处理。按月或者按年来进行分表存储。

2:历史数据中如果出现了修改,此时该方案只能感知到未同步的数据,而无法感知已同步过的历史数据的变动。所以该方案并不适合历史数据频繁修改的场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/585807.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

看我0~1精通自动化测试实战,暴涨18K...

前言 开头,先说一下现主流的接口自动化测试框架配套,也是很多企业在使用的。 接口自动化测试:PythonrequestspytestyamlalluerJenkins; Python自动化测试:7天练完这60个实战项目,年薪过35w。 除开测试脚本…

基于秒杀-----分布式锁----lua脚本

基于商品显示秒杀-一人一单业务_xzm_的博客-CSDN博客改进 分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁 分布式锁的五个基本要求:多进程可见,互斥,高可用,高性能,安全性 三种实现方式 redi…

《斯坦福数据挖掘教程·第三版》读书笔记(英文版) Chapter 9 Recommendation Systems

来源:《斯坦福数据挖掘教程第三版》对应的公开英文书和PPT Chapter 9 Recommendation SystemsRecommendation systems use a number of different technologies. We can classify these systems into two broad groups. Content-based systems examine properties…

STL 函数对象,即仿函数

目录 1.函数对象 1.1函数对象的概念 1.2函数对象的使用 2.谓词 2.1谓词概念 2.2一元谓词 2.3二元谓词 3.内建函数对象 3.1内建函数对象的意义 3.2算术仿函数 3.3关系仿函数 3.4逻辑仿函数 1.函数对象 1.1函数对象的概念 1.2函数对象的使用 #include<iostream>…

文心一言 VS 讯飞星火 VS chatgpt (25)-- 算法导论4.2 7题

七、设计算法&#xff0c;仅使用三次实数乘法即可完成复数 abi和cdi 相乘。算法需接收a、b、c和d 为输入&#xff0c;分别生成实部 ac-bd 和虚部adbc。 文心一言&#xff1a; 可以使用如下算法来计算复数 abi 和 cdi 的积&#xff0c;且只需进行三次实数乘法&#xff1a; 1.…

Slower使用教程完整版本【2023年更新】

Slower软件的版本&#xff0c;目前市面上有多种。 如果你指的是Slower器加速软件的话&#xff0c;可以看下面的教程&#xff1a; Slower是一款很不错的安全国际互联网工具&#xff0c;广泛用于外贸与留学生行业&#xff0c;设计师行业与科研行业。但是&#xff0c;因为使用过…

注意:腾讯云轻量应用服务器十大限制说明

腾讯云轻量应用服务器相对于云服务器CVM是有一些限制的&#xff0c;比如轻量服务器不支持更换内网IP地址&#xff0c;不支持自定义私有网络VPC&#xff0c;内网连通性方面也有限制&#xff0c;轻量不支持CPU内存、带宽或系统盘单独升级&#xff0c;只能整个套餐整体升级&#x…

IO系统(计算机组成原理)

IO系统这一章主要讲的就是IO的四种控制方式&#xff0c;首先对这四种方式进行一个简单介绍&#xff0c;下面再对着四种方式分别进行介绍。 程序查询方式&#xff1a;由cpu通过程序不断查询IO设备是否已经做好准备&#xff0c;从而控制IO设备于主机进行信息交换 程序中断方式&am…

python自动化测试面试题,25K入职字节测试岗

问&#xff1a; http 和 https的区别   答&#xff1a; https需要申请ssl证书&#xff0c;https是超文本传输协议&#xff0c;信息是明文传输&#xff0c;https则是具有安全性的ssl加密传输协议http和https使用的是不同的链接方式&#xff0c;用的端口也不一样&#xff0c;前…

《深入理解计算机系统》读书笔记1

1.1信息就是位上下文 只由ASCLL字符构成的文件称为文本文件&#xff0c;所有其他文件都称为二进制文件。 系统中的所有的信息都由一串比特表示。区分不同数据对象的唯一方法是读到这些数据对象时的上下文。 1.2程序被其他程序翻译成不同的格式 预编译&#xff0c;编译&#xf…

【C++】类的访问权限

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01;时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、缘起 2、示例代码 3、总结 1、缘起 在 C 中&#xff0c;类在设计时&#xff0c;可以把 属性 和 行为 放在不同的权限下加以…

智警杯赛前学习1.1---excel基本操作

修改默认设置 步骤一&#xff1a;打开“Excel选项”窗口&#xff0c;打开“文件”菜单&#xff0c;选择“选项”标签 步骤二&#xff1a;在“Excel选项”窗口中&#xff0c;选择“常规与保存”标签&#xff0c;在“常规与保存”标签中&#xff0c;可以修改录入数据时的默认字体…

【群智能算法改进】一种改进的沙丘猫群优化算法 改进沙丘猫群算法 改进SCSO[1]【Matlab代码#34】

文章目录 【获取资源请见文章第5节&#xff1a;资源获取】1. 原始沙丘猫群优化算法2. 改进沙丘猫群算法2.1 Logistic混沌映射种群初始化2.2 透镜成像折射反向学习策略2.3 动态因子2.4 黄金正弦策略 3. 部分代码展示4. 仿真结果展示5. 资源获取 【获取资源请见文章第5节&#xf…

国际标准 ISO 11898 解读

从 1993 第一个版 CAN 国际标准&#xff08;ISO 11898:1993 和 ISO 11519-2&#xff09;发布至今&#xff0c;ISO 11898 逐渐被分割整合成了相互独立的 6 个部分。分别以 Part 1 ~ Part 6 来标识。在旧版本&#xff08;2003年之前&#xff09;中 ISO 11898 是通信速度为 5kbps…

二维笛卡尔坐标系下的角的概念

文章目录 参考环境笛卡尔坐标系二维笛卡尔坐标系三维笛卡尔坐标系 任意角角的静态定义角的动态定义二维笛卡尔坐标系下角的概念方向正角、负角及零角 象限角象限象限角 终边相同角圆心角终边相同角 参考 项目描述搜索引擎Google 、Bing百度百科首页韩庆波正负角佟大大还是ETT【…

前端学习---Vue(6)路由

一、前端路由的概念和原理 Hash地址与组件的对应关系。 Hash:url中#之后的都是Hash地址 location.hash 1.1 前端路由的工作方式 ① 用户点击了页面上的路由链接 ② 导致了 URL 地址栏中的 Hash 值发生了变化 ③ 前端路由监听了到 Hash 地址的变化 ④ 前端路由把当前 Hash…

doris分区、join

动态分区和临时分区 动态分区 旨在对表级别的分区实现生命周期管理(TTL)&#xff0c;减少用户的使用负担。 目前实现了动态添加分区及动态删除分区的功能。只支持 Range 分区。原理 在某些使用场景下&#xff0c;用户会将表按照天进行分区划分&#xff0c;每天定时执行例行任…

tidyverse中filter行筛选时缺失值存在的一个坑

大家好&#xff0c;我是邓飞&#xff0c;好久没有更新博客了&#xff0c;是因为好久没有进步了。 之前我认为鲁迅说的对&#xff0c;他在《野草》中写道&#xff1a;“当我沉默着的时候&#xff0c;我觉得充实&#xff1b;我将开口&#xff0c;同时感到空虚”。现在确切的情况…

msvcr90.dll丢失的解决方法

在使用计算机的过程中&#xff0c;我们时常会遇到一些问题&#xff0c;比如应用程序无法正常启动&#xff0c;提示msvcr90.dll文件丢失&#xff0c;这个问题困扰了许多计算机用户。那么&#xff0c;怎么才能解决这个问题呢&#xff1f; 首先&#xff0c;让我们先了解一下msvcr…

c语言编程练习题:7-65 字符串替换

#include <stdio.h>int main() {char c;while (scanf("%c", &c) 1 && c ! \n) {if (c > A && c < Z) {c Z - (c - A);}printf("%c", c);}return 0; }代码来自&#xff1a;https://yunjinqi.top/article/190