TBase数据节点在线扩容原理解析,svm数据分析数据库数据节点在线扩展原理分析对于无共享架构的分布式数据库,如何将数据均匀分布到所有节点,并在线扩展以获得更大的存储容量和更高的并发访问,成为所有分布式数据库系统面临的一大挑战。今天我就简单分享一下腾讯云数据库TBase的数据节点在线扩展方案。为了满足业务的快速增长,系......
对于无共享架构的分布式数据库,如何将数据均匀分布到所有节点,并在线扩展以获得更大的存储容量和更高的并发访问,成为所有分布式数据库系统面临的一大挑战。今天我就简单分享一下腾讯云数据库TBase的数据节点在线扩展方案。
为了满足业务的快速增长,系统不可避免地需要扩展。传统的分布式数据库采用hash(row)%nofdn,也就是说先计算分布表的hash值,然后节点数以这个值为模来决定行存储在哪个节点。这里有一个致命的问题。扩容后节点数量会增加,数据分布的计算逻辑会导致现有数据无法访问。要解决这个问题,传统的分布式数据库必须停止业务,导出所有数据,扩展后再导入。当数据量很大的时候,这个过程可能会持续几天,这对于一个7*24小时的交易系统来说,显然是无法接受的。为了解决这个问题,TBase引入了一种新的表拆分方案:分片表。
TBase的数据分布如下:
1.引入了一个中间的shard map,shard map存储了每个shard id[通过hash(key)计算,表示分布式键值]和DN之间的映射关系。
2.分布式表中的每条记录都通过hash(key)%#shardmap来确定记录存储在哪个数据节点中。
3.每个数据节点存储分配给本节点的shardid信息,然后进行可见性判断。
如下图所示,当hash(key)=1时,这一行数据将存储在DN001数据节点中;当hash(key)=2时,这一行数据将存储在DN002数据节点中,以此类推。
这样有什么好处例如,当我们向defaultgroup添加新节点时,我们只需要将shardmap中的一些id映射到新添加的节点,并迁移相应的数据。
如下图所示,在defaultgroup中添加一个新的数据节点DN003,只需要将DN001中shardid=1,DN002中shardid=4的数据迁移到DN003,就可以重新分配数据,平衡节点间的数据。
t基本在线扩展流程:
1.选择shardid以迁移到新添加的数据节点。
2.通过shardid找到要迁移的数据,以存量+增量的方式将数据迁移到新的数据节点。
3.当新节点中的数据与数据源中的数据一致时,切换协调节点(CN)中的shardmap信息,将shardmap = 3和shardmap = 4映射到dn 003(shardmap切换时,数据库集群处于只读状态,此操作将在秒内完成)。
4.数据清理,释放空间。如上图所示,清除DN001中shardid=3和DN002中shardid=4的数据。
特别声明:以上文章内容仅代表作者本人观点,不代表ESG跨境电商观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与ESG跨境电商联系。
二维码加载中...
使用微信扫一扫登录
使用账号密码登录
平台顾问
微信扫一扫
马上联系在线顾问
小程序
ESG跨境小程序
手机入驻更便捷
返回顶部