暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

通过shard扩展数据库是很难的

如题,扩展数据库是非常难的,其中常用的一个方法就是shard分片,但其特别的复杂,尽管如此,Discord和Quora这些产品仍然选择使用shard扩展数据库。

1:什么是shard

它是从水平分区演变而来的数据库架构模式,将一个表中的行分成多个表,称为shard,这样做的目的是减少查询时需要检索的数据。

它有两种形式的shard:

逻辑shard:在单个数据库实例或服务器上进行水平数据shard无力shard:每个shard托管在不同的节点或服务器实例上,一个物理shard包含一个或多个逻辑shard

2:shard策略

👉基于Hash和key进行shard

通过对一个或多个列进行hash运算后进行shard,如图:

👉基于Range范围进行shard

比如根据价格段对产品表进行分片,如图:

👉基于目录的分片

基于lookup table shard,把这个表想象成一个目录(比如ip地址)或地址簿,它能告诉你哪个shard包含特定记录,如图:

3:shard的优势

帮助您实现横向扩展缩短查询响应时间提高可靠性

4:shard缺点

增加了数据存储的复杂性shard会随着时间的推移而失去平衡无法在多个shard之间连接数据

5:什么时候使用shard

shard是一项复杂的工作,不要在应用程序面临可扩展性问题时立即将其作为第一选择,在用尽索引、复制和分区等其他选项后再考虑使用。

文章转载自虞大胆的叽叽喳喳,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论