前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >TiDB 6.0 的「元功能」:Placement Rules in SQL 是什么?

TiDB 6.0 的「元功能」:Placement Rules in SQL 是什么?

原创
作者头像
PingCAP
发布于 2022-04-20 03:53:11
发布于 2022-04-20 03:53:11
4530
举报
文章被收录于专栏:PingCAP的专栏PingCAP的专栏

TiDB 有一些功能和其它功能不一样,这类功能可以作为构建其它功能的基础,组合出新的特性,这类功能称之为:Meta Feature。<p align="right">《关于基础软件产品价值的思考方式》 - 黄东旭</p>

对一款分布式数据库而言,数据如何分散存储在不同节点永远是个有趣的话题。你是否有时会期望能具体控制数据具体存储在哪些节点?

  • 当你在同一个 TiDB 集群上支持多套业务以降低成本,但又担心混合存储后业务压力互相干扰
  • 当你希望增加重要数据的副本数,提升关键业务的可用性和数据可靠性
  • 当你希望把热点数据的 leader 放到高性能的 TiKV 实例上,提升 OLTP 性能
  • 当你希望实现热冷数据分离(热数据存放在高性能介质,冷数据反之),降低存储成本
  • 当你希望在多中心部署下,将数据按照实际地域归属和数据中心位置来存放,以减少远距离访问和传输

你也许已经知道,TiDB 使用 Placement Driver 组件来控制副本的调度,它拥有基于热点,存储容量等多种调度策略。但这些逻辑以往对于用户都是近似不可控的存在,你无法控制数据具体如何放置。而这种控制能力就是 TiDB 6.0 的 Placement Rules in SQL 数据放置框架希望赋予用户的。

TiDB 6.0 版本正式提供了基于 SQL 接口的数据放置框架(Placement Rules in SQL)。它支持针对任意数据提供副本数、角色类型、放置位置等维度的灵活调度管理能力,这使得在多业务共享集群、跨 AZ 部署等场景下,TiDB 得以提供更灵活的数据管理能力,满足多样的业务诉求。

让我们来看几个具体的例子。

跨地域部署降低延迟

想象下你是一个服务供应商,业务遍布全球,早期架构为中心化设计,随着业务跨地域开展后,业务拆分全球化部署,中心数据访问延迟高,跨地域流量成本高。随着业务演进,你着手推动数据跨地域部署,以贴近本地业务。你的数据架构有两种形式,本地管理的区域数据和全局访问的全局配置数据。本地数据更新频次高,数据量大,但是几乎没有跨地域访问的情况。全局配置数据,数据量少,更新频率低,但是全局唯一,需要支持任意地区的访问,传统的单机数据库或单地区部署数据库无法满足以上业务诉求。

以下图为例,用户将 TiDB 以跨中心的方式部署在三个数据中心,分别覆盖华北,华东和华南的用户群,让不同区域的用户可以就近访问本地数据。在以往的版本中,用户的确可以将以跨中心的方式部署 TiDB 集群,但无法将归属不同用户群的数据存放在不同的数据中心,只能按照热点和数据量均匀分布的逻辑将数据分散在不同中心。在高频访问的情况下,用户访问很可能会频繁跨越地域承受较高的延迟。

1.jpg
1.jpg

通过 Placement Rules In SQL 能力,你设置放置策略将区域数据的所有副本指定到特定区域的特定机房内,所有的数据存储,管理在本地区内完成,减少了数据跨地区复制延迟,降低流量成本。你需要做的仅仅是,为不同数据中心的节点打上标签,并创建对应的放置规则:

代码语言:SQL
AI代码解释
复制
CREATE PLACEMENT POLICY 'east_cn' CONSTRAINTS = "[+region=east_cn]";
CREATE PLACEMENT POLICY 'north_cn' CONSTRAINTS = "[+region=north_cn]";

并通过 SQL 语句控制数据的放置,这里以不同城市分区为例:

代码语言:SQL
AI代码解释
复制
ALTER TABLE orders PARTITION p_hangzhou PLACEMENT POLICY = 'east_cn'ALTER TABLE orders PARTITION p_beijing PLACEMENT POLICY = 'north_cn'

这样,归属不同城市的订单数据副本将会被「固定」在对应的数据中心。

业务隔离

