前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分库分表学习2-常用的术语

分库分表学习2-常用的术语

作者头像
路行的亚洲
发布2021-08-20 15:04:45
6260
发布2021-08-20 15:04:45
举报
文章被收录于专栏:后端技术学习

1.分库分表的方式

垂直分表:
代码语言:javascript
复制
将一个表按照字段分成多表,每个表存储一部分字段,也即一表拆多表,按照特定字段。
垂直分库:
代码语言:javascript
复制
将原来关联紧密的数据库进行解耦,一库多表->多库多表,按照不同的表。
水平分表:
代码语言:javascript
复制
一库一表->一库多表
水平分库:
代码语言:javascript
复制
采用取模的方式将满足条件的方式存储到不同的库中,比如单双数据库将数据存储到不同库中,一库一表->多库一表

2.相关术语

逻辑表:
代码语言:javascript
复制
水平拆分的数据表的总称,如订单表:t_order_0、t_order_1...中的t_order
真实表:
代码语言:javascript
复制
在分片数据库中真实的表,如t_order_0、t_order_1等
数据节点:
代码语言:javascript
复制
数据分配的最小物理单元,由数据源和数据表组成,如ds_0.t_order_1
绑定表:
代码语言:javascript
复制
分片规则一致的主表和子表,如t_order表和t_order_item表都是以order_id进行分片,绑定表之间的分区键完全相同,则此两张表互为绑定表关系。绑定表之间多表关联查询不会出现笛卡尔积,查询效率会大大提升。绑定关系后,路由sql将会减少,提升效率。
广播表:
代码语言:javascript
复制
所有分片数据源都存在的表,表结构和表数据在每个数据库均一致。适用于数据量不大但和海量数据表关联的场景。
分片键:
代码语言:javascript
复制
用于分片的数据库字段,是将数据库(表)水平拆分的关键字段。如果sql中无分片键,则路由效果差,也即此时查询的语句是多种,此时查询效率不是很好。
分片算法:
代码语言:javascript
复制
支持equal、in、between
分片策略:
代码语言:javascript
复制
包括分片键和分片算法,真正可用于分片操作的是 分片键 + 分片算法 ,常用的分片策略:使用groovy表达式:如t_order_$->{u_id%8}表示订单表按照u_id取模分为8张表
自增主键生成策略:
代码语言:javascript
复制
通过在客户端生成自增主键替换以数据库原生自增主键的方式,做到分布式主键无重复。

3.sql执行过程

如官方图所示:

过程可以总结为:

代码语言:javascript
复制
当sharding-jbdc接收到一条sql语句的时候,会陆续执行:
 sql解析
 查询优化
 sql路由
 sql改写
 sql执行
 结果归并
 返回执行结果

sql解析分为:

代码语言:javascript
复制
SQL解析过程分为词法解析和语法解析。语法解析器用于将sql拆解为不可再分的原子符号,称为token.并根据不同的数据库方言所提供的字典,将其归类为关键字、表达式、字面量、操作符。再使用语法解析器将sql转换为抽象语法树。
sql路由:
代码语言:javascript
复制
把针对逻辑表的数据操作映射到对数据节点的操作过程

不携带分配键的为广播表

根据分片键可以分为:
代码语言:javascript
复制
直接路由
标准路由:推荐的分片方式,使用范围不包括关联查询 或 仅包含绑定表之间关联查询的sql.当时=号落入单库中,如果between或者in时,结果不一定落入唯一库中
笛卡尔路由:所有结果的排列组合 性能较差
广播路由:不带分片键,分为全库表路由、全库路由、全实例路由、单库路由、阻断路由
全库路由:用于处理数据库中与其逻辑表相关的所有真实表的操作,主要包括:不带分片键的DQL、DML、DDL
sql改写:
代码语言:javascript
复制
用于将逻辑sql改写为在真实数据库中可以正确执行的sql
sql执行:
代码语言:javascript
复制
sharding-jdbc采用一套自动化的执行引擎,负责将路由和改写完成的真实sql安全且高效的发送到底层数据源执行。它能在以下两种模式下自适应切换:
内存限制模式:使用前提是sharding-jdbc对一次操作所耗费的数据库连接数不做限制,使用于OLAP
连接限制模式:使用前提是严格控制对一次操作所消耗的数据库连接数量,适用于OLTP,OLTP带分片键
结果归并:
代码语言:javascript
复制
遍历
排序
分组
分页
聚合
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 后端技术学习 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.分库分表的方式
    • 垂直分表:
      • 垂直分库:
        • 水平分表:
          • 水平分库:
            • 2.相关术语
              • 逻辑表:
              • 真实表:
              • 数据节点:
              • 绑定表:
              • 广播表:
              • 分片键:
              • 分片算法:
              • 分片策略:
              • 自增主键生成策略:
            • 3.sql执行过程
              • sql路由:
              • 根据分片键可以分为:
              • sql改写:
              • sql执行:
              • 结果归并:
          相关产品与服务
          数据保险箱
          数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档