发福利!发福利!发福利!杭州云栖大会视频地址:
本文内容在企业级数据库最佳实践(上半场)中。
DevOps已不再陌生,但目前业界主要集中在开发与运维的高效协作和快速发布上,而作为企业核心资产的数据库,其结构设计、SQL审核、变更发布已成为企业效率提升的主要瓶颈,这篇文章将详细介绍阿里在数据库DevOps上遇到的挑战以及解决方案。
1、阿里数据库DevOps是什么
一句话定义: 阿里数据库DevOps是以数据库产品为核心,促进数据库研发自助化,提升研发效率,同时保证员工数据库访问安全及数据库高性能。
阿里数据库DevOps由3款产品组成,分别是阿里企业级数据管理服务iDB、数据库智能优化服务CloudDBA、阿里企业级数据库管控服务DBPaaS,本文会重点介绍阿里企业级数据管理服务iDB。
2、我们的挑战
近10年,阿里研发人数从几百人扩展到几万人,与此同时,不断对数据库服务提出挑战。回顾阿里数据库服务发展历程,包含以下几个阶段:
· 2010年前,数据库账号直接开放给开发,*查询数据
· 2010年,为了解决数据查询安全问题,全面回收数据库账号,只能DBA查询数据
· 2011年,为了解决数据查询低效问题,iDB1.0发布,开发在WEB平台上自助查询数据,但此时数据库变更尚需邮件提交给DBA
· 2012年,为了解决数据库变更沟通问题,iDB2.0发布,数据库变更可以在线提交汇总,同时结构设计规范也可以自动应用到开发数据库设计中,但此时数据库变更还只能DBA执行
· 2013年,为了解决数据库变更低效问题,iDB3.0发布,开发可以自助执行数据库变更
· 2014年,为了满足阿里云用户对数据库管理安全、效率的需求,阿里云数据管理DMS发布,定位于个人数据管理云服务
· 2015年,为了解决阿里业务暴涨DBA支撑瓶颈问题,iDB4.0发布,第一次做到数据库研发全自助
· 2016年,为了解决业务数据库性能问题,数据库智能优化服务CloudDBA发布,定位于用户身边的数据库专家
· 2017年,为了将多年实践/经验/沉淀分享给更多人,阿里云数据管理DMS企业版(iDB对应云上产品)发布,提供完整的数据库研发全自助流程、企业级数据库安全管控等服务
今天,我们(准确说是我们的产品)要解决阿里20,000开发人员高效的结构设计、SQL审核和变更发布,要解决每周上万条SQL发布无慢SQL漏网,要解决每周百万次数据查询分析的权限控制和操作审计,因此在效率、性能和安全上,阿里数据库DevOps正面临巨大挑战。
3、解决方案
当你感觉痛苦的时候,正是你成长的时候,阿里数据库DevOps应运而生。
- 效率
数据库效率最终衡量体现在发布效率,而在发布前面还有结构设计、SQL设计、测试数据构建、库表同步、结构审核、SQL审核等工作,数据库发布自身也会细分成结构变更、数据订正和分库分表发布等。
阿里数据库DevOps在效率上的解决方案:全自助的数据库研发流程,覆盖上述数据库发布涉及的全部工作,如30+结构设计规范自动应用到开发结构设计中、多人设计冲突检测和DDL溯源、多环境的库表同步、百万级测试数据自助生成等等,最终让DBA无需参与具体项目的设计和评审,将主要精力投入到对业务架构理解,更加全局的看待业务和数据库的关系,促进企业效率最优。
效率解决方案涉及功能太多,这里仅以分库分表发布为例,希望大家能对全自助的数据库研发流程有所了解:
如果选择MySQL作为数据存储,随着业务增长,大多数企业都会遇到单表容量瓶颈,其中大表DDL性能问题最为严重。业界普遍解法是将单表拆成分表,分库分表使得容量不再是瓶颈,但给维护管理带来很大挑战。
面对1024、4096个分表,如何加字段就是首要解决问题,经常遇到执行过快导致性能卡顿、一次性全量执行风险不可控、异常任务中断等一系列问题,最终让分库分表方案实际效果大打折扣。
阿里数据库DevOps在物理分库分表基础上封装出逻辑库、逻辑表,所有DDL都在逻辑库、逻辑表上操作,而在物理分库分表上的具体执行动作由产品来保证,目前可以做到数据库锁检测、实例/库级并行、自动灰度、执行限速、任务暂停重试等细粒度控制。
- 性能
数据库性能,抛开数据库类型/版本选择、内核优化、硬件选型等方面,我们看到对业务感知最明显、最关注就是SQL(准确说是慢SQL),如何从根源上解决慢SQL,而不是每次出问题时救火,是阿里数据库DevOps一直努力的方向。
在一条SQL被设计出来,到其成为慢SQL前,它需要通过审核,这时开发提交SQL审核后,会自动抽取SVN/GIT代码中SQL并识别变化部分,这时阿里数据库智能优化服务CloudDBA会对有变化的SQL进行诊断,先基于规则对select *、动态SQL等给出审核建议,然后对通过规则校验的SQL进行优化,给出索引建议,整个SQL审核流程由产品完成,开发最终会看到SQL审核报告,包含SQL改写建议、索引建议。
在大多数业务场景中,一次性优化相对容易些,如何做到持续优化?这就需要我们的优化流程能做到闭环,自动打通从采集->分析->建议->采纳->跟踪->评估整条链路,而不是靠DBA人肉串联。
数据库性能话题很大,比如上面提到的SQL上线前审核和优化闭环,还有运行中SQL优化、空间优化、锁优化、全量SQL、性能成本度量等等方面,我这里不做展开,大家可以在阿里云数据管理DMS数据库优化服务(入口:DMS登录数据库-性能)找到你需要的答案。
- 安全
在数据库领域,可以说数据安全是一切的基础。而大多数企业数据库都会存在以下几种数据安全风险:
· 应用访问
· 主机访问
· 数据仓库
· 备份
· 员工访问
在企业初期,往往会关注在前四种的安全防护上,而忽略人的因素,但随着员工增多、角色增多,员工访问数据安全风险日益突显,而员工访问数据安全正是数据库DevOps要解决的重要课题。
阿里数据库DevOps从以下5大方面解决员工访问数据安全:
· 查询管控
· 变更管控
· 权限管控
· 数据分级
· 安全审计
每个大方面又细化出很多功能点,如权限管控就包含库/表/列细粒度控制、物理库/物理表/逻辑库/逻辑表权限、查询/导出/变更权限分类、到期提醒回收等功能点。
4、云上:数据管理DMS
上面介绍的阿里数据库DevOps,对应到云上产品:阿里云数据管理DMS。
数据管理DMS产品架构如下:
从产品架构图上可知, 数据管理DMS提供了企业版、高级版、免费版和移动版。
其中,阿里云数据管理DMS企业版为每个企业构建独有的数据库管理系统,包含每个企业独有的员工信息、流程、规则和元数据,如果企业研发人数大于20人,强烈推荐使用。
如果你是个人、创业团队或者小企业用户,我们推荐 阿里云数据管理DMS高级版,让你访问云端数据更安全。
另外,数据管理DMS最近还添加了新成员:移动版,一期支持云端数据管理,后续还会支持数据库诊断优化、数据库研发流程以及自建IDC数据库。
5、期待你的加入
10年走来,我们已经看到企业级数据库服务的未来,欢迎越来越多用户使用我们的服务,同时也欢迎越来越多伙伴加入我们,因为还有太多领域需要我们去深耕。
- 数据库产品专家/高级专家
- 企业级数据库产品
- 分布式数据库产品
- BI数据分析产品
- 研发专家/高级专家
- Java后端开发
- 前端开发
- 移动端开发
作者简介:衡铁刚(佩恩),阿里数据库产品专家,负责阿里云数据管理DMS产品设计,先后从事过运维DBA、淘宝DBA等工作。