数据复制服务对象选择功能演化
数据复制服务(Data Replication Service,简称为DRS)是一种易用、稳定、高效,用于数据库在线迁移和数据库实时同步的云服务。在设置数据迁移或者同步的过程中,需要用户选择需要迁移或者同步的对象,这些对象包括数据库、表、视图、触发器、函数、schema等。在早期数据量较少时,界面可以流畅操作,但是随着用户业务需求不断扩大,在大数据量条件(1万以上)下会出现界面操作卡顿、卡死等较差用户体验,导致创建任务流程阻塞。为了解决这个问题,DRS服务通过持续优化,目前已很好支撑大数据量条件下的对象选择功能,本文主要介绍此功能优化演进的过程。
直接一次性展示
早期数据量不大时,对象数据是从后端一次性获取,前端按照数据库名分组展示,用户点击树组件数据库名前的‘+’,展开该数据库下的所有对象。在数据量不大的情况下这种方式没什么问题,但是在这个任务下有很多数据库,而且库里面有大量数据对象的情况下,一次展示所有对象就会变得卡顿,有时甚至页面直接卡死,需要进行优化。
异步加载对象
针对一次性加载对象的弊端,优化的第一步考虑使用异步方式加载对象。具体方法是页面初始化的时候只展示数据库,点击‘+’再异步请求接口获取该库下面的所有对象进行展示操作。这种方式一定程度缓解了页面卡顿问题,但是在一个数据库下有大量对象的时候(2万以上)界面依然卡顿严重。
对象搜索
在对象选择功能模块,大部分用户的使用场景是两种:
只选择数据库下的部分对象做迁移
整个数据库除了特定的对象不迁移,其余的全部迁移
在这种业务诉求上,我们考虑使用搜索功能。在界面上用户可以点击左边的搜索功能按钮,然后选择数据库,再输入该库下需要迁移对象名的关键字进行搜索,搜索出的结果作为用户想要迁移的对象。在右边的搜索功能按钮也可进行同样的操作,不过搜索结果是作为用户反选的不迁移的对象。这样是可以解决大数据量条件下业务阻塞的问题,但是这种方式只适用于特定场景,在用户需要选择特别多对象的时候就需要很多次搜索操作,用户体验较差。
引入第三方组件zTree
zTree 是一个依靠 jQuery 实现的多功能“树插件”,具有优异的性能、灵活的配置、多种功能的组合,采用延迟加载技术,上万节点轻松加载,同时浏览器兼容性很好。zTree解决了之前树组件在节点很多时展开、全选操作卡顿的问题,目前已支持最大节点数是5万条仍然未见明显卡顿,已基本满足常规业务需求。
数据导入
通过以上一系列功能优化,对象选择功能已基本可以满足业务需求,但是一些特定的大客户仍然有超大数据量(5万+)需要选择的诉求。因此数据导入功能是一个很好的补充,用户可以在界面上先下载一个导入数据的excel模板,按照模板的格式填写需要迁移的对象。将填写好的文件上传后作为需要迁移的对象,从而实现无需界面展示大数据量对象的前提下完成迁移对象的选择。
总结
数据复制服务的对象选择功能随着业务需求越来越复杂,经历异步加载、对象搜索、引入第三方zTree组件和支持对象导入等阶段不断演化。在面对大数据量对象需要选择时,提升了用户体验,避免流程阻塞,目前已很好支撑数据迁移和同步业务快速发展。
- 点赞
- 收藏
- 关注作者
评论(0)