蚂蚁集团SQLess 开源,与内部版有何区别?

当我们使用关系型数据库时,SQL 是联系起用户和数据库的一座桥梁。

SQL 是一种高度非过程化的语言,当我们在编写SQL 时,表达的是想要什么数据,而不是怎么获取数据。因此,我们往往更关心SQL 有没有满足业务逻辑,比如返回结果、响应速度、DB 吞吐等,不太想关心SQL 有没有性能问题、索引如何创建、SQL 问题怎么快速定位等风险。同时,我们希望这部分能力可以通过自动化、智能化产品来解决。

上述情况也一直困扰着蚂蚁集团内部的业务,在探索解决方案的过程中,得益于蚂蚁业务场景对数据库稳定性、吞吐量的极致要求,孵化了一款覆盖SQL 生命周期的诊断优化产品—— SQLess 。它服务于蚂蚁8000+用户、70+业务站点,被集成至30+业务平台,减少90% 的SQL 异常、提升80%故障恢复时效,保障了业务稳定性,是数据库的基础设施之一。

近日,SQLess 宣布开源,为蚂蚁集团之外的业务提供服务,包含SQL 防控体系、SQL 应急体系、SQL 优化体系三道防线。同时,SQLess 团队希望将蚂蚁集团内部沉淀的SQL 诊断优化经验与更多企业进行分享与交流。

图片

图片

SQLess 针对OceanBase 的SQL 优化实践

SQLess 开源后,成为了OceanBase 生态中的一员。SQLess 基于OceanBase 的Hint 机制,提供诊断优化、自愈限流、索引演进等能力。通过建立外部实时的流量检测,结合OceanBase 内部提供的统计信息,进行热点流量检测,用于智能识别热点行、锁冲突、热点账号、大小账号等细粒度SQL 问题。同时建立知识库体系,用于自动回归检测和算法学习。

整体线上自愈流程如下:

监控指标识别到异常 -> SQLess 找到根因SQL  -> SQLess 提供诊断建议 -> 自愈执行诊断操作 -> 监控指标回归正常

图片

针对增量SQL ,SQLess 结合蚂蚁的研发流程,提供SQL Review 能力,有效地将SQL 风险阻拦在上线之前。

图片

同时,针对存量SQL ,SQLess 结合治理平台,提供治理意见和性能回馈,有效push 存量问题SQL 的治理。

图片

图片

SQLess 内部版与开源版区别

目前,SQLess 在蚂蚁集团的实践更偏向于运维视角,解决的核心问题是蚂蚁业务在OceanBase 上的SQL 稳定性。区别于内部版,SQLess 开源版更偏向于研发视角,帮助用户更高效地写出优雅且高性能的SQL ,让用户花更少时间关注SQL 风险,更专注于SQL 业务逻辑本身,提升业务研发效率和数据库稳定性,并且提供全方位的SQL 监控能力,帮助用户解决SQL 风险并提升业务性能。正如SQLess 愿景描述的那样,让用户写SQL 时可以更聚焦于实现业务逻辑,而不需要关注性能问题:Less on SQL tuning,More to SQL doing。

图片

图片

图片

SQLess 适配各个研发阶段,将优化建议更加简单明了地告诉用户,追求通用性、可扩展性,可以接入不同的数据库引擎,用户也可以灵活配置或创建各个规则,用于适配自己的研发体系。

SQLess 开源版提供以下四个主要功能:

· SQL 优化:支持索引优化、研发规范 ( PMD ) 扫描、Rewrite 改写建议。

· SQL 审核:SQL Review 能力,可以集成在CICD pipeline 中。

· SQL 分析:multi-SQL 维度的综合分析,可以基于Slow log 、各个云厂商流量接口等方式进行SQL 优化。

· SQL 监控:实时态的TopSQL 分析,提供SQL 动态的实时监控,提供采样流水、执行计划、统计信息等辅助信息帮助用户找到问题SQL 、分析问题根因。

目前支持的数据库引擎包括OceanBase 3.x 版本和OceanBase 4.x 版本,以及MySQL 5.6 版本和MySQL 5.7 版本,未来还将支持更多数据库。

SQLess 架构设计及产品规划

为了更好地适配不同业务场景、扩展规则、支持更多的数据库引擎,SQLess 大部分组件都以插件化设计。

用户可以方便地使用规则或者自定义规则来适配自己的业务场景。

图片

对于优化器,采用“前置规则->剪枝规则->RBO 规则->CBO 成本计算”架构,支持三个优化能力:

  • 索引优化

  • 研发规范扫描

  • SQL Rewrite 优化

