分布式数据库中间件的实现原理介绍一:分库分表【转】

声明:本文并非原创,转自华为云帮助中心的分布式数据库中间件(DDM)服务的产品介绍。

分片是解决数据库存储容量限制的直接途径。分片包括垂直分片与水平分片两种方式。

    • 垂直分片

      垂直分片又叫纵向分割,即以逻辑表为单位,把原有数据库切分成多个数据库。切分后不同的表存储在不同的数据库上。

      垂直分片与业务架构设计有密切的联系。比如从业务领域对系统进行架构优化,分成多个子业务系统,各个子业务系统耦合度较低。子业务系统间以接口方式进行数据通信和数据交换。

      图2 垂直分片示意图 

      垂直拆分后业务清晰,拆分规则明确,系统之间容易整合与扩展。一般用于数据库上层架构设计。

    • 水平分片

      水平分片又叫横向分割,即以逻辑表中的数据行记录为单位,把原有逻辑数据库切分成多个物理数据库分片,表数据记录分布存储在各个分片上。

      水平分片主要用业务架构无法继续细分,而数据库中单张表数据量太大,查询性能下降的场景。通过水平分片,即解决单库容量问题,同时提高并发查询性能。

      图3 水平分片示意图 

      DDM实现了自动水平分片,应用无需关心某个数据该存储在哪一块分片上。

      对逻辑表水平分片需要依据一定的分片规则,例如一个订单跟踪系统(见图3),我们选取订单号(OrderId)作为拆分键,分别对“订单流水表”、“订单详情表”以及“物流跟踪表”进行水平拆分,拆分规则为对键值Hash后求模,则分片计算规则如下:

      H(Key(OrderId)) = Hash(Key(OrderId))%N

      其中,N表示一共有N个数据分片,H(Key(OrderId))表示该订单经过订单号Hash并求模后存储的分片编号。

      图4 分片后数据存储示意图 

原文地址:https://www.cnblogs.com/husterindg/p/9101648.html

时间: 2024-10-12 18:46:37

分布式数据库中间件的实现原理介绍一:分库分表【转】的相关文章

分布式数据库中间件的实现原理介绍四:平滑扩容

声明:本文并非原创,转自华为云帮助中心的分布式数据库中间件(DDM)服务的产品介绍. 随着业务增长,逻辑库存储空间不足,并发压力较大,此时可对DDM实例逻辑库进行平滑扩容,通过增加RDS实例来提高数据存储能力与并发支持能力. 平滑扩容是一种水平扩容方式,通过增加RDS实例的数量来提升总体数据存储容量,把分库平滑扩容到新增加的RDS实例上,保证所有的数据都是均衡分布在每个分库上,降单个RDS实例的处理压力. 平滑扩容使用限制如下: RDS实例与DDM实例需要在相同VPC,且RDS实例没有被其它DD

数据库极速飞艇源码出售之分库分表-垂直

一.数据库瓶颈 不管是IO瓶颈还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值.在业务Service来看就是,可用数据库连接少甚至无连接可用.接下来就可以想象了吧(并发量.吞吐量.崩溃). IO瓶颈第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的随机IO,降低查询速度 -> 分库和垂直分表. 第二种:网络IO瓶颈,请求的数据太多,网络带宽不够 -> 分库. CPU瓶颈第一种极速飞艇源码出售Q3266397597[da

分布式数据库中间件DDM的实现原理

随着数据量不断增大,传统的架构模式难以解决业务量不断增长所带来的问题,特别是在业务成线性.甚至指数级上升的情况.此时我们不得不通过水平扩展,把数据库放到不同服务器上来解决问题,也就是我们说的数据库中间件.作为数据库中间件,分布式数据库中间件DDM将底层数据库存储引擎以集群方式管理起来,用户使用非常方便.应用程序不需要关心具体有多少分片.类似操作单机数据库,用户通过DDM管理控制台进行数据库运维,使用JDBC等驱动服务或SQL客户端连接数据库,进行数据读写. DDM服务的业务架构图示 分片是解决数

数据库-数据库设计-分库分表

为什么要分库分表 分库分表的设计 带来的问题 扩容 分布式事务 多个路由字段怎么设置 关于分库分表最全的一篇文章 这里介绍设计分库分表框架时应该考虑的设计要点,并给出相应的解决方案. 一.整体的切分方式 简单来说,数据的切分就是通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)中,以达到分散单台设备负载的效果,即分库分表. 数据的切分根据其切分规则的类型,可以分为如下两种切分模式. 垂直(纵向)切分:把单一的表拆分成多个表,并分散到不同的数据库(主机)上. 水平(横

分布式系列十四: 分库分表

分库分表是为了应对业务系统在高并发,大数据量背景下而对数据存储进行的优化. 关于分表, 本人使用过SQLSERVER数据库有分区表, 表分区比起人为按一定策略分表有一定优势, 而且生产环境中表分区也一直运行良好. sqlserver2000有分区视图的概念, 而分区视图实际就是建立在分表基础上的, 为遵循分表策略的一系列表提供了一个统一的入口. 使用表分区或分表方案各有利弊, 具体还需视情况做权衡. 为什么要分库分表 提高查询性能 容量提升 分库分表的方法 垂直切分 垂直分库: 按照业务领域拆分

分布式中的分库分表之后,ID 主键如何处理?

面试题 分库分表之后,id 主键如何处理?(唯一性,排序等) 面试官心理分析 其实这是分库分表之后你必然要面对的一个问题,就是 id 咋生成?因为要是分成多个表之后,每个表都是从 1 开始累加,那肯定不对啊,需要一个全局唯一的 id 来支持,排序问题等.所以这都是你实际生产环境中必须考虑的问题. 面试题剖析 基于数据库的实现方案 数据库自增 id 这个就是说你的系统里每次得到一个 id,都是往一个库的一个表里插入一条没什么业务含义的数据,然后获取一个数据库自增的一个 id.拿到这个 id 之后再

分布式数据库中间件–(3) Cobar对简单select命令的处理过程

友情提示:非原文链接可能会影响您的阅读体验,欢迎查看原文.(http://blog.geekcome.com) 原文地址:http://blog.geekcome.com/archives/284 在上一篇中介绍了Cobar和client初次建立连接的过程,Cobar监听端口,client发起连接请求,Cobar发送握手数据包,client发送认证数据包最后依据认证的结果Cobar向client发送认证结果. 在认证成功后Cobar会将该连接的回调处理函数由FrontendAuthenticat

数据库分库分表中间件 Sharding-JDBC 源码分析 —— 分布式主键

关注**微信公众号:[芋道源码]**有福利: RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表 RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址 您对于源码的疑问每条留言都将得到认真回复.甚至不知道如何读源码也可以请教噢. 新的源码解析文章实时收到通知.每周更新一篇左右. 认真的源码交流微信群. 本文主要基于 Sharding-JDBC 1.5.0 正式版 1. 概述 2.KeyGenerator 2.1 D

从零开发分布式数据库中间件 一、读写分离的数据库中间件(转)

从零开发分布式数据库中间件 一.读写分离的数据库中间件 .embody { padding: 10px 10px 10px; margin: 0 -20px; border-bottom: solid 1px #ededed } .embody_b { margin: 0; padding: 10px 0 } .embody .embody_t,.embody .embody_c { display: inline-block; margin-right: 10px } .embody_t {