Java实现数据同步,并且判断操作是新增、修改还是删除

问题描述

筒子们,你们有谁做过这个吗?连接客户的Oracle数据库,同步他们的数据,同步更新到自己公司的数据库,并且判断操作的数据是新增、修改还是删除

解决方案

解决方案二:
亲们求解呀~
解决方案三:
1.数据量有多大?2.要求的实时性?
解决方案四:
数据库新建一个DBNotify表字段:tableName、propertyName、value、operator分别是表名、属性名、操作的值、操作类型(增删改自己定义)公司这边根据这个表去同步客户的数据库公司和客户之间的交互以及同步更新后的业务逻辑需要商量好或者也可以用一些中间件传递消息
解决方案五:
引用3楼u012171905的回复:

数据库新建一个DBNotify表字段:tableName、propertyName、value、operator分别是表名、属性名、操作的值、操作类型(增删改自己定义)公司这边根据这个表去同步客户的数据库公司和客户之间的交互以及同步更新后的业务逻辑需要商量好或者也可以用一些中间件传递消息

纯属脑补
解决方案六:
你要拿到他的数据结构,沟通是否有自增的字段,然后定时同步就行了,修改还是删除这个你怎么能知道,得问客户啊
解决方案七:
恩,数据结构会给我,但是是新增、修改还是删除需要我这边程序判断,通过查询客户那边的数据和我们库里面的现有数据对比,唉就是单点登录的延伸
解决方案八:
数据量应该挺大的,性能方面还有要求、、、
解决方案九:
引用1楼one_oragle的回复:

亲们求解呀~

什么是要求的实时性?要求每天凌晨开始同步
解决方案十:
他们建立一个操作记录表,然后获取操作记录去更新你们的表.
解决方案十一:
他们的数据中有最后更新时间之类的字段就很容易做了,新增的和删除的可以直接通过minus主键字段来判断,修改的数据根据最后更新时间来判断。如果没有最后更新时间的话,就很慢了,需要每条数据都需要去判断。
解决方案十二:
引用9楼OOCXC的回复:

他们建立一个操作记录表,然后获取操作记录去更新你们的表.

客户不会这么好的。。。
解决方案十三:
1.要是你们用etl,据我所知各种etl工具都有这种日志功能,随便搞搞就行。2.为你的表建触发器,根据创建、更新、删除做不同的操作。为何要比较呢,触发器就会帮你判断对数据的操作。
解决方案十四:
再附上触发器的例子,这里就写个创建的,其他的自己搜搜,看你这需求用这种方式足以。逐行插入test表之前触发:CREATEORREPLACETRIGGERadd8hourBEFOREINSERTONtestFOREACHROWDECLAREBEGIN--向日志表里插入,或者其他什么操作随你高兴END;

时间: 2024-09-20 00:31:26

Java实现数据同步,并且判断操作是新增、修改还是删除的相关文章

线程-java缓存数据同步问题