对于解析器,使用插件化框架,支持不同解析任务。

  • SQL 解析,支持不同DB 引擎的接入,已支持OceanBase 、MySQL

  • 文本解析:支持不同文本类型的接入,已支持MySQL 慢查询日志、SQL 流量文件

  • XML 解析:支持不同ORM 框架的接入,已支持MyBatis

规则引擎也使用插件化框架,支持各维度的规则沉淀:

  • RBO 规则

  • Rewrite  规则

  • 研发规范

  • 异常诊断(规划中)

  • 根因分析(规划中)

目前,SQLess 团队大部分工作聚焦在规则场景沉淀、数据库引擎扩展、优化器扩展、ORM 框架扩展、多云产品接入等工作上。希望帮助用户更加简单、准确地解决各类SQL 问题,比如:

1. 规则场景沉淀,不断丰富SQL PMD /SQL Rewrite /异常诊断等规则。

2. 数据库引擎扩展,目前支持OceanBase3.x /4.x、MySQL 5.6 /5.7,后续计划将持续支持MySQL8.0 /PostgreSQL /Oracle /TiDB /PolarDB 等数据库引擎。

3. 优化器扩展,目前支持Cost-Based Optimizer ,后续计划将持续支持AI-Based Optimizer 、Query-Based Workload Analysis 等更强大的优化器特性。

4. ORM框架扩展,目前只适配了MyBatis ,后续将持续支持GORM/Hibernate /SQLAlchemy 等ORM 框架。

5. 多云产品接入,持续支持多云产品的接入,类如OceanBase Cloud /Aliyun RDS /TiCloud 等。

6. 大模型结合的AIGC ,支持NL2SQL 、NL2DDL 、NL2 报表、SQL 优化、Schema 优化等。

除了建设更多SQL 能力外,SQLess 将提供轻量级的lib ,用于更好地接入如CICD 、SQL Console 、IDE 插件适用于SQL 优化和分析的产品。SQLess 也将持续加强与OceanBase 开源社区的融合,并支持MySQL 、PostgreSQL 等数据库,为更多数据库生态的用户提供服务,建设通用SQL 能力的开源生态。

图片

参与开源项目共建

如果你对OceanBase 和SQLess 感兴趣,欢迎任何形式的参与,包括且不限于提问、代码贡献、技术讨论等。期待收到社区想法和反馈,以推动项目持续前进。

OceanBase 开源项目地址:

https://github.com/oceanbase/sql-lifecycle-management

SQLess 开源项目地址: 

https://github.com/oceanbase/sql-lifecycle-management

OceanBase 用户群:

钉钉群号:33254054

OB 小助手微信:OBCE666

SQLess 用户群:

钉钉群号:33920014194

官方人员微信:ztk1294604739

附SQLess 快速上手流程

第一步,执行环境,推荐版本python = v3.6.x ,依赖安装(后续将提供镜像)。

git clone https://github.com/oceanbase/sql-lifecycle-management.git

cd sql-lifecycle-management && make install

第二步,数据库初始化。

# 填写本地元数据库链接方式

cd sql-lifecycle-management && vim db.cfg

# 本地元数据库初始化

mysql -h host_ip -u user_name -p

source init/init.sql

