当前位置: 首页 > news >正文

一文带你读懂分库分表,分片,Sharding的许多概念

一文带你读懂分库分表,分片,Sharding的许多概念

分库是将一个库拆分为多个库,分表就是将一个表拆分为多个表。分库分表有垂直拆分和水平拆分。垂直拆分一般是按照业务将表分到不同的库中(此种不在本发的讨论范围)。水平拆分是将表的数据拆分到多个表中(此种为本发明的研究对象)。当一个表存的数据太多时,可以将表的数据拆分到多个表中,这些拆分后的表可以在同一个数据库也可以不在同一个数据库,会有:只分表,只分库,和分库分表三种类型,如图1所示。图1所示的分库分表,就是将一个orders表拆分为4个表,orders0、orders1在库ds0, orders2、orders3在库ds1。其中orders0到orders3是实际表/物理表,而0、1、2、3是实际表的下标/后缀;而orders则为基本表(基本表名)。关联表(主表与从表),指存在主外键关系的主表与从表,按照一定的DB设计原则将数据存放到两张表中。如:orders,orders_item; users,users_item;它们一般都是有外键关系(未必使用外键约束)。此外,还有不需要分片的,只存在一个库中的表,为原始表/未分片表,因为并不是所有的表都是要分片的;广播表指所有的分片数据库中都存在的表(同一广播表,在每个节点都有一个,且数据也一样),表结构及其数据在每个数据库中均完全一致。 适用于数据量不大且需要与海量数据的表进行关联查询的场景,例如:字典表。分片键,即用来寻找到对应库和表的表中字段;分片键包括分库键和分表键分库键,指表的字段中,使用其值,按一定算法找到唯一数据库的字段。如,orders订单表中,userid(用户id),可以作为分库键。分表键指表的字段中,使用其值,按一定算法找到唯一实际表的字段。比如orders订单表中,userid(用户id),可以作为分表键。数据节点为数据分片的最小单元,由数据源名称和实际表组成,如:ds1.orders1。完整的数据结点(fullNodes),指某一基本表所涉及的所有数据库和对应的实际表。数据源(ds)是指配置了数据库url,用户名,密码等信息的源,在Java中是指javax.sql.DataSource。数据源与数据库对应,在不引起混淆的情况下,可以将该两个名词视为同义词。路由到的库与表种类即分库分表种类或分片种类,根据分片键找到的库与表的个数,分为:一库一表、一库多表、多库多表、全库全表分片指分库分表,并通过一定的方法找到或操作所要的数据。分片的框架或装置,要让使用者在有分片的情况下,操作的数据与未分片时,感觉是一样的;当然打印的日志,可以提示有哪个节点执行了什么操作。

Bee, 一个具有分片功能的ORM框架,简单易用,功能强大.

除了分片配置信息,分片对使用者透明,系统是否分片,对使用者来说无需增加过多额外成本,掌握配置规则即可使用。进行分片升级,对原有系统更改小,引用接口模块的接口不需要调整。分片时,执行的sql语句与未分片时对比,差别小。分片的sql语句,易于在数据库客户端工具中进行格式化。分片节点结构变动后,可以不转移旧的数据。

一个表的分片配置信息,只需要一行:
 

ShardingConfig.addShardingBean(Orders.class,new ShardingBean("ds[0..1].orders[0..3]", "orderid"));


http://www.mrgr.cn/news/37969.html

相关文章:

  • Iterm2配置主题和Oh-My-Zsh
  • 【2米/8米光学卫星】
  • OMRON欧姆龙E5GN温控器手测
  • Rust 语言开发 ESP32C3 并在 Wokwi 电子模拟器上运行(esp-hal 非标准库、LCD1602、I2C)
  • Pandas常用数据总览,样本抽检函数
  • 【1米C-SAR卫星】
  • 《C++开源贡献:提升职业竞争力的新途径》
  • 论文阅读 | HiDDeN网络架构
  • Springboot综合练习
  • MySQL知识点复习 - 常用的日志类型
  • AI绘画相似风格的作品
  • 【python进阶攻略6】装饰器2
  • c++开发之编译curl(windows版本)
  • matlab r2024a、matlab R2024b保姆级安装教程
  • 在Ubuntu中自动挂载SMB/CIFS共享
  • SpringBoot集成AI:接入大模型框架 LangChain4j 详细教程
  • 基于微信小程序的旅游助手的设计与实现(源码+定制+文档讲解)
  • 每日一题学习笔记
  • 职业技能大赛-单元测试笔记(参数化)分享
  • 828华为云征文|华为云Flexus云服务器X实例之openEuler系统下玩转iSulad容器技术