分片
分片是一个成熟的概念,起源于数据库设计。它是指将一个逻辑数据集拆分并分布到多个数据库中,这些数据库不共享任何内容,并可跨多个服务器部署。 简单地说,分片允许横向扩展--将数据分割成可以并行处理的不同独立片段。这是世界从数据向大数据过渡的一个关键概念。 当数据集变得太大,无法用传统方法处理时,除了将其分解成更小的片段外,就没有其他扩展方法了。
分片是TON区块链中的一种机制,它允许处理大量交易。TON中分片的主要思想是,当账户A向账户B发送消息,同时账户C向账户D发送消息时,这两个操作都可以异步进行。
默认情况下,在基本链(workchain=0
)中只有一个分片,其分片号为 0x8000000000000000
(或二进制表示为 1000000000000000000000000000000000000000000000000000000000000000
)。主链(workchain=-1
)始终只有一个分片。
拆分
每个分片负责一些具有某些共同二进制前缀的账户子集。这个前缀出现在分片ID中,由一个64位整数表示,其结构为:<二进制前缀>100000...
。例如,ID为 1011100000...
的分片包含所有以前缀 1011
开头的账户。
当某个分片中的交易数量增长时,它会分裂成两个分片。新分片获得以下ID:<父前缀>01000...
和 <父前缀>11000...
,分别负责以 <父前缀>0
和 <父前缀>1
开头的账户。分片中的区块序列号从父区块的最后一个序列号加1开始连续。拆分后,分片独立进行,可能会有不同的序列号。
工作链
示例: