系分 - 案例分析 - 数据库设计(分布式)

系分 - 案例分析 - 数据库设计分布式

分布式数据库系统

在这里插入图片描述

透明性分类

在这里插入图片描述

两阶段提交协议2PC

2PC事务提交的两个阶段

表决阶段目的是形成一个共同的决定

执行阶段目的是实现这个协调者的决定

两条全局提交规则

只要有一个参与者撤销事务协调者就必须做出全局撤销决定

只有所有参与者都同意提交事务协调者才能做出全局提交决定

分区分表分库

在这里插入图片描述

分区分表
共性1 都针对数据表
2 都使用了分布式存储
3 都提升了查询效率
4 都降低数据库的频繁I/O压力值
差异逻辑上还是一张表逻辑上已经是多张表

分区技术

分区并不是生成新的数据表而是将表的数据均衡分摊到不同的硬盘系统或是不同服务器存储介质中实际上还是一张表。

使用分区技术的优点

  • 减少维护工作量。独立管理每个分区比管理单张大表要轻松得多。
  • 增强数据库的可用性。如果表的一个或几个分区由于系统故障而不能被使用那么表其余的分区仍然可以使用如果系统故障只影响表的一部分分区那么只有这部分分区需要修复这就比修复整张大表耗费的时间少许多。
  • 均衡I/O减少竞争。通过把表的不同分区分配到不同的磁盘来平衡I/O改善性能。分区对用户保持透明。最终用户感觉不到分区的存在。
  • 提高查询速度。对大表的查询、增加、修改等操作可以分解到表的不同分区中来并行执行。

数据分区技术一般分为水平分区和垂直分区数据库中常见的是水平分区。水平分区分为范围分区、哈希分区、列表分区等。

在这里插入图片描述

  • 范围分区Range按数据范围值来做分区。例按用户编号分区0-999999映射到分区A1000000-1999999映射到分区B。
  • 哈希分区Hash通过对key进行hash运算分区。例可以把数据分配到不同分区这类似于取余操作余数相同的放在一个分区上。
  • 列表分区List根据某字段的某个具体值进行分区。例长沙用户分成一个区北京用户分成一个区。
范围分区哈希分区列表分区
数据值连续连续、离散均可离散
数据管理能力
实施难度与可维护性
数据分布不均匀均匀不均匀

分区的优点

  • 相对于单个文件系统或是硬盘分区可以存储更多的数据。
  • 数据管理比较方便比如要清理或废弃某年的数据就可以直接删除该日期的分区数据即可。
  • 精准定位分区查询数据不需要全表扫描查询大大提高数据检索效率。
  • 可跨多个分区磁盘查询来提高查询的吞吐量。
  • 在涉及聚合函数查询时可以很容易进行数据的合并。

数据库主从复制

主从数据库结构特点

  1. 一般一主多从也可以多主多从。
  2. 主库做写操作从库做读操作。

主从复制步骤

  1. 主库Master更新数据完成前将操作写binlog日志文件。
  2. 从库Salve打开I/O线程与主库连接做binlogdump process并将事件写入中继日志。
  3. 从库执行中继日志事件保持与主库一致。

如下图

在这里插入图片描述

NoSQL非关系型数据库

NoSQLNot-only SQL泛指非关系型数据库。

NoSQL的使用场景NoSQL的缺点不足
1 数据模型比较简单
2 需要灵活性更强的IT系统
3 对数据库性能要求较高
4 不需要高度的数据一致性
5 对于给定key容易映射复杂值的环境
1 成熟度不够大量关键特征有待实现
2 开源数据库产品的支持力度有限
3 数据挖掘与商务智能支持不足
4 现有的产品无法直接使用NoSQL
5 擅长NoSQL的专家较少

与关系型数据库对比

关系型数据库模式NoSQL
并发支持支持并发但效率低并发性能高
存储与查询关系表方式存储SQL查询海量数据存储查询效率高
扩展方式向上扩展向外扩展
索引方式B树哈希等键值索引
应用领域通用领域特定应用领域
关系型数据库模式NoSQL
成本花费巨大成本高部署简单成本低开源
查询速度数据存储于硬盘中SQL查询慢数据存储于缓存中查询速度快
存储数据类型只支持基础数据类型结构化支持基础和对象集合等非结构化类型
扩展性多表查询扩展复杂基于键值对容易水平扩展
持久存储支持海量数据存储数据在缓存中不适用于持久存储
数据一致性需要事务强调数据的强一致性不提供、弱事务处理数据一致性较弱
数据容量数据有限海量数据
标准化

