博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分布式数据库中间件的实现原理介绍一:分库分表【转】
阅读量:6973 次
发布时间:2019-06-27

本文共 732 字,大约阅读时间需要 2 分钟。

声明:本文并非原创,转自华为云帮助中心的服务的产品介绍。

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

    • 垂直分片

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

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

      图2 垂直分片示意图 

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

    • 水平分片

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

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

      图3 水平分片示意图 

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

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

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

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

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

转载于:https://www.cnblogs.com/husterindg/p/9101648.html

你可能感兴趣的文章
[NOI2017]泳池——概率DP+线性递推
查看>>
chrome贴吧插件——源代码
查看>>
还为代码编写愁吗?代码生成器将让你编写代码测试代码速度极大提升
查看>>
201621123048《Java程序设计》第六周学习总结
查看>>
java 查看线程死锁
查看>>
看博客学学Android(十五)
查看>>
es6中class类的全方面理解(二)------继承
查看>>
c语言文件操作
查看>>
数据结构--zkw线段树
查看>>
CSS和JS实现单行、多行文本溢出显示省略号(该js方法有问题不对)
查看>>
py 的 第28 天
查看>>
BZOJ 2627 JZPKIL
查看>>
算24 (递归)
查看>>
Oracle学习笔记安装篇之在Redhat Enterprise Linux 7.0 x86_64下安装Oracle11g R2
查看>>
C++重载赋值运算符
查看>>
NO.7:别让异常逃离析构函数
查看>>
在textarea中鼠标指定的位置插入字符或表情
查看>>
c fopen文件读写
查看>>
(转)UIColor,CGColor,CIColor三者的区别和联系
查看>>
自己动手写GC
查看>>