假设你负责大型互联网企业的数据平台,内部业务有 2000 多种,相关业务采用一套或多套 MySQL 来管理,但是因为业务数量太多,MySQL 实例数接近 1000 个,日常的监控、诊断、版本升级、安全防护等工作对运维团队造成了巨大的压力,且随着业务规模越来越大,运维成本逐年上升。你希望通过减少数据库实例数量来减少运维管理成本,但是业务间的数据隔离、访问安全、数据调度的灵活性和管理成本成为你面临的严峻挑战。

借助 TiDB 6.0,通过数据放置规则的配置,你可以很容易灵活的集群共享规则,例如业务 A,B 共享资源,降低存储和管理成本,而业务 C 和 D 独占资源,提供最高的隔离性。由于多个业务共享一套 TiDB 集群,升级、打补丁、备份计划、扩缩容等日常运维管理频率可以大幅缩减,降低管理负担提升效率。

2.jpg
2.jpg
代码语言:SQL
AI代码解释
复制
CREATE PLACEMENT POLICY 'shared_nodes' CONSTRAINTS = "[+region=shared_nodes]";
CREATE PLACEMENT POLICY 'business_c' CONSTRAINTS = "[+region=business_c]";
CREATE PLACEMENT POLICY 'business_d' CONSTRAINTS = "[+region=business_d]";

ALTER DATABASE a POLICY=shared_nodes;
ALTER DATABASE b POLICY=shared_nodes;
ALTER DATABASE c POLICY=business_c;
ALTER DATABASE d POLICY=business_d;

基于 SQL 接口的数据放置规则,你仅仅使用少数 TiDB 集群管理大量的 MySQL 实例,不同业务的数据放置到不同的 DB,并通过放置规则管理将不同 DB 下的数据调度到不同的硬件节点上,实现业务间数据的物理资源隔离,避免因资源争抢,硬件故障等问题造成的相互干扰。通过账号权限管理避免跨业务数据访问,提升数据质量和数据安全。在这种部署方式下,集群数量大大减小,原本的升级,监控告警设置等日常运维工作将大幅缩减,在资源隔离和性价比上达到平衡,大幅减少日常的 DBA 运维管理成本。

主从多机房 + 低延迟读取

现在你是一个互联网架构师,希望通过 TiDB 构建本地多数据中心架构。通过数据放置规则管理,你得以将 Follower 副本调度到备中心,实现同城高可用。

代码语言:SQL
AI代码解释
复制
CREATE PLACEMENT POLICY eastnwest PRIMARY_REGION="us-east-1" REGIONS="us-east-1,us-east-2,us-west-1" SCHEDULE="MAJORITY_IN_PRIMARY" FOLLOWERS=4;
CREATE TABLE orders (order_id BIGINT PRIMARY KEY, cust_id BIGINT, prod_id BIGINT) PLACEMENT POLICY=eastnwest;

与此同时,你让对于一致性和新鲜度不高的历史查询通过基于时间戳的方式读取(Stale Read),这样避免了跨中心数据同步造成的访问延迟,同时也提高对从机房的硬件利用率。

代码语言:SQL
AI代码解释
复制
SELECT * FROM orders WHERE order_id = 14325 AS OF TIMESTAMP '2022-03-01 16:45:26';

总结