类型

键值Key - Value

键可是一个字符串对象值可以是任意类型的数据。如整型、字符型、数组、列表、集合等。

在这里插入图片描述

列族数据库

分行式存储和列式存储。

在这里插入图片描述

文档数据库

在这里插入图片描述

图形数据库

在这里插入图片描述

缓存技术

常见缓存技术

MemCacheMemcache是一个高性能的分布式的内存对象缓存系统用于动态Web应用以减轻数据库负载。Memcache通过在内存里维护一个统一的巨大的hash表它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。

RedisRedis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的APl。

Squidsquid是一个高性能的代理缓存服务器Squid支持FTP、gopher、HTTPS和HTTP协议。

思考数据库与缓存数据是否有可能不一致如何解决

Redis

Redis与Memcache对比

MemcacheRedis
数据类型简单的Key-Value结构丰富的数据结构
持久性不支持支持
分布式存储客户端哈希分片/一致性哈希多种方式主从SentinelCluster等
多线程支持支持Redis6.0开始支持
内存管理私有内存池/内存池
事务支持不支持有限支持
数据容灾不支持不能做数据恢复支持可以在做数据恢复

Redis分布式存储方案

分布式存储方案核心特点
主从Master/Slave模式一主多从故障时手动切换
哨兵Sentinel模式有哨兵的一主多从主节点故障自动选择新的主节点
集群Cluster模式分节点对等集群,分slots不同slots的信息存储到不同节点

在这里插入图片描述

Redis集群切片方式

切片方式核心特点
客户单分片在客户端通过key的hash值对应到不同的服务器
中间件实现分片在应用软件和Redis中间例如Twemproxy、Codis等由中间件实现服务到后台Redis节点的路由分派
客户端服务端协作分片客户端与服务端协作完成分片处理

Redis数据分片方案

方案分片方式说明
范围分片按数据范围值来做分片例按用户编号分片0-999999映射到实例A1000000-1999999映射到实例B。
哈希分片通过key进行hash运算分片可以把数据分配到不同实例,这类似于取余操作余数相同的放在一个实例上。
一致性哈希分片哈希分片的改进利于扩展结点可以有效解决重新分配节点带来的无法命中问题。

Redis数据类型

类型特点示例
String 字符串存储二进制任何类型数据最大512MB缓存计数共享Session
Hash 字典无序字典数组+链表适合存对象
Key对应一个HashMap针对一组数据
存储、读取、修改用户属性
List 列表双向链表有序增删快查询慢消息队列文章列表
记录前N个最新登录的用户ID列表
Set 集合键值对无序唯一
支持交/并/差集操作
独立IP共同爱好标签
Sorted Set
[Zset] 有序集合
键值对有序唯一自带按权重排序效果排行榜

Redis新的3种数据类型

Bitmaps位操作字符串

HyperLoglog

Geographic

持久化RDB和AOF

RDB传统数据库中快照的思想。指定时间间隔将数据进行快照存储。

AOF传统数据库中日志的思想把每条改变数据集的命令追加到AOF文件末尾这样出问题了可以重新执行AOF文件中的命令来重建数据集。

对比RDBAOF
备份量重量级的全量备份保存整个数据库轻量级增量备份一次只保存一个修改命令
保存间隔时间保存间隔时间长保存间隔时间短默认1秒
还原速度数据还原速度快数据还原速度慢
阻塞情况save会阻塞但bgsave或者自动不会阻塞无论是平时还是AOD重写都不会阻塞
数据体积同等数据体积小同等数据体积大
安全性数据安全性低容易丢数据数据安全性高根据策略决定

淘汰与过期时间

淘汰作用范围机制名策略
不淘汰noeviction禁止驱逐数据内存不足以容纳新入数据时新写入操作就会报错。系统默认的一种淘汰策略。
设置了过期时间的键空间volatile-random随机移除某个key
volatile-lru优先移除最近未使用的key
volatile-ttlttl值小的key优先移除
全键空间allkeys-random随机移除某个key
allkeys-lru优先移除最近未使用的key

