V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
111222333
V2EX  ›  数据库

CloudQuery 如何实现云上数据导入导出

  •  
  •   111222333 · 2021-07-22 15:01:49 +08:00 · 548 次点击
    这是一个创建于 1238 天前的主题,其中的信息可能已经有所发展或是发生改变。

    伴随着「数据安全法」的落地,数据安全又成为了时下的热门话题。我们通常说企业内部数据价值,显然并不是指躺在一个个静态 excel 表格中的数据。在数据量呈指数级上升、数据结构越来越复杂的背景下,催生出了「大数据」概念。海量数据的出现导致数据库的容量时刻经受巨大的考验,性能波动的同时催生出 DBA 越来越频繁的备份、导入、导出动作。

    虽然行业正在迎来云和大数据时代,我们日常使用的工具却仍然停留在 PC 机时代。在数据批量操作时,逐个单点工具慢慢无法应付逐渐增大的数据量和更加灵活的操作场景。因此 CloudQuery 在 1.4.0 版本提出了「 DTS 」概念,即「数据库工具箱服务」,旨在为数据管理员提供各类数据批量操作工具,大幅提升工作效率。本文我们将详细阐述 CloudQuery 「 DTS 」的第一款工具——「数据导入导出」

    以往 DBA 实现数据备份、数据导入导出通常需要借助现有桌面端工具,不仅成功率无法保证,在文件格式的选择上也难以做到两全。若导出格式为查看数据友好的 excel 格,则对数据量的要求较高,一旦导出数据量超出 excel 的承载,导出动作往往会走向失败;如果选择 sql 格式,虽然避开了数据量限制的问题,却面临着定位数据困难、特殊字段无法再次导入等问题。

    并且,市面上的导入导出工具通常不具备云端数据存储能力,导出文件只能存放在导出机本地,如果对数据有留存或共享需求,则需要借助其他各种云盘工具,但由于文件往往较大,所以上传下载都耗时较长,非常不灵活。

    此外,导入导出动作在企业内部属于高风险动作,一旦发生数据库账号信息泄漏或盗用事件会给企业数据安全带来极大威胁。开篇也提到数据通常是一个企业的立足根本,内部数据的泄漏往往比外部损害更加致命。

    所以 CloudQuery 对数据管理员的使用场景进行评估,结合业务实际需求,推出了独特的「导入导出」功能,主要具备以下特点:

    ① 导出文件云端存储

    平台提供个人文件夹功能,每个用户都属于自己的云端空间。所有导出数据保留在服务器上,真正做到跨客户端数据同步,让操作人员从不同客户端登录平台都可以随时获取远端数据,无需通过各种移动硬盘或云盘来进行数据共享。

    ② 工具使用权限纳入管控

    CloudQuery 将工具使用权限纳入平台权限管控体系,员工使用「导入导出」功能,需管理员对其开通对应权限,否则无法使用该工具。工具使用权限纳入平台权限管控体系贯彻了 CloudQuery 作为数据管控平台的安全原则,将用户在平台上的所有动作纳入管控体系,尽可能降低数据泄露风险,防止因账号泄露或盗用导致大批量数据泄露、拖库拖表事件发生。

    ③ 云原生形态,操作方式更灵活

    在企业内部 DBA 通常面临繁多复杂的数据交互场景,例如数据定时备份、生产到测试数据库的数据导入导出等等,但现有桌面端工具囿于 PC 的不灵活性会使得 DBA 在进行异端恢复时面临无数的麻烦。CloudQuery 提供的导出数据上云解除了数据操作人员与端强耦合,也提高了企业内部的数据可控性,导出文件仅会存储在用户的个人文件夹下,避免数据文件存储在硬盘中被其他人员窃取、传播导致数据泄露。同时,CloudQuery 支持的自定义参数功能可以帮助 DBA 灵活选择导出数据,例如 ignore=y full=y 等等。

    ④ 数据源特性支持

    考虑到各种复杂场景的数据交互,我们在设计导入导出模块时对各个数据源进行了针对性的特性支持,例如 mysql 的 mysqldump --single-transaction,在导出时将会话事务隔离级别改为 RR 隔离级别并开启一个事务,RR 隔离级别下,导出数据都是开启事务时的数据快照,保证了导出数据的一致性。

    而在开发语言的选择上,由于大部分导出动作需要与数据库终端命令直接交互,所以我们抛弃了市面上主流使用的 Java 转而采用 Go 语言进行代码开发,目的是将命令行工具 SaaS 化,接入各种数据库工具,方便扩展。DTS 的每个工具都拥有自己独立的描述文件,在后续的工具扩展道路上可以通过描述语言来定义新增的命令行工具。同样前端交互页面、后端工具、命令等等都可以通过描述文件实现。所有实时状态输出由 websocket 推送进行前端页面交互。

    还是以 mysqldump 举例:

    如上图所示,在新增工具支持时首先需要定义描述文件,当 DTS 服务启动时会自动将文件映射到动态类中,类之间互相独立,方便后续扩展。启动成功后,前端在渲染页面工具库时会自动对动态类进行检索,以服务端来进行动态页面表单渲染,选择指定任务后再根据用户所选以及自定义参数转换为操作命令。当用户请求提交至服务端执行时,服务端会屏蔽工具之间差异性,通过参数不同进行区别处理并动态生成数据库命令,随后以异步方式提交至数据库执行,执行过程中会进行实时日志信息以及执行状态收集,最终以 ws 形式进行结果反馈以及日志输出,同时会配合持久层缓存方便用户执行后进行日志二次下载查看。

    以上场景中我们可以看到 CloudQuery 的工具支持能力已经跨越了以往 PC 时代的桌面端限制。伴随云端服务器建设的逐步完善,DTS 中会集成更多数据操作工具,在提升工具性能的同时更加贴近企业内部完整数据操作场景,从不同使用人员的角度出发构建对应的操作路径,以直观、便捷的方式重新构造 DBA 一体化智能工具箱。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2669 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 14:40 · PVG 22:40 · LAX 06:40 · JFK 09:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.