[转帖] TiDB 产品体系介绍
https://www.modb.pro/db/521269#:~:text=%E4%BC%81%E4%B8%9A%E7%89%88%E5%92%8C%E7%A4%BE%E5%8C%BA%E7%89%88%E7%9A%84%E5%86%85%E6%A0%B8%E7%9B%B8%E5%90%8C%EF%BC%8C%E4%BD%86%E4%BC%81%E4%B8%9A%E7%89%88%E4%BC%9A%E5%8C%85%E5%90%AB%E6%9B%B4%E5%A4%9A%E7%9A%84%E5%91%A8%E8%BE%B9%E7%94%9F%E6%80%81%E5%B7%A5%E5%85%B7%E5%92%8C%E4%BA%A7%E5%93%81%E6%8A%80%E6%9C%AF%E6%9C%8D%E5%8A%A1%E3%80%82%20TiDB%20Cloud,%E5%88%99%E6%8F%90%E4%BE%9B%20DBaaS%20%E6%9C%8D%E5%8A%A1%EF%BC%8C%E6%8C%89%E9%9C%80%E4%BB%98%E8%B4%B9%EF%BC%8C%E5%BC%80%E5%8F%91%E8%80%85%E7%89%88%E6%9C%AC%E6%94%AF%E6%8C%81%E5%85%8D%E8%B4%B9%E8%AF%95%E7%94%A8%E4%B8%80%E5%B9%B4%E3%80%82
快速体验 TiDB 的几种方式:
1. 使用 TiUP,几分钟搭建本地测试集群,并自动安装 TiDB Dashboard 和 Grafana,支持 MacOS
2. 自助开通 TiDB Cloud,可以免费试用一年 https://tidbcloud.com/
3. 在线体验 TiDB 的 SQL 执行: https://tour.pingcap.com/
对于一个基础软件产品来说,一个重要的长期竞争力和产品价值来自于可观测性和 Troubleshooting 能力。这个世界没有完美的软件,而且对于有经验的开发者来说,快速的发现和定位问题的能力是必备的,对于基础软件的商业化来说,服务支持效率和 Self-serving 也是规模化的基础,这一点在云的环境下也同样重要。
概述
Why TiDB
- TiDB 在墨天轮的 国产关系型数据库流行度 中常年排名第一。
- 在三方评测、专利和论文均不占优的情况下,TiDB 的整体得分仍能排名第一,说明在其它的得分项上非常突出。墨天轮对 TiDB 的整体评价是:“TiDB 为其他国产开源数据库发挥了示范性作用,一直在技术领域精耕细作,不断在市场中打磨产品,树立了良好的品牌形象。”
- 但在 DB-Engines 的 全球关系型数据库流行排行榜 中,TiDB 只排到第 48 位,相比 Oracle、MySQL、SQL Server 等老牌数据库来说,还有不少的差距。
TiDB 架构
- 核心能力: 分布式 Sharding Nothing、存储计算分离、HTAP、MySQL 兼容
- 核心组件:
- PD: 负责元数据管理、任务调度、负载均衡
- TiDB/TiSpark: SQL 层
- TiKV/TiFlash: 存储 + 事务层,分别对应行存和列存,以实现 HTAP 混合负载。但需要将 TiKV 和 TiFlash 部署到不同节点才能实现负载隔离。
- TiDB 不支持多租户,一般是把整个集群作为单个租户使用。
- 数据库代理: 需要集成 ProxySQL 等第三方中间件实现。
- 数据库驱动&工具: 使用 MySQL 社区已有的驱动和中间件。
TiDB 工具体系
TiDB 产品形态
- 企业版和社区版的内核相同,但企业版会包含更多的周边生态工具和产品技术服务。TiDB Cloud 则提供 DBaaS 服务,按需付费,开发者版本支持免费试用一年。
TiDB 客户案例
- 国内客户以金融、互联网、游戏和视频行业为主。
- 海外客户分布在美国、新加坡、日本 20+ 国家和地区。
TiDB Dashboard
介绍
- TiDB Dashboard 是 TiDB 自 4.0 版本起提供的图形化界面,可用于监控及诊断 TiDB 集群。TiDB Dashboard 内置于 TiDB 的 PD 组件中,无需独立部署 (触达门槛低)。
安装部署
- TiDB Dashboard 界面内置于 TiDB 4.0 或更高版本的 PD 组件中,无需额外部署。只需部署标准 TiDB 集群,TiDB Dashboard、Prometheus 和 Grafana 就会原生集成。在 MacOS 下安装部署可参考 https://docs.pingcap.com/zh/tidb/stable/quick-start-with-tidb#%E9%83%A8%E7%BD%B2%E6%9C%AC%E5%9C%B0%E6%B5%8B%E8%AF%95%E9%9B%86%E7%BE%A4。
- TiDB Dashboard (版本 v6.2) 访问地址 http://127.0.0.1:2379/dashboard,默认用户名为 root,密码为空。
- Prometheus 管理界面: http://127.0.0.1:9090
- Grafana 监控界面: http://127.0.0.1:3000,默认用户名和密码都为 admin。
技术架构
- TiDB Dashboard 已在 GitHub 上 开源,前端使用 React (Monorepo 架构),后端使用 Go,前后端一体化架构。
- UI 库: antd、office-ui-fabric-react、部分 rc-* 类组件
- 图标库: @ant-design/icons
- 图表库: @elastic/charts
- 关系图库: d3、d3-flextree、d3-graphviz
- 日期时间库: dayjs
- 请求库: axios
- hooks 库: ahooks
- 工具库: lodash
- 布局库: @g07cha/flexbox-react
- 国际化: i18next
- 前端代码规模: 6.1w
- 后端代码规模: 2w
产品能力
运维
- 无运维功能,需要通过 TiUP 进行黑屏运维,TiDB Dashboard 仅支持展示实例、主机、磁盘、存储拓扑等基本信息。
监控
- 内置监控: TiDB Dashboard 从 v6.2 版本开始,内置了一个包含常用指标的监控页面,不跳转 Dashboard 也能满足大部分日常的监控需求,包含折线图、柱状图、堆叠图、面积图等多种类型图表,分析维度较为多样。图表库用的是 @elastic/charts,整体观感比 G2Plot 好不少,但似乎不支持框选。
- Grafana 监控: 会和 TiDB Dashboard 一起安装,默认提供了 23 个监控面板,涉及的指标和对象维度非常全面,加上 Grafana 本身强大的自定义能力,也非常容易扩展。因此 TiDB 的监控能力和体验较为优秀,缺点是搭配 TiDB Dashboard 使用体感较为割裂,无法与其他模块做关联分析,产品形态容易受限。
告警
- 依赖 Grafana 的告警能力,同样也内置了一批告警规则,可以做到开箱即用,满足日常的告警需求。
- 通过对接 ElasticSearch 等数据源,也支持配置日志告警,来实现扩展。
- 支持钉钉、Slack、LINE 等国内外常用的告警通道,配置起来也比较简单。
诊断
TopSQL
- 只支持查看一段时间内累计 CPU 耗时 Top5 的 SQL,产品能力比较简单。其提供的图形化分析方式虽然比较炫酷,但数据维度单一,感觉实际意义不是很大。
SQL 语句分析
- 支持基本的 SQL 查询和分析能力,而且执行的 SQL 可以即时刷新,应该是从 TiDB 直接读取的记录,没有单独的采集和存储层。
- SQL 详情页包含基础信息、执行计划、数据库时间、事务、慢查询等。
- 执行计划支持可视化关系图 (基于 d3 实现) 和文本两种展示形式。
- 数据库阶段耗时分析:
流量可视化
- 本质是一个热力图 (基于 d3 实现),颜色越亮表示该 Region/Bucket 流量越高,主要用于分析热点问题和数据库的负载均衡情况。
- TPC-C 测试的热力图。
集群诊断报告
- 类似 Oracle AWR 报告,汇总展示基本信息、诊断、负载、各个组件执行详情等多个维度数据。该报告只支持在线查看,不支持下载。
- 同时还提供查询报告数据时的 TiDB 内部调用关系图,关系图由后端通过 go-graphviz 生成。
日志
- 支持查看不同级别和不同实例 (PD、TiDB、TiKV、TiFlash) 的日志,查询逻辑简单易用,展示逻辑。
实例性能分析
- 分为手动分析和持续分析两种,默认为持续分析,会记录历史上的性能数据,因此会占据更多的磁盘空间。
- 支持查看各个实例节点上的性能数据,并提供火焰图 (speedscope) 和关系图 (go-graphviz ) 两种分析能力。
火焰图
关系图
调试接口
- 和 OpenAPI 的作用类似,只不过全部是 Get 类型的接口,而且支持在线调试,对象参数无需手动填写、直接选择即可,体验比较好,算是一个面向 OpenAPI 场景的效率工具。
用户管理
- TiDB Dashboard 与 TiDB 使用相同的用户权限体系和登录验证方式,需要使用 SQL 来新建用户和赋权,无白屏管理功能。
CREATE USER 'dashboardAdmin'@'%' IDENTIFIED BY '<YOUR_PASSWORD>';
GRANT PROCESS, CONFIG ON *.* TO 'dashboardAdmin'@'%';
GRANT SHOW DATABASES ON *.* TO 'dashboardAdmin'@'%';
GRANT DASHBOARD_CLIENT ON *.* TO 'dashboardAdmin'@'%';
-- 如果要使自定义的 SQL 用户能修改 TiDB Dashboard 界面上的各项配置,可以增加以下权限
GRANT SYSTEM_VARIABLES_ADMIN ON *.* TO 'dashboardAdmin'@'%';
- TiDB 还支持基于角色的访问控制 (RBAC),类似于 MySQL 8.0 的 RBAC 系统。TiDB 兼容大部分 MySQL RBAC 系统的语法。
-- 创建角色 app_read
CREATE ROLE 'app_read';
-- 为 app_read 角色授予数据库 app_db 的读权限:
GRANT SELECT ON app_db.* TO 'app_read'@'%';
-- 授予用户角色
GRANT 'app_read' TO 'user1';
TiDB Cloud
介绍
- TiDB 的数据库云服务,主要面向海外和云市场。
免费试用
- 提供面向开发者和专业用户两种版本,其中开发者版本可免费体验一年,产品功能和资源会受到一定限制,比如无法使用备份恢复和 VPC 等高阶能力,可用的网络/存储/计算资源也会比较小。
- 云服务商和地域也会受到限制,目前开发者版本仅支持选择 AWS 作为服务商。
开发者版本 |
专业版本 |
- 这里新建测试集群 Cluster0,部署到 AWS 的新加坡地域。
- 设置集群的 root 密码和可访问数据库的 IP 白名单:
- 等待一分钟左右,集群即可创建成功。
产品能力
集群拓扑
数据库连接
- 支持多种数据库连接方式,并给出了配置示例,同时还提供在线的 Web SQL Shell,非常贴心。
- 使用 MySQL 客户端连接数据库:
- 使用 Sequel Pro 连接数据库:
数据导入
- 提供免费的数据导入服务,不过目前只支持从 AWS S3 和 Google Cloud Storage 导入。如果是其他数据源,就需要使用 TiDB 的迁移工具 进行线下导入了。
安全设置
- 设置集群的 root 密码和可访问数据库的 IP 白名单。
监控
- 集群页会展示 10 个常用指标的监控,监控能力较为单一。
告警
- 内置了 10 个左右的告警项且默认生效,用户只需配置告警的订阅邮箱,不支持自定义告警。
第三方监控&告警
- 如果内置的监控和告警能力不满足需求,也可以对接第三方产品如 Datadog 和 Prometheus。但 TiDB 只提供17 个监控指标作为数据源,用户需要自行开通 Datadog 服务或搭建 Prometheus & Grafana 环境才能接入。
备份恢复
- 仅专业版本支持,可从开发者版本升级后使用。
SQL 诊断
- 能力同 TiDB Dashboard 的 SQL 语句分析。
Key Visualizer
- 能力同 TiDB Dashboard 的 流量可视化。
云服务市场
- Google Cloud: https://console.cloud.google.com/marketplace/product/pingcap-public-335409/tidb-cloud?hl=zh-cn&project=trusty-stack-321106
调研总结
TiDB 优势
- 上手门槛:
- TiUP、TiDB Dashboard 等工具支持 MacOS 和一键安装部署,体验非常好,就算是新手小白也不会有挫败感。
- TiDB Cloud 自助开通的流程非常顺滑,低门槛、试用时间长,而且 SaaS 服务化能力做的好,开箱即用。
- 产品策略:
- 安装、部署和运维均借助命令行工具实现,对用户尽可能屏蔽底层概念。
- 诊断和分析类功能不少都是经典的可视化场景,用户接受度高,具备传播亮点,容易吸引用户。
- 核心能力自研,外围能力如监控告警直接集成第三方平台和工具,提供强大能力和优秀体验的同时,也能减少自身的研发投入。
- 国内和海外是单独两套产品策略、两套设计风格,更具针对性。
TiDB 劣势
- 工具产品较为分散,缺少 all-in-one 的平台级产品和一些企业级特性 (比如审计),而且不少能力依赖第三方,产品形态和扩展性上会受到限制,难以适应线下各种差异化的场景,商业化输出也可能会有协议问题和法律风险。
- 因此 TiDB 在今年 4 月份发布了 TiUniManager (TiDB Enterprise Manager) 数据库运维管理平台,面向独立部署和大规模运维管控。不过目前还处于产品化早期,仅对外迭代了三个小版本,产品能力和易用性上还有不少问题。TiUniManager 的产品架构和功能如下:
参考
[转帖] TiDB 产品体系介绍的更多相关文章
- 面向服务体系架构(SOA)和数据仓库(DW)的思考基于 IBM 产品体系搭建基于 SOA 和 DW 的企业基础架构平台
面向服务体系架构(SOA)和数据仓库(DW)的思考 基于 IBM 产品体系搭建基于 SOA 和 DW 的企业基础架构平台 当前业界对面向服务体系架构(SOA)和数据仓库(Data Warehouse, ...
- 关于华为高斯数据库 GaussDB 版本及认证体系介绍
目录 你需要知道的 技术有国界 从它的名称说起 你听到过的版本 你听到过的流言蜚语 各个版本的区别 版本未来名称 华为 GaussDB 认证体系介绍 GaussDB 其他资料相关链接 你需要知道的 任 ...
- Cesium产品体系
Cesium是国外Analytical Graphics, Inc.公司开发的一款基于JavaScript 的使用WebGL的地图引擎.Cesium支持3D,2D,2.5D形式的地图展示,可以自行绘制 ...
- 【转】线程池体系介绍及从阿里Java开发手册学习线程池的正确创建方法
jdk1.7中java.util.concurrent.Executor线程池体系介绍 java.util.concurrent.Executor : 负责线程的使用与调度的根接口 |–Execut ...
- javaWeb课程体系介绍
javaWeb课程体系介绍-一般必须学的课程: JavaSE开发Java基础编程Java核心编程Java高级编程DataBase开发MySQLJDBCJavaEE开发Web基础SpringSpring ...
- [转帖]Oracle 补丁体系(PSR/PSU/CPU) 及 opatch 工具 介绍
Oracle 补丁体系(PSR/PSU/CPU) 及 opatch 工具 介绍 原文:http://blog.csdn.net/tianlesoftware/article/details/58095 ...
- Microsoft 机器学习产品体系对比和介绍
Microsoft 提供多种多样的产品选项用于生成.部署和管理机器学习模型. 本文将比较这些产品,并帮助你选择所需的产品,以便最有效地开发机器学习解决方案. 机器学习产品 描述 作用 Azure云端服 ...
- [转帖]PKI系统深入介绍
PKI系统深入介绍 https://blog.csdn.net/liuhuiyi/article/details/7776825 2012年07月23日 20:17:01 liuhuiyi 阅读数 4 ...
- MINA学习之体系介绍
基于MINA应用程序结构图: 我们可以看出,MINA是应用程序(客户端或服务端)和底层基于TCP,UDP等通讯协议的网络层之间的粘合剂.而且各个模块之间是相互独立的,你只需要在MINA体 系基础上设计 ...
- [转帖]windows7/windows NT介绍
windows7/windows NT介绍 原文应该是IT168发布的 但是一直没找到 感觉看了之后 明白了很多 技术都是互相融合的 没有严格意义上的对立直说. Windows 7/Windows ...
随机推荐
- 2024年,在风云际会的编程世界里,窥探Java的前世今生,都说它穷途末路,我认为是柳暗花明!
2024年,在风云际会的编程世界里,窥探Java的前世今生,都说它穷途末路,我认为是柳暗花明! 文编|JavaBuild 哈喽,大家好呀!我是JavaBuild,以后可以喊我鸟哥,嘿嘿!俺滴座右铭是不 ...
- flutter中全局与单页面背景图片(动态图片)
单页面设置背景图片 使用 Container 组件和 decoration 属性: 优点:简单易用,适用于大多数情况下的页面背景设置. 缺点:无法控制背景图片的位置和层级. class MyBook ...
- CUDA C编程权威指南:1.3-CUDA基础知识点梳理
主要整理了N多年前(2013年)学习CUDA的时候开始总结的知识点,好长时间不写CUDA代码了,现在LLM推理需要重新学习CUDA编程,看来出来混迟早要还的. 1.CUDA数组 解析:CUDA数组 ...
- Solon 开发调试时能热更新吗?
1.调试模式 开启"调试模式"后,支持动态模板文件.静态资源文件可以实现动态更新.增加启动参数即可开启: --debug=1 使用 solon-test 进行单元测试时,会自动添加 ...
- 【django-vue】登录注册模态框分析 登录注册前端页面 腾讯短信功能二次封装 短信验证码接口 短信登录接口 短信注册接口
目录 昨日回顾 csrf跨站请求伪造 接口幂等性 异常捕获 今日内容 1 登录注册模态框分析 Login.vue Header.vue 2 登录注册前端页面复制 2.0 Header.vue 2.1 ...
- Docker--镜像&&容器基本操作
1 基础镜像 BusyBox 一个极简版的Linux系统 集成了100多种常用Linux命令 大小不到2MB 适用于简单测试场景 Alpine 一个面向安全的轻型Linux发行版系统 比BusyBox ...
- 【3rd_Party】使用QuaZip进行压缩和解压缩文件
QuaZIP使用记录 官方文档 一.QuaZIP是什么 QuaZIP is a simple C++ wrapper over Gilles Vollant's ZIP/UNZIP package t ...
- P1379 八数码难题 ( A* 算法 与 IDA_star 算法)
P1379 八数码难题 题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给出一种初始布局(初 ...
- 6.0 《数据库系统概论》之关系数据库的规范化理论(数据依赖对表的影响[插入-删除-修改-冗余]、1NF-2NF-3NF-BCNF-4NF、函数依赖与多值依赖)
前言 本篇文章学习书籍:<数据库系统概论>第5版 王珊 萨师煊编著 视频资源来自:数据库系统概论完整版(基础篇+高级篇+新技术篇) 由于 BitHachi 学长已经系统的整理过本书了,我在 ...
- i 的二次幂求和
学习 自为风月马前卒 大佬的数学笔记 \(i^2\) 求和 查阅资料我们很容易就发现 \(\sum_{i = 1}^ni^2 = \frac{n(n + 1)(2n + 1)}{6}\) 但具体怎么求 ...