Redis常见问题

缓存雪崩

大部分缓存失效造成数据库崩溃。

解决

  • 使用锁或队列保证不会有大量的线程对数据库一次性进行读写从而避免失效时大量的并发请求落到底层存储系统上。
  • 为key设置不同的缓存失效时间在固定的一个缓存时间的基础上 + 随机一个时间作为缓存失效时间。
  • 二级缓存设置一个有时间限制的缓存 + 一个无时间限制的缓存。避免大规模访问数据库。

缓存穿透

查询无数据返回直接查数据库。

解决

  • 如果查询结果为空直接设置一个默认值存放到缓存这样第二次到缓冲中获取就有值了。设置一个不超过5分钟的过期时间以便能正常更新缓存。
  • 设置布隆过滤器将所有可能存在的数据哈希到一个足够大的bitmap中一个一定不存在的数据会被这个bitmap拦截掉从而避免了对底层存储系统的查询压力。

缓存预热

系统上线后将相关需要缓存的数据直接加到缓存系统中。

解决

  • 直接写个缓存刷新页面上线时手工操作。
  • 数据量不大时可以在项目启动的时候自动进行加载。
  • 定时刷新缓存。

布隆过滤器用于快速识别一个元素不在一个集合中通过一个长二进制向量和一系列随机映射函数来记录与识别某个数据是否在一个集合中。

在这里插入图片描述

缓存更新

除Redis系统自带的缓存失效策略常见采用以下两种

  • 定时清理过期的缓存。
  • 当有用户请求过来时再判断这个请求所用到的缓存是否过期过期的话就去底层系统得到新数据并更新缓存。

缓存降级

降级的目的是保证核心服务可用即使是有损的而且有些服务是无法降级的如电商的购物流程等)。

在进行降级之前要对系统进行梳理从而梳理出哪些必须保护哪些可降级。

Redis相关资料

知识地图
Redis概述与安装
https://blog.csdn.net/lili40342/article/details/127852124
Redis的5大数据类型
https://blog.csdn.net/lili40342/article/details/127897689
Redis的发布和订阅
https://blog.csdn.net/lili40342/article/details/127901009
Redis新的3种数据类型
https://blog.csdn.net/lili40342/article/details/127903901
Jedis操作Redis6
https://blog.csdn.net/lili40342/article/details/127904568
SpringBoot2整合Redis
https://blog.csdn.net/lili40342/article/details/127915177
Redis事务操作
https://blog.csdn.net/lili40342/article/details/127915924
Redis持久化之RDB(Redis DataBase)
https://blog.csdn.net/lili40342/article/details/127938199
Redis持久化之AOF(Append Only File)
https://blog.csdn.net/lili40342/article/details/127938233
Redis主从复制
https://blog.csdn.net/lili40342/article/details/127942076
Redis哨兵(Sentinel)
https://blog.csdn.net/lili40342/article/details/127942838
Redis集群(Cluster)
https://blog.csdn.net/lili40342/article/details/127942123
Redis应用问题解决(缓存穿透、击穿、雪崩、分布式锁)
https://blog.csdn.net/lili40342/article/details/127942407

典型例题 1

题目描述

阅读以下关于数据库分析与建模的叙述在答题纸上回答问题1至问题3。

某电子商务企业随着业务不断发展销售订单不断增加每月订单超过了50万笔急需开发一套新的互联网电子订单系统。同时该电商希望建立相应的数据中心能够对订单数据进行分析挖掘以便更好地服务用户。

王工负责订单系统的数据库设计与开发初步设计的核心订单关系模式为ordersorder_nocustomer_noorder_dateproduct_noprice……。

考虑订单数据过多单一表的设计会对系统性能产生较大影响仅仅采用索引不足以解决性能问题。因此需要将订单表拆分按月存储。

王工采用反规范化设计方法来解决给出了相应的解决方案。李工负责数据中心的设计与开发。李工认为王工的解决方案存在问题建议采用数据物理分区技术。在解决性能问题的同时也为后续的数据迁移、数据挖掘和分析等工作提供支持。

【问题1】

常见的反规范化设计包括增加冗余列、增加派生列、重新组表和表分割。为解决题干所述需求王工采用的是哪种方法请用300字以内的文字解释说明该方法并指出其优缺点。

【问题2】

物理数据分区技术一般分为水平分区和垂直分区数据库中常见的是水平分区。水平分区分为范围分区、哈希分区、列表分区等。请阅读下表在1~8中填写不同分区方法在数据值、数据管理能力、实施难度与可维护性、数据分布等方面的特点。

在这里插入图片描述

【问题3】

根据需求李工宜选择物理水平分区中的哪种分区方法请用300字以内的文字分别解释说明该方法的优缺点。

参考答案

【问题1】

王工采用的是表分割方式中的水平分割分割参数是“月”不同的月份使用不同的关系表。

表分割包括水平分割与垂直分割两种形式

水平分割按记录进行分割不同的记录可以分开保存每个子表的列数相同。分割的条件可能是某列或多

列数据的值如时间参数。

垂直分割按进行分割即把一条记录分开多个地方保存每个子表的行数相同。把主键和一些行放到一个

表然后把主键和另外的列放到另一个表中通过主键进行关联。

王工采用水平分割的优点水平分割后可以降低在查询时需要读取的数据和索引页数同时也降低了索引的层数

提高查询速度。同时按月存储有利于数据迁移、备份和管理。

缺点逻辑上破坏了关系概念的完整性由一个关系变为多个关系在进行历史数据挖掘和分析时需要执行集

合并操作处理起来比单表操作更加复杂。

【问题2】

1连续 2离散 3弱 4强 5不好 6不好 7不均匀 8均匀

【问题3】

李工宜选择范围分区方式。

范围分区优点如下

1 分区表可以将表存储到多个表空间内各个分区维护各自的本地索引查询语句可以根据索引进行

分区范围查找提高了查询速度。

2 范围分区提供良好的数据迁移、备份和管理能力利于维护。

3 实现容易而且可以方便地对表的分区进行添加、删除、拆分和合并操作。

范围分区缺点

随着时间的增加日期数据发生变化DBA需要对分区进行维护以增加新的分区。数

据在分区上不均匀。可维护性上比较差所以可以与哈希分区组合应用。

典型例题 2

题目描述

阅读以下关于数据管理的叙述在答题纸上回答问题1至问题3。

某全国连锁药店企业在新冠肺炎疫情期间紧急推出在线口罩预约业务系统。该业务系统为普通用户提供口罩商品查询、购买、订单查询等业务为后台管理人员提供订单查询、订单地点分布汇总、物流调度等功能。该系统核心的关系模式为预约订单信息表。

推出业务系统后几天内业务迅速增长到每日10万多笔预约订单系统数据库服务器压力剧增导致该业务交易响应速度迅速降低甚至出现部分用户页面无法刷新、预约订单服务无响应的情况。为此该企业紧急成立技术团队由张工负责以期尽快解决该问题。

【问题1】

经过分析张工认为当前预约订单信息表存储了所有订单信息记录已达到了百万级别。系统主要的核心功能均涉及对订单信息表的操作应首先优化预约订单信息表的读写性能建议针对系统中的SQL语句建立相应索引并进行适当的索引优化。

针对张工的方案其他设计人员提出了一些异议认为索引过多有很多副作用。请用100字以内的文字简要说明索引过多的副作用。

【问题2】

作为团队成员之一李工认为增加索引并进行优化并不能解决当前问题建议采用物理分区策略可以根据预约订单信息表中“所在城市”属性进行表分区并将每个分区分布到独立的物理磁盘上以提高读写性能。常见的物理分区特征如下表所示。李工建议选择物理分区中的列表分区模式。

请填补下表中的空a~d)处并用100字以内的文字解释说明李工选择该方案的原因。

在这里插入图片描述

【问题3】

在系统运行过程中李工发现后台管理人员执行的订单地址信息汇总等操作经常出现与普通用户的预约订单操作形成读写冲突影响系统的性能。因此李工建议采用读写分离模式采用两台数据库服务器并采用主从复制的方式进行数据同步。请用100字以内的文字简要说明主从复制的基本步骤。

参考答案

【问题1】
索引过多的副作用有

1过多的索引会占用大量的存储空间。

2更新开销更新语句会引起相应的索引更新。

3过多索引会导致查询优化器需要评估的组合增多。

4每个索引都有对应的统计信息,索引越多则需要的统计信息越多。

