阿里数据库DevOps最佳实践

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
数据安全中心,免费版
简介: DevOps已不再陌生,但目前业界主要集中在开发与运维的高效协作和快速发布上,而作为企业核心资产的数据库,其结构设计、SQL审核、变更发布已成为企业效率提升的主要瓶颈,这篇文章将详细介绍阿里在数据库DevOps上遇到的挑战以及解决方案。

发福利!发福利!发福利!杭州云栖大会视频地址:

企业级数据库最佳实践(上半场)

企业级数据库最佳实践(下半场)

本文内容在企业级数据库最佳实践(上半场)中。


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等工作。



 

相关实践学习
MySQL基础-学生管理系统数据库设计
本场景介绍如何使用DMS工具连接RDS,并使用DMS图形化工具创建数据库表。
相关文章
|
2月前
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:详细步骤与最佳实践指南ali01n.xinmi1009fan.com
随着Web开发技术的不断进步,ASP.NET已成为一种非常流行的Web应用程序开发框架。在ASP.NET项目中,我们经常需要与数据库进行交互,特别是SQL数据库。本文将详细介绍如何在ASP.NET项目中连接SQL数据库,并提供最佳实践指南以确保开发过程的稳定性和效率。一、准备工作在开始之前,请确保您
204 3
|
3月前
|
消息中间件 缓存 监控
优化微服务架构中的数据库访问:策略与最佳实践
在微服务架构中,数据库访问的效率直接影响到系统的性能和可扩展性。本文探讨了优化微服务架构中数据库访问的策略与最佳实践,包括数据分片、缓存策略、异步处理和服务间通信优化。通过具体的技术方案和实例分析,提供了一系列实用的建议,以帮助开发团队提升微服务系统的响应速度和稳定性。
|
29天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
52 2
|
2月前
|
关系型数据库 MySQL 数据库
MySQL数据库:基础概念、应用与最佳实践
一、引言随着互联网技术的快速发展,数据库管理系统在现代信息系统中扮演着核心角色。在众多数据库管理系统中,MySQL以其开源、稳定、可靠以及跨平台的特性受到了广泛的关注和应用。本文将详细介绍MySQL数据库的基本概念、特性、应用领域以及最佳实践,帮助读者更好地理解和应用MySQL数据库。二、MySQL
124 5
|
2月前
|
SQL 数据管理 数据库
文章初学者指南:SQL新建数据库详细步骤与最佳实践
引言:在当今数字化的世界,数据库管理已经成为信息技术领域中不可或缺的一部分。作为广泛使用的数据库管理系统,SQL已经成为数据管理和信息检索的标准语言。本文将详细介绍如何使用SQL新建数据库,包括准备工作、具体步骤和最佳实践,帮助初学者快速上手。一、准备工作在开始新建数据库之前,你需要做好以下准备工作
133 3
|
3月前
|
存储 关系型数据库 MySQL
【阿里规约】阿里开发手册解读——数据库和ORM篇
从命名规范、建表规范、查询规范、索引规范、操作规范等角度出发,详细阐述MySQL数据库使用过程中所需要遵循的各种规范。
【阿里规约】阿里开发手册解读——数据库和ORM篇
|
2月前
|
安全 Devops 网络安全
【DevOps】Docker 最佳实践指南(绝对干货)
Docker 是一种领先的容器化平台,可简化应用开发、部署和管理。本文档介绍 Docker 的最佳实践,涵盖安全性、网络、镜像、主机安全及资源限制等方面,帮助用户高效利用 Docker,确保应用的安全性和性能。
133 0
|
3月前
|
运维 监控 Devops
拥抱 DevOps 文化:实现持续交付与部署的最佳实践
在软件开发领域,DevOps 强调开发与运维团队的协作,通过自动化、持续集成与部署等实践缩短系统开发生命周期,提升软件质量。其核心原则包括自动化、协作、度量与共享责任。实施 DevOps 需要建立跨功能团队、采用版本控制、持续集成与部署、自动化测试及监控反馈。常用工具有 Jenkins、GitLab CI/CD、Ansible、Prometheus 和 ELK Stack 等。DevOps 通过文化与技术变革,加速软件交付并提高客户满意度。
|
4月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
88 1
|
4月前
|
开发者 UED Java
Play Framework惊天秘密:如何让异常处理优雅得像芭蕾舞?
【8月更文挑战第31天】在Web应用开发中,异常处理至关重要,直接影响应用稳定性和用户体验。Play Framework作为轻量级Java Web框架,提供了基于Scala偏函数的灵活异常处理机制。通过实现`HttpErrorHandler`接口可定义全局异常逻辑,而在控制器中使用try-catch块则能捕获特定异常。定义自定义异常类也有助于表示特定错误情况。最佳实践包括保持处理一致性、提供有用错误信息、记录日志及分类处理异常。掌握这些技巧,能使Play应用更健壮可靠。
67 1