问题描述 java缓存数据同步问题 最近在做一个简单的java缓存,线程的主要功能是:查询缓存中是否存在该值,存在则返回,不存在则计算,计算完了将该键值对放到Cache里面.但是这里有个数据同步的问题,可能会有重复计算.即线程1发现不存在该值,去计算,线程2访问同一数据随后也发现不存在该值,去计算.这样就会出现重复计算,请问有没啥办法避免.谢谢大家了! public void run() { Long result = null; InputMsg msg = new InputMsg(num,

触发器记录表某一个字段数据变化的日志 包括插入insert 修改update 删除delete 操作

本文参考:http://www.cnblogs.com/lyhabc/articles/3236985.html   --触发器记录表某一个字段数据变化的日志 包括插入insert 修改update 删除delete 操作 2013-6-18-- 建测试表USE [pratice]GOcreate table sto(id int not null,    -- 主键字段de datetime         -- 被跟踪的字段constraint pk_sto primary key(id))

MSSQL监控数据库的DDL操作(创建,修改,删除存储过程,创建,修改,删除表等)_MsSql

前言: 有时候,一个数据库有多个帐号,包括数据库管理员,开发人员,运维支撑人员等,可能有很多帐号都有比较大的权限,例如DDL操作权限(创建,修改,删除存储过程,创建,修改,删除表等),账户多了,管理起来就会相当麻烦,容易产生混乱,如果数据库管理员不监控数据库架构变更的话,就不知道谁对数据库架构做了啥改动(此处改动仅仅只DDL操作),尤其有时候,有些开发人员可能不按规章制度办事,绕过或忘了通知发布人员或DBA,直接去生产机做一些DDL操作,那么我们就需要对数据库架构某些更改的事件进行监控,如果能够

Win8系统电脑PIN密码操作?(创建,修改,删除)

创建PIN密码   在Windows8的系统中,可以使用PIN作为开机密码登录,PIN是使用4位数密码登录到这台电脑的一种方便快捷的方式,并没有错误输入次数的限制,若需要设置PIN码,电脑需要已经设置开机密码,否则该功能无法使用.下面为您介绍一下创建PIN密码的方法: 1.在桌面模式下,按键盘的[Windows]键+[C]键调用出超级菜单. 2.在超级菜单中,选择[设置]. 3.选择右下角的[更改电脑设置]. 4.在“电脑设置”中选择[用户]. 5.点击[创建PIN]. 6.根据提示输入您当前的

Java多线程初学者指南(9):为什么要进行数据同步

Java中的变量分为两类:局部变量和类变量.局部变量是指在方法内定义的变量,如在run方法中定义的变量.对于这些变量来说,并不存在线程之间共享的问题.因此,它们不需要进行数据同步.类变量是在类中定义的变量,作用域是整个类.这类变量可以被多个线程共享.因此,我们需要对这类变量进行数据同步. 数据同步就是指在同一时间,只能由一个线程来访问被同步的类变量,当前线程访问完这些变量后,其他线程才能继续访问.这里说的访问是指有写操作的访问,如果所有访问类变量的线程都是读操作,一般是不需要数据同步的. 那么如

数据同步-java多线程数据库同步问题

问题描述 java多线程数据库同步问题 从一个数据库抽取数据 放到自己数据库里面 中间回走数据处理 和判断 用java代码实现目前找到好的方法 多线程操作效率还是很低 一点思路没有 有这方面大神吗 解决方案 可以利用数据库之间的同步来做呀!简单又实用 http://jingyan.baidu.com/article/19192ad815ad0ee53e5707c9.html

java多线程编程之为什么要进行数据同步_java

Java中的变量分为两类:局部变量和类变量.局部变量是指在方法内定义的变量,如在run方法中定义的变量.对于这些变量来说,并不存在线程之间共享的问题.因此,它们不需要进行数据同步.类变量是在类中定义的变量,作用域是整个类.这类变量可以被多个线程共享.因此,我们需要对这类变量进行数据同步.数据同步就是指在同一时间,只能由一个线程来访问被同步的类变量,当前线程访问完这些变量后,其他线程才能继续访问.这里说的访问是指有写操作的访问,如果所有访问类变量的线程都是读操作,一般是不需要数据同步的.那么如果不

Java swing中Jlist怎么判断里面是否有数据?谢谢

问题描述 Java swing中Jlist怎么判断里面是否有数据?谢谢 因为布局需要,所有我在开始就new了: private DefaultListModel<String> listModel = new DefaultListModel<>();private JList<String> buttonList = new JList<>(listModel); 中间是监听数字按钮,并动态的将按钮上的值放入buttonList. 最后要监听一个MC按钮,

socket-求助:SSDB的主从数据同步时,即使没有任何写操作主从节点也会频繁地进行数据交互

问题描述 求助:SSDB的主从数据同步时,即使没有任何写操作主从节点也会频繁地进行数据交互 我安装了SSDB后,分别启动了master和slave, 然后通过Debug日志,发现在刚启动copy完成后,就开始不停地重复进行sync, 就对已有的数据进行循环sync, SSDB理念不是只有在write的时候,才会进行sync同步吗? 经过测试,在write的时候,也会进行sync同步,但是我是很奇怪为什么不执行write的时候,主从socket还一直在进行同步, 求大神解答. 不甚感激 解决方案