5聚集索引的变化会导致非聚集索引的同步变化。

【问题2】

a属性的离散值 b周期性数据/周期数据 c能力强 d均匀

李工建议根据预约订单所在城市进行表分区而所在城市属性为离散值根据所在城市属性建立列表分区也方便不同城市处理自己的数据方便数据管理。

【问题3】

主从复制的基本步骤

1主服务器将所做修改通过自己的I/O线程保存在本地二进制日志中。

2从服务器上的I/O线程读取主服务器上面的二进制日志然后写入从服务器本地的中继日志。

3从服务器上同时开启一个SQL thread定时检查中继日志如果发现有更新则立即把更新的内容在本机的数据库上面执行一遍。

典型例题 3

题目描述

某软件企业开发了一套新闻社交类软件提供常见的新闻发布、用户关注、用户推荐、新闻点评、新闻推荐、热点新闻等功能项目采用MySQL数据库来存储业务数据。系统上线后随着用户数量的增加,数据库服务器的压力不断加大。为此该企业设立了专门的工作组来解决此问题。

张工提出对MySQL数据库进行扩展采用读写分离主从复制的策略好处是程序改动比较小可以较快完成后续也可以扩展到MySQL集群其方案如下图所示。

在这里插入图片描述

李工认为该系统的诸多功能并不需要采用关系数据库甚至关系数据库限制了功能的实现应该采用NoSQL数据库来替代MySQL重新构造系统的数据层。

而刘工认为张工的方案过于保守对该系统的某些功能如关注列表、推荐列表、热搜榜单等实现困难且性能提升不大而李工的方案又太激进工作量太大短期无法完成应尽量综合二者的优点采用Key-Value数据库 + MySQL数据库的混合方案。

经过组内多次讨论,该企业最终决定采用刘工提出的方案。

【问题1】

张工方案中采用了读写分离主从复制策略。其中读写分离设置物理上不同的主/从服务器让主服务器负责数据的a操作从服务器负责数据的b操作从而有效减少数据并发操作的c但却带来了d。因此需要采用主从复制策略保持数据的e。

MySQL数据库中主从复制是通过binary log来实现主从服务器的数据同步MySQL数据库支持的三种复制类型分别是f、g、h。

请将答案填入a~h处的空白完成上述描述。

【问题2】

李工方案中给出了关系数据库与NoSQL数据的比较如下表所示以此来说明该新闻社交类软件更适合采用NoSQL数据库。请完成下表中的a~d处空白。

在这里插入图片描述

【问题3】

刘工提出的方案采用了Key-Value数据库 + MySQL数据库的混合方案是根据数据的读写特点将数据分别部署到不同的数据库中。但是由于部分数据可能同时存在于两个数据库中因此存在数据同步问题。请用200字以内的文字简要说明解决该数据同步问题的三种方法。

参考答案

【问题1】

a写 b读 c锁争用 d数据冗余 e一致性

f基于SQL语句的复制statement-based replicationSBR

g基于行的复制row-based replicationRBR

h混合模式复制mixed-based replicationMBR

【问题2】

a最终一致性 b非结构化数据 c低事务性 d海量数据

【问题3】

1实时同步方案先查缓存查不到再从DB查询并保存到缓存更新缓存时先更新数据库再将缓存设置过程期更新缓存。

2异步队列方式同步可采用消息中间件处理。

3通过数据库插件完成数据同步。

4利用触发器进行缓存同步。

典型例题 4

题目描述

阅读以下关于Web系统架构设计的叙述在答题纸上回答问题1至问题3。

某公司开发的B2C商务平台因业务扩展导致系统访问量不断增大现有系统访问速度缓慢有时甚至出现系统故障瘫痪等现象。面对这一情况公司召开项目组讨论会议寻求该商务平台的改进方案。讨论会上王工提出可以利用镜像站点、CDN内容分发等方式解决并发访问量带来的问题。而李工认为仅仅依靠上述外网加速技术不能完全解决系统现有问题如果访问量持续增加系统仍存在崩溃的可能。 李工提出应同时结合Web内网加速技术优化系统改进方案如综合应用负载均衡、缓存服务器、Web应用服务器、分布式文件系统、分布式数据库等。经过讨论公司最终决定采用李工的思路完成改进系统的设计方案。

