goldgate简述(一)

初探 Oracle Golden Gate(一)
项目中可能要用到Golden Gate 来做为数据复制的工具,在 google上查询了一番,看了些文章,写下些心得。
这篇文章作为一个引子,希望自己能够坚持下来。
Oracle新收购的Golden Gate,主要强调数据的实时性,号称数据提取最快,对源端开销影响最小;
在Oracle官方网站上的Golden Date的介绍: http://www.oracle.com/goldengate/index.html
Golden Gate工作原理:在源 数据库端(支持各种数据库)提取日志文件以获得变化的发生,如Oralce数据库就是监控Redo Log或Archieve Log,将变化的数据写入一个本地的跟踪文件Trail File(可以想象成一个TXT文件),然后将记录加密、压缩后路由到目的端的跟踪文件Trail File,最后在目标端用 SQL写入目标数据库。在目标和源端的跟踪文件都有一个检查点记录最后一个成功的记录位置。说实话,Golden Gate的工作原理很简单,在国内ISV开发的应用中也有用完全类似的方法来实现功能,如银行业的前置机项目和电信的BOSS项目中导程控交换机的话单。
Golden Gate的亮点在在可以搭建异构平台间的复制,来提高容灾能力。可有多少公司愿意拿SQL/DB2来作为ORACLE的容灾数据库呢?如果这样看,Golden Gate的这个亮点是只是个空架子,不实用。至少不能落地。听闻以后Streams技术将被集成到GoldenGate中,Oracle开始在每一个知识点上都要做强,然后就是收钱。。。
到了11G的Active DataGuard可以同时应用Log,同时让数据库处于打开状态,如果是单纯的查询报表来说,那已经是满足要求了。那OGG的好处又在哪里呢?
道听途说:
goldengate不是根据rowid来确定正确的数据的,是根据table 的key来决定的,如果没有设定table的key,会把整行数据作为一个key来确定数据。
竞争对手:
Quest shareplex: shareplex是Quest公司出品的 软件,专门用来做Oracle数据库之间的同步,他的原理是通过解析Oracle的redo log,然后解析成SQL语句同步到其他的数据库中,它最大的好处在于,同步时目标数据库可以读写。
下载GOLDEN GATE 的网址:
http://edelivery.oracle.com
[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22934571/viewspace-1047432/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22934571/viewspace-1047432/

<think>嗯,用户想要个增删改查的简述。参考了站内引用里提到的Jfinal框架实现方式,其中特别强调了业务逻辑和SQL应该放在Service层。用户之前可能问过相关技术问题,但这次明确要求"简要"。 用户可能是想快速理解CRUD的基本实现模式,而不是深入某个框架。虽然引用里提到Jfinal,但用户没限定技术栈,应该给出通用方案。需要突出分层架构的重要性,因为引用里反复强调这点——看来用户对代码规范是有要求的。 分层架构必须讲清楚:Model只放数据定义,Service处理业务逻辑和SQL,Controller做路由。这样才符合引用中说的"好习惯"。每个层级用句话说明职责,再配上典型代码结构就很清晰了——不过用户要简述,代码示例得控制在三行以内。 突然想到用户可能混淆了概念,需要区分清楚:增删改查是数据操作的基础动作,而分层是架构设计。应该先解释四个操作的本质(Create/Read/Update/Delete),再说明如何通过分层优雅地实现。引用里吐槽"代码量少"其实暗示了健壮性的重要,可以提句参数校验,但简述中不必展开。 最后留的问题要引导架构思维:第个问题针对分层价值,第二个考察技术选型能力——毕竟不同框架实现差异很大。避免问具体语法,用户显然更关心设计层面。 </think>以下是增删改查(CRUD)功能的简要实现简述,采用分层架构设计: ### 实现分层架构 1. **Model层(数据模型)** 定义数据实体结构(如 `User.java`),对应数据库表字段 ```java public class User extends Model<User> { // 字段映射(省略getter/setter) } ``` 2. **Service层(业务逻辑)** **核心原则**:所有SQL操作与业务逻辑集中在此层[^1] ```java public class UserService { // 增 public void create(User user) { user.save(); } // 删 public void delete(int id) { User.dao.deleteById(id); } // 改 public void update(User user) { user.update(); } // 查 public User find(int id) { return User.dao.findById(id); } } ``` 3. **Controller层(请求处理)** 接收请求参数,调用Service层方法 ```java public class UserController { private UserService service = new UserService(); public void add() { User user = getModel(User.class); service.create(user); // 调用Service层 renderJson("result":"success"); } // 其他操作类似... } ``` ### 关键设计要点 1. **职责分离** - Model:仅负责数据定义 - Service:集中处理SQL和业务规则 - Controller:仅做请求路由和参数传递 (避免在Controller/Model中写SQL[^1]) 2. **安全提示** 实际开发需补充: - 参数校验(如空值检测) - 事务管理(多操作原子性) - SQL注入防护(预编译语句) 3. **扩展性优势** 该架构支持: - 独立替换数据库(只需修改Service) - 复用业务逻辑(多个Controller调用同Service) - 方便单元测试
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值