TiDB 6.0 的 Placement Rules In SQL 是一个很有趣的功能:它暴露了以往用户无法控制的内部调度能力,并提供了方便的 SQL 接口。你可以通过它对分区 / 表 / 库不同级别的数据进行基于标签的自由放置,这开启了诸多以往不可能实现的场景。除了上述可能性,我们也期望和你一起探索更多有趣的应用。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
TiDB 6.0 发版:向企业级云数据库迈进
我们很高兴为大家带来 TiDB 最新版 6.0 的介绍。虽然是一个开源数据库,但 TiDB 的定位一直都是面向企业级和云的数据库,而 TiDB 6.0 也是围绕这个主题而研发的。在最新版本中,我们大幅度加强了作为企业级产品的可管理性,与此同时也加入了诸多云原生数据库所需的基础设施。
PingCAP
2022/04/08
2.6K0
TiDB 6.0 发版:向企业级云数据库迈进
TiDB 6.0:让 TSO 更高效丨TiDB Book Rush
TiDB 作为一个分布式数据库,计算节点 tidb server 和存储节点 tikv/tiflash server 有着近乎线性的扩展能力,当资源不足时直接在线扩容即可。但作为整个集群大脑的 PD 节点因为只有 leader 提供服务,不能向其他组件一样通过扩展节点而提高处理能力。
PingCAP
2022/06/27
6270
TiDB 6.0 Placement Rules In SQL 使用实践
TiDB 6.0 版本正式提供了基于 SQL 接口的数据放置框架(Placement Rules in SQL), 特性用于通过 SQL 接口配置数据在 TiKV 集群中的放置位置。通过该功能,用户可以将表和分区指定部署至不同的地域、机房、机柜、主机。适用场景包括低成本优化数据高可用策略、保证本地的数据副本可用于本地 Stale Read 读取、遵守数据本地要求等。它支持针对任意数据提供副本数、角色类型、放置位置等维度的灵活调度管理能力,这使得在多业务共享集群、跨 AZ 部署等场景下,TiDB 得以提供更灵活的数据管理能力,满足多样的业务诉求。
PingCAP
2022/08/04
5320
知乎 PB 级别 TiDB 数据库集群管控实践
在现代企业中,数据库的运维管理至关重要,特别是面对分布式数据库的复杂性和大规模集群的挑战。作为一款兼容 MySQL 协议的分布式关系型数据库,TiDB 在高可用、高扩展性和强一致性方面表现卓越。知乎自 2019 年开始应用 TiDB,并通过云原生 Kubernetes(以下简称 K8s)环境和 TiDB Operator 来实现高效的集群管控,支撑业务的快速发展。本文由知乎数据库架构团队负责人代晓磊撰写,深入探讨知乎如何利用 TiDB 的生态架构和平台化运维工具,结合 TiDB Operator 和自研的天穹平台,构建出灵活、稳定且高效的数据库管控体系。通过自动化部署、数据迁移、监控预警等一系列手段,知乎为业务研发和 DBA 团队提供了强有力的支持,确保数据库服务能够在高并发、大数据场景下持续稳定运行。
PingCAP
2024/12/18
1750
知乎 PB 级别 TiDB 数据库集群管控实践
TiDB 数据库 HTAP 技术 摘要
TiDB 默认由优化器自动选择是否使用 MPP 模式, 你可以通过修改变量 tidb_allow_mpp 和 tidb_enforce_mpp 的值来更改选择策略。
早起的鸟儿有虫吃
2022/03/15
1.1K0
TiDB 数据库 HTAP 技术 摘要
TiDB 在摩拜的深度实践及应用
摩拜单车 2017 年开始将 TiDB 尝试应用到实际业务当中,根据业务的不断发展,TiDB 版本快速迭代,我们将 TiDB 在摩拜单车的使用场景逐渐分为了三个等级:
用户5927304
2019/07/31
9350
TiDB 6.0 实战分享丨冷热存储分离解决方案
TiDB 6.0 正式提供了数据放置框架(Placement Rules in SQL )功能,用户通过 SQL 配置数据在 TiKV 集群中的放置位置,可以对数据进行直接的管理,满足不同的业务场景需要。如:
PingCAP
2022/06/08
1.4K0
TiDB 6.0 实战分享丨冷热存储分离解决方案
知乎 PB 级别 TiDB 数据库在线迁移实践
本文由知乎数据库负责人代晓磊老师老师撰写,全面介绍了知乎几十套 TiDB、数据总量达 PB 级别的数据库在线迁移经验,详细分享了三种场景和方案,为同城机房迁移提供了详尽的指导。
PingCAP
2024/09/26
1500
Tidb 简介与应用实践
当 mysql 的一个大表总数达上亿时,mysql 性能变的很差,且新增或修改字段、索引也需要花费很长时间,至少十几个小时。这种情况,一般的做法是分库分表,这种方法需要业务层根据规则,物理分库分表,比如按照时间分表,业务代码需要兼容。Tidb 是分布式 newsql 数据库,兼容了大部分 mysql 协议和操作,业务不需要调整,数据库性能也能保证。
zhangdd
2021/02/26
8890
Tidb 简介与应用实践
TiDB 5.0 跨中心部署能力初探 | 揭秘 TiDB 5.0 事务分布式授时模块
TiDB 5.0 发布在即,在这个大版本更新中提升 TiDB 集群的跨中心部署能力是我们重要的一个着力点。其中,新的分布式本地事务能力及其对应的授时服务改造是基础且又重要的一环。本文将会从 TiDB 现有的授时服务出发,一步步阐释新分布式授时服务的改造思路和本地事务的性能表现,最后将会为大家分享一个应用场景与上手步骤,供感兴趣的用户把这个新特性上手试用起来。
PingCAP
2021/03/02
1.2K0
【DB宝56】同城多数据中心部署TiDB数据库高可用环境
作为 NewSQL 数据库,TiDB 兼顾了传统关系型数据库的优秀特性、NoSQL 数据库可扩展性以及跨数据中心场景下的高可用。本文档旨在介绍同城多数据中心部署 TiDB 方案。
AiDBA宝典
2021/12/17
6860
【DB宝56】同城多数据中心部署TiDB数据库高可用环境
TiDB 新特性漫谈:从 Follower Read 说起
很久没有写文章了,正好今天有一些闲暇的时间,写写最近的一些 Update。关注 TiDB 的同学,最近可能注意到 TiKV 这边合并了一个不大不小的 PR #5051 ,支持了一个特性叫做 Follower Read,看到这个功能被合并进主干我确实有点百感交集,还发了条朋友圈庆祝,因为我实在很喜欢这个特性,可能有同学不太理解,今天就写一写和这个 PR 相关的一些事情。
PingCAP
2019/08/15
9210
三篇文章了解 TiDB 技术内幕:谈调度
PingCAP
2017/06/08
1.4K0
PingCAP创始人刘奇:TiDB设计理念进化与大规模实践
到现在为止TiDB已经开源有三年零两个月,我是TiDB CEO,打杂比较多,偶尔写写代码。
数据和云
2018/12/18
9750
PingCAP创始人刘奇:TiDB设计理念进化与大规模实践
分布式NewSQL数据库TiDB
TiDB 是 PingCAP 公司基于 Google Spanner / F1 论文实现的开源分布式 NewSQL 数据库。 https://github.com/pingcap/tidb docker部署方案 (https://github.com/pingcap/docs-cn/blob/master/op-guide/docker-deployment.md) 特性 SQL支持 (TiDB 是 MySQL 兼容的) 水平线性弹性扩展 分布式事务 跨数据中心数据强一致性保证 故障自恢复的高可用 TiD
李海彬
2018/03/28
1.4K0
分布式NewSQL数据库TiDB
技术分享 | TiUP工具 - TiDB集群滚动升级核心流程解析
滚动升级是一种在线升级方式,相比离线升级,滚动升级可保证在部分或全部服务可用的情况下完成软件的升级。在集群规模大且支撑业务多且复杂时,尽量减少业务中断的滚动升级具有重要的意义。
爱可生开源社区
2022/11/16
6500
TiDB HTAP 上手指南丨添加 TiFlash 副本的工作原理
TiFlash 是 TiDB HTAP 形态的关键组件,它是 TiKV 的列存扩展,在提供了良好的隔离性的同时,也兼顾了强一致性。列存副本通过 Raft Learner 协议异步复制,但是在读取的时候通过 Raft 校对索引配合 MVCC 的方式获得 Snapshot Isolation 的一致性隔离级别。这个架构很好地解决了 HTAP 场景的隔离性以及列存同步的问题。
PingCAP
2021/11/02
7500
TiDB安装简介
TiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,结合了传统的 RDBMS 和 NoSQL 的最佳特性。TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB 的目标是为 OLTP (Online Transactional Processing) 和 OLAP (Online Analytical Processing) 场景提供一站式的解决方案。
ha_lydms
2023/08/10
5790
TiDB安装简介
多点 Dmall x TiDB:出海多云多活架构下的 TiDB 运维实战
时隔 2 年, 在 TiDB 社区成都地区组织者冯光普老师的协助下,TiDB 社区线下地区活动再次来到成都。来自多点 Dmall 的国内数据库负责人唐万民老师,在《出海多云架构,多点 TiDB 运维实战》的主题分享中,介绍了多点在出海业务场景部署和使用 TiDB 的经历。本文根据唐万民老师的演讲实录进行整理,你可以从中了解到多点从无到有,使用 TiDB 的业务场景,多云架构的实践经验,以及版本升级遇到问题的解决方案。
PingCAP
2024/05/15
1290
tidb本周精选 2021年的第 31 周
将数据按照 key 的范围划分成大致相等的切片(下文统称为 Region),每一个切片会有多个副本(通常是 3 个),其中一个副本是 Leader,提供读写服务。
早起的鸟儿有虫吃
2021/08/13
8660
相关推荐
TiDB 6.0 发版:向企业级云数据库迈进
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文