建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
093454tjmehwgqrskef4if.jpg 云数据库夏日特惠

前端小盆友

发帖: 5粉丝: 0

级别 : 新手上路

发消息 + 关注

发表于2020-6-29 09:54:53 369 2
直达本楼层的链接
楼主
显示全部楼层
[技术分享] 数据复制服务对象选择功能演化

数据复制服务(Data Replication Service,简称为DRS)是一种易用、稳定、高效,用于数据库在线迁移和数据库实时同步的云服务。在设置数据迁移或者同步的过程中,需要用户选择需要迁移或者同步的对象,这些对象包括数据库、表、视图、触发器、函数、schema等。在早期数据量较少时,界面可以流畅操作,但是随着用户业务需求不断扩大,在大数据量条件(1万以上)下会出现界面操作卡顿、卡死等较差用户体验,导致创建任务流程阻塞。为了解决这个问题,DRS服务通过持续优化,目前已很好支撑大数据量条件下的对象选择功能,本文主要介绍此功能优化演进的过程。

直接一次性展示

早期数据量不大时,对象数据是从后端一次性获取,前端按照数据库名分组展示,用户点击树组件数据库名前的‘+’,展开该数据库下的所有对象。在数据量不大的情况下这种方式没什么问题,但是在这个任务下有很多数据库,而且库里面有大量数据对象的情况下,一次展示所有对象就会变得卡顿,有时甚至页面直接卡死,需要进行优化。

异步加载对象

针对一次性加载对象的弊端,优化的第一步考虑使用异步方式加载对象。具体方法是页面初始化的时候只展示数据库,点击‘+’再异步请求接口获取该库下面的所有对象进行展示操作。这种方式一定程度缓解了页面卡顿问题,但是在一个数据库下有大量对象的时候(2万以上)界面依然卡顿严重。

对象搜索

在对象选择功能模块,大部分用户的使用场景是两种:

l  只选择数据库下的部分对象做迁移

l  整个数据库除了特定的对象不迁移,其余的全部迁移

在这种业务诉求上,我们考虑使用搜索功能。在界面上用户可以点击左边的搜索功能按钮,然后选择数据库,再输入该库下需要迁移对象名的关键字进行搜索,搜索出的结果作为用户想要迁移的对象。在右边的搜索功能按钮也可进行同样的操作,不过搜索结果是作为用户反选的不迁移的对象。这样是可以解决大数据量条件下业务阻塞的问题,但是这种方式只适用于特定场景,在用户需要选择特别多对象的时候就需要很多次搜索操作,用户体验较差。

引入第三方组件zTree

zTree 是一个依靠 jQuery 实现的多功能“树插件”,具有优异的性能、灵活的配置、多种功能的组合,采用延迟加载技术,上万节点轻松加载,同时浏览器兼容性很好。zTree解决了之前树组件在节点很多时展开、全选操作卡顿的问题,目前已支持最大节点数是5万条仍然未见明显卡顿,已基本满足常规业务需求。

数据导入

通过以上一系列功能优化,对象选择功能已基本可以满足业务需求,但是一些特定的大客户仍然有超大数据量(5+)需要选择的诉求。因此数据导入功能是一个很好的补充,用户可以在界面上先下载一个导入数据的excel模板,按照模板的格式填写需要迁移的对象。将填写好的文件上传后作为需要迁移的对象,从而实现无需界面展示大数据量对象的前提下完成迁移对象的选择。

总结

数据复制服务的对象选择功能随着业务需求越来越复杂,经历异步加载、对象搜索、引入第三方zTree组件和支持对象导入等阶段不断演化。在面对大数据量对象需要选择时,提升了用户体验,避免流程阻塞,目前已很好支撑数据迁移和同步业务快速发展。

数据库 DRS

举报
分享

分享文章到朋友圈

分享文章到微博

社会主义的一块砖

发帖: 77粉丝: 13

级别 : 版主

发消息 + 关注

发表于2020-6-29 10:08:20
直达本楼层的链接
沙发
显示全部楼层

学习了,感谢分享~~

点赞 评论 引用 举报

风起云涌1

发帖: 138粉丝: 5

级别 : 外部版主

发消息 + 关注

发表于7 天前
直达本楼层的链接
板凳
显示全部楼层

感谢分享

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册