第三步,访问页面(http://localhost:8989)

cd sql-lifecycle-management && sh ./start.sh

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/67403.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

朴素,word,任何参考文献导入endnote

朴素,word,任何参考文献导入endnote 注意:对于以下这几种不做阐述,看其他帖子都有讲述: 这里的参考文献指的是类似于: [1]. Li Y, Lu Y, Huo X, et al. Bandgap tuning strategy by cations and halide io…

如何快速搭建母婴行业的微信小程序?

如果你想为你的母婴行业打造一个独特的小程序,但没有任何编程经验,别担心!现在有许多小程序制作平台提供了简单易用的工具,让你可以轻松地建立自己的小程序。接下来,我将为你详细介绍搭建母婴行业小程序的步骤。 首先&…

[unity]三角形顶点顺序

序 详见官方文档:Unity - Manual: Mesh data (unity3d.com) Topology:拓扑结构 翻译: 拓扑描述网格具有的面类型。 网格的拓扑定义了索引缓冲区的结构,索引缓冲区又描述了顶点位置如何组合成面。每种类型的拓扑都使用索引数组中…

Django实现音乐网站 ⒂

使用Python Django框架制作一个音乐网站, 本篇主要是歌手详情页-基本信息、单曲列表功能开发实现内容。 目录 歌手基本信息 增加路由 显示视图 模板显示 推荐歌手跳转详情 歌手增加基本信息 表模型增加字段 数据表更新 基本信息增加内容渲染 歌手单曲列表…

SpringMVC入门指南

目录 前言 一、什么是SpringMVC 二、MVC架构模式 三、SpringMVC的工作流程 四、SpringMVC核心组件 五、SpringMVC的优势 六、SpringMVC的配置与常用注解 七、SpringMvc请求处理流程、 控制器的编写 、视图的渲染 1.请求处理流程: 2.控制器的编写&#xff1…

优化Docker权限管理:配置Docker用户组

Docker 利用 Linux 的用户和组权限来管理对 Docker 守护进程的访问权限。一般情况下,只有 root 用户和属于 docker 用户组的用户才被允许访问 Docker 守护进程。在 Linux 系统上使用 Docker 时,如果您尚未配置 docker 用户组,那么作为非 root…

12. 微积分 - 梯度积分

Hi,大家好。我是茶桁。 上一节课,我们讲了方向导数,并且在最后留了个小尾巴,是什么呢?就是梯度。 我们再来回看一下但是的这个式子: [ f x f y

css强制显示一行

要强制将文本内容显示在一行中,可以使用CSS的white-space属性和overflow属性来实现。 首先,将white-space属性设置为nowrap,这样文本内容就不会换行。然后,将overflow属性设置为hidden,这样超出一行的内容就会被隐藏起…

SpringCloud(36):Nacos服务发现基础应用

1 服务发现数据模型 Nacos在经过阿里内部多年生产经验后提炼出的数据模型,则是一种服务-集群-实例的三层模型,这样基本可以满足服务在所有场景下的数据存储和管理。 命名空间(Namespace) 用于进行租户粒度的配置隔离,命名空间不仅适用于nacos的配置管理,同样适用于服务发…

【Vue】集成百度地图

Vue 集成 百度地图 1、获取百度地图 ak 密钥 2、登录网址 https://lbsyun.baidu.com/ 3、注册百度地图开放平台账号,填写认证信息,并且创建应用 安装 npm install vue-baidu-map --savemain.js import BaiduMap from vue-baidu-map;Vue.use(BaiduM…

【Windows 常用工具系列 11 -- 笔记本F5亮度调节关闭】

文章目录 笔记本 F 按键功能恢复 笔记本 F 按键功能恢复 使用笔记本在进行网页浏览时,本想使用F5刷新下网页,结果出现了亮度调节,如下图所示: 所以就在网上查询是否有解决这个问题的帖子,结果还真找到了:…

基于串口校时的数字钟设计

文章目录 设计目标硬件设计数码管串口 软件设计顶层模块串口接收模块数据处理模块时钟模块串口发送模块 总结 设计目标 环境:ACX720开发板 实现功能: 数码管能够显示时分秒能够接收串口数据修改时间能够将当前时间以1s一次速率发送到电脑 硬件设计 数…

1782_Adobe Reader X实现pdf分页保存

全部学习汇总: GitHub - GreyZhang/windows_skills: some skills when using windows system. 看了一本pdf电子书,觉得其中几页很值得分享。如果分享整本书当然是不错的选择,但是分享整本书很可能会导致一个结局——内容太多别人不会去看&…

内网穿透实战应用-如何通过内网穿透实现远程发送个人本地搭建的hMailServer的邮件服务

文章目录 1. 安装hMailServer2. 设置hMailServer3. 客户端安装添加账号4. 测试发送邮件5. 安装cpolar6. 创建公网地址7. 测试远程发送邮件8. 固定连接公网地址9. 测试固定远程地址发送邮件 hMailServer 是一个邮件服务器,通过它我们可以搭建自己的邮件服务,通过cpolar内网映射工…

SpringMVC入门详细介绍

一. SpringMVC简介 Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发&a…

17-Sharding-jdbc

一 Sharding-JDBC介绍 1 背景 随着通信技术的革新,全新领域的应用层出不穷,数据存量随着应用的探索不断增加,数据的存储和计算模式无时无刻不面临着创 新。面向交易、大数据、关联分析、物联网等场景越来越细分,单 一数据库再也无…

设计模式之代理模式与外观模式

目录 代理模式 简介 优缺点 角色职责 实现 运用场景 外观模式 简介 角色职责 优缺点 实现 使用场景 代理模式 简介 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为…

Android 1.2.1 使用Eclipse + ADT + SDK开发Android APP

1.2.1 使用Eclipse ADT SDK开发Android APP 1.前言 这里我们有两条路可以选,直接使用封装好的用于开发Android的ADT Bundle,或者自己进行配置 因为谷歌已经放弃了ADT的更新,官网上也取消的下载链接,这里提供谷歌放弃更新前最新…

Bean 的六种作用域

目录 一、作用域是什么? 1、singleton(单例作用域) 2、prototype(原型作用域) 3、request(请求作用域) 4、session(回话作用域) 5、application(全局作用域&a…