第04篇_Others

第01章_TDSQL快速入门

第一节 Tdsql(MySql版)简介

1. TDSQL(MySql版)简介

腾讯分布式数据库(Tencent Distributed SQL,TDSQL)是腾讯研发的一款兼容MySQL协议的国产分布式数据库,适用于超大并发、超高性能、超大容量的 OLTP 类场景,提供了弹性扩展、备份、恢复、监控等全套解决方案。

 

2. 组件架构

image-20240104103723191

 

3. 表分类

建表有三种模式,分别是单表广播表分表

 

1) 单表

单表的数据全部存放在第一个分片(set),常用于存储相对独立、访问量小的业务数据,不支持水平扩容。

注意:

  1. 如果单表数据量/访问量过大,会导致第一个分片负载较高

  2. 和分表进行联表查询时,通常需要进行跨分片联表查询,执行效率较低

 

2) 广播表

广播表在每个分片都存储全量数据,使用分布式事务维护多个物理分片间的数据一致性,常用于存储需联合查询、变更量小的业务数据。

注意:

  1. 如果广播表数据量/变更量过大,所有物理分片负载较高。

  2. 方便和分表进行联表查询,与任意表做联表查询都无需跨物理分片联表查询。

 

3) 分片表

分片表根据shardkey将数据分布到不同的分片,支持Hash、Range、List三种分片算法,常用于存储数据量大、访问量大的业务数据。

注意:

  1. TDSQL支持LIST、RANGE、HASH三种类型的一级分片,同时支持支持RANGE、LIST两种格式的二级分区。

  2. Shardkey字段的类型必须为 int/bigint/smallint/char/varchar 之一。

  3. Shardkey字段的值不能为中文,因为Proxy不会转换字符集,所以不同字符集可能会路由到不同的分区。

  4. 创建主键和所有唯一索引必须包含shardkey,执行INSERT/REPLACE语句也必须包含shardkey。

  5. 不允许更新shardkey字段的值,只能删除后再重新插入。

  6. SELECT 语句如果不带shardkey,需查询所有分片后聚合处理结果,影响执行效率

  7. 多个分表联合查询,根据shardkey进行等值关联时,无需跨物理分片联表查询,执行效率较高;无法根据shardkey进行等值关联时,需要进行跨物理分片联表查询,执行效率较低;

 

 

4. 应用开发简介

1) 连接

 

2) 开发示例

 

3) 透传SQL

注意:

  1. 使用透传进行增删改时,不会使用分布式事务控制,可能导致各分片间数据不一致。

 

 

5. 不支持的特性

1) 不支持的大特性

 

2) 不支持的DDL

 

2) 不支持的DML

 

3) 不支持的DCL

 

6. 数据备份与恢复简介

image-20240106151938004

注:

  1. 各工具使用方法请参考《MySql学习笔记.md》

 

 

7. 查询计划简介

1) 生成执行计划

image-20240106152446635

 

2) 分布式下推

TDSQL(MySql版)仅支持几种特殊场景(如ShardKey等值连接)进行下推,大都场景需根据业务判断是否可以使用透传语法强制下推。

使用强制下推需要满足如下一些条件:

部分SQL下推后,需在业务层自己做汇总,如:

对于某些极端场景,不能直接下推的,可以采用二阶段执行的方法:

 

 

第二节 TDSQL(Postgresql版)简介

 

第02章_OceanBase快速入门

第一节 OceanBase简介

1. OceanBase简介

OceanBase 数据库是由蚂蚁集团和阿里巴巴完全自主研发的金融级分布式关系数据库。

 

2. 整体架构

基础组件图

1) 集群

OceanBase 数据库通过 OceanBase 集群来进行管理。

2) 区(Zone)与节点(OBServer)

一个 OceanBase 集群可能存在多个区(Zone),每个区又可能包含多个节点(OBServer),节点的概念类似于TDSQL中的分片,每个分片存储分片表中的某部分数据,所有分片组成全量数据?

是一个逻辑概念,表示集群内具有相似硬件可用性的一组节点,它在不同的部署模式下代表不同的含义。例如,当整个集群部署在同一个数据中心(IDC)内的时候,一个区的节点可以属于同一个机架,同一个交换机等。当集群分布在多个数据中心的时候,每个区可以对应于一个数据中心。每个区具有 IDC地域(Region)两个属性,描述该区所在的 IDC 及 IDC 所属的地域。一般地,地域指 IDC 所在的城市。区的 IDC 和 Region 属性需要反映部署时候的实际情况,以便集群内的自动容灾处理和优化策略能更好地工作。

3) 资源池

一般情况下,各个 Zone 内的机器配置与数量保持一致,多台 OBServer 作为资源组成各个业务所需的资源池,资源池包括指定规格的 CPU、内存、存储等。管理员可以根据业务情况,将资源再划分成不同大小的资源池分配给租户使用。

