数据复制服务对象选择功能演化

举报
前端小盆友 发表于 2020/06/29 09:57:47 2020/06/29
【摘要】 数据复制服务(Data Replication Service,简称为DRS)是一种易用、稳定、高效,用于数据库在线迁移和数据库实时同步的云服务。在设置数据迁移或者同步的过程中,需要用户选择需要迁移或者同步的对象,这些对象包括数据库、表、视图、触发器、函数、schema等。在早期数据量较少时,界面可以流畅操作,但是随着用户业务需求不断扩大,在大数据量条件(1万以上)下会出现界面操作卡顿、卡死...

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

直接一次性展示

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

异步加载对象

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

对象搜索

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

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

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

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

引入第三方组件zTree

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

数据导入

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

总结

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

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

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。