【问题1】

针对李工提出的改进方案从a~j中分别选出各技术的相关描述和对应常见支持软件填入下表中的1~10处。

在这里插入图片描述

a保存静态文件减少网络交换量加速响应请求

b可采用软件级和硬件级负载均衡实现分流和后台减压

c文件存储系统快速查找文件

dFastDFS

eHAProxy

fJBoss

gHadoop Distributed File System(HDFS)

hApache Tomact

iSquid

jMongoDB

【问题2】

请用100字以内的文字解释分布式数据库的概念并给出提高分布式数据库系统性能的3种常见实现技术。

【问题3】

针对B2C商务购物平台的数据浏览操作远远高于数据更新操作的特点指出该系统应采用的分布式数据库实现方式并分析原因。

参考答案

【问题1】

1b 2e 3a 4i 5c

6d 7g 8f 9h 10j

【问题2】

分布式数据库是由一组数据组成的这组数据分布在计算机网络的不同计算机上网络中的每个节点具有独立处理的能力称为场地自治它可以执行局部应用同时每个节点也能通过网络通信子系统执行全局应用。

1采用数据分片技术提高访问的局部性提升系统性能。

2采用查询优化技术包括全局查询树的变换、副本的选择与多副本的更新策略、查询树的分解、半连接与直接连接 提高查询速度。

3读写分离技术。

4负载均衡技术。

5分布式缓存技术

【问题3】

可以采用一主多从的主从复制技术进行读写分离。

在本题所涉及到的环境中浏览操作远远高于数据更新操作可以在分布式数据库中采用主从复制技术实现读写分离。主数据库负责写操作从数据库进行读操作在大数据量访问数据库时能很大程度上提升性能。

典型例题 5

题目描述

阅读以下关于分布式数据库缓存设计的叙述在答题纸上回答问题1至问题3。

某企业是为城市高端用户提供高品质蔬菜生鲜服务的初创企业创业初期为快速开展业务该企业采用轻量型的开发架构脚本语言+关系型数据库研制了一套业务系统。业务开展后受到用户普遍欢迎用户数和业务数量迅速增长原有的数据库服务器已不能满足高度并发的业务要求。为此该企业成立了专门的研发团队来解决该问题。

张工建议重新开发整个系统采用新的服务器和数据架构解决当前问题的同时为日后的扩展提供支持。但是李工认为张工的方案开发周期过长投入过大当前应该在改动尽量小的前提下解决该问题。李工认为访问量很大的只是部分数据建议采用缓存工具MemCache来减轻数据库服务器的压力这样开发量小开发周期短比较适合初创公司同时将来也可以通过集群进行扩展。然而刘工又认为李工的方案中存在数据可靠性和一致性问题在宕机时容易丢失交易数据建议采用Redis来解决问题。经过充分讨论该公司最终决定采用刘工的方案。

【问题1】

在李工和刘工的方案中均采用分布式数据库缓存技术来解决问题。请说明分布式数据库缓存的基本概念。下表中对MemCache和Redis两种工具的优缺点进行了比较请补充完善表中的空1~6。

在这里插入图片描述

【问题2】

刘工认为李工的方案存在数据可靠性和一致性的问题请说明原因。

为避免数据可靠性和一致性的问题刘工的方案采用Redis作为数据库缓存请说明基本的Redis与原有关系数据库的数据同步方案。

【问题3】

请给出Redis分布式存储的2种常见方案和Redis集群切片的几种常见方式。

参考答案

【问题1】

分布式数据库缓存指的是在高并发环境下为了减轻数据库压力和提高系统响应时间在数据库系统和应用系统之间增加的独立缓存系统。
在这里插入图片描述

【问题2】

1Memcache没有持久化功能所以掉电数据会全部丢失而且无法直接恢复这存在可靠性问题。

2Memcache不支持事务所以操作过程中可能产生数据的不一致性。

同步方案
读取数据时先读取Redis中的数据如果Redis没有则从原数据库中读取并同步更新Redis中的数据。写回时写入到原数据库中并同步更新至Redis中。

【问题3】

Redis分布式存储的常见方案

主从模式Master/Slave哨兵模式Sentinel集群模式Cluster

Redis集群切片的常见方式

1客户端分片2中间件实现分片3客户端服务端协作分片

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: 数据库