4) 租户

租户是一个逻辑概念,在 OceanBase 数据库中,租户是资源分配的单位,是数据库对象管理和资源管理的基础。

租户在一定程度上相当于传统数据库的"实例",租户之间是完全隔离的(内存是物理隔离、CPU 是逻辑隔离)。

总体上来说,租户(tenant)既是各类数据库对象的容器,又是资源(CPU、Memory、IO 等)的容器。

5) 数据库

租户拥有资源池后,可以创建数据库分区等。

6) 副本

OceanBase 数据库参考传统数据库分区表的概念,把一张表格的数据划分成不同的分区(Partition)。在分布式环境下,为保证数据读写服务的高可用,OceanBase 数据库会把同一个分区的数据拷贝到多个机器。

不同机器同一个分区的数据拷贝称为副本(Replica)。同一分区的多个副本使用 Paxos 一致性协议保证副本的强一致,每个分区和它的副本构成一个独立的 Paxos 组,其中一个分区为主副本(Leader),其它分区为从副本(Follower)。

主副本具备强一致性读和写能力,从副本具备弱一致性读能力。

 

3. 兼容性

 

4. 管理工具

工具工具介绍
OBClient连接数据库的客户端工具。 可同时兼容访问 OceanBase 数据库的 MySQL 以及 Oracle 租户。
MySQL 客户端连接数据库的客户端工具。 仅支持访问 OceanBase 数据库的 MySQL 租户。
OceanBase 云平台数据库的管理平台。 可同时兼容访问 OceanBase 数据库的 MySQL 以及 Oracle 租户。 不仅提供对 OceanBase 集群和租户等组件的全生命周期管理服务,同时也对 OceanBase 数据库相关的资源(主机、网络和软件包等)提供管理服务,让您能够更加高效地管理 OceanBase 集群,降低企业的 IT 运维成本。
OceanBase 开发者中心企业级数据库开发平台。 支持连接 OceanBase 数据库的 MySQL 租户和 Oracle 租户,同时为数据库开发者提供了数据库日常开发操作、WebSQL、SQL 诊断、会话管理和数据导入导出等功能。
1) ObClient
2) MySQL 客户端

 

 

5. 使用限制

 

6. 高可用方案简介

1) 同城两机房"主-备"部署

3

2) 两地三中心"主-备"部署

4

 

7. JDBC连接

1) JDBC驱动
2) oceanbase-client
3) mysql-connector-Java
4) 连接参数
参数说明推荐值
socketTimeout网络套接字操作的超时时间,单位为毫秒。默认值为 0,表示禁用超时。需要根据业务实际情况设置。
connectTimeout链接建立超时时间,如果不设置默认是 0,使用 OS 默认超时时间。500 ms
5) Druid 连接池配置

 

8. 关于OB数据库的分布式

1) 分区表

总结:要想实现分布式快速关联查询,则必须属于同一Partition Group,要属于同一分区组,则必须属于同一TableGroup,要属于同一表组,则必须满足上述表组三要素相同。

2) 创建分区表

第03章_GlodenDB快速入门

第一节 GlodenDB简介

1. GlodenDB简介

GoldenDB 是中兴通讯的关系型分布式数据库产品,满足 OLTP 类应用,同时兼顾 OLAP 数据处理要求。

 

2. 整体架构

GoldenDB整体架构如下图所示包括:

图片

计算节点主要负责分布式优化、执行具体的分布式计划、分布式事务控制、存储节点负载均衡、用户认证与鉴权等任务。

数据节点用于实际存储数据、执行原子Sql操作和本地事务控制。

每个数据节点对应一个MySQL节点,多个数据节点组成一个安全组(Group)。在安全组中,数据节点按照一主多备进行快同步数据复制。

多个Group组成一个数据库集群,数据在Group之间按照用户设计的策略进行水平分布。

全局事务协调中心,用于协助计算节点进行分布式事务管理,主要包括生成、释放全局事务ID(GTID)、维护活跃事务以及当前活跃GTIDs的快照。在GoldenDB中,只有跨分片的写操作才会申请GTID,其它读查询操作和单分片的写操作都不会申请GTID。

管理节点包含四个主要的功能模块:

OMM是整个分布式数据库系统中用于进行维护工作的管理平台,负责所有组件的管理,主要功能包括用户和权限管理、统计监控、元数据管理、DBProxy管理、Cluster管理、操作日志查询、资源管理、FAQ管理、OMM系统配置、数据库备份管理、数据重分布等功能。

 

 

3. 连接方式

应用客户端可以通过JDBC或者ODBC直接连接到计算节点,也可以经过负载均衡F5或loadbalance或LVS的方式连接到计算节点,达到流量均衡的目的。