将大数据集分为多个块,存储在不同的服务器上
可扩展性: 不同的分片可以放在不同的服务器上,分散读请求
复杂查询可以并行的在不同的分片上执行
写请求分散到各个服务器上
每个服务器上数据保持均匀,避免数据倾斜
分片策略解决了写和主键查询的问题,但是如何解决其他查询条件查询?如何在数据分片的情况下建立二级索引?
分片数据需要从一个节点迁移到另一个节点 (partition rebalancing)
自动重平衡
优点:不需要人工干预
缺点:分片数据移动是昂贵的操作,会对集群性能产生不可知影响,并容易引起雪崩效应
人工重平衡
优点:可控性强
缺点:响应速度慢
重平衡之后客户端需要知道连接到哪个节点
客户端存储分片METADATA并直接路由到新节点
优点:直接路由, 速度快
缺点:客户端需要感知分片topology变化
客户端感知路由变化是一个挑战性的问题. (网络延迟/分区等), 需要分布式一致性协议,或者用集中式路由METADATA存储如zookeeper等
分析型数据库需要将复杂的QUERY分解成可多个并发执行的分片和阶段,构成一个有向无环图
一般SHARDING和REPLICATION会一起使用,一个分片会保存在多个服务器上
一致性HASH: 主要解决CDN网络随机选择分片边界而不需要一个集中式的一致性协议,一般不太适合使用于数据库
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。