-
Notifications
You must be signed in to change notification settings - Fork 959
DevDesign
agapple edited this page Mar 4, 2016
·
1 revision
业界常用的全量方案有:
- 数据文件导入/导出,比如EXPDP/IMPDP, mysqldump/source, xtrabackup等
- ETL数据导入/导出,主要原理为使用JDBC数据查询接口
yugong在项目设计之初考虑去IOE数据迁移的灵活性和自定义能力,最终选择的方案为基于JDBC接口遍历数据.
相比于数据文件导入/导出,其优点:
- 灵活数据同步
- 支持异构数据
- 实现相对简单
缺点:
- 全量拉取需要配合增量使用,会有部分数据重复同步
- 性能和影响,一次性全量拉取,如果持续时间过长,如果此时数据库变更过多,会导致segment过大
业界常用的增量方案有:
- 基于时间戳定时dump
- oracle日志文件,比如LogMiner,OGG
- oracle CDC(Change Data Capture)
- oracle trigger机制,比如DataBus , SymmetricDS
- oracle 物化视图(materialized view)
- ...
yugong在项目设计之初考虑去IOE数据迁移的灵活性,支持多种oracle版本,同时为降低DBA的运维成本,最终选择oracle物化视图作为我们的增量方案.
相比于其他,物化视图方案其优点:
- 原理简单,方便理解和学习,用户可以理解为一种固化的简易trigger模式
- 运维简单,DBA一次账户授权后,程序可按需create一张物化视图表即可完成增量订阅
- 相对透明,不需要像时间戳sql扫描依赖数据库表设计,也不需要关注oracle版本和服务器存储等
缺点:
- 性能和影响,类似于trigger机制会对源库的数据写入造成一定的性能影响.