ReferenceTableInfo 与 Azure Elastic DB 中的 ShardedTableInfo 有什么区别?

What is the difference between ReferenceTableInfo to ShardedTableInfo in Azure Elastic DB?

我下载了示例代码 -> "ElasticScaleStarterKit" (在 visual studio -> 文件 -> 新建 -> 项目 -> 在线 -> Elastic DB Tools for Azure SQL - 入门)。

架构定义如下:

schemaInfo.Add(new ReferenceTableInfo("Regions"));
schemaInfo.Add(new ReferenceTableInfo("Products"));
schemaInfo.Add(new ShardedTableInfo("Customers", "CustomerId"));
schemaInfo.Add(new ShardedTableInfo("Orders", "CustomerId"));

ReferenceTableInfo 和 ShardedTableInfo 有什么区别?

我知道简单的区别是 "dry" 所有数据库的真实信息(如状态 table 等...)和特定客户的个人信息。

但是,如果所有 table 都设置为引用会怎样? 这种设置的缺点是什么:

schemaInfo.Add(new ReferenceTableInfo("Regions"));
schemaInfo.Add(new ReferenceTableInfo("Products"));
schemaInfo.Add(new ReferenceTableInfo("Customers"));
schemaInfo.Add(new ReferenceTableInfo("Orders"));

希望得到任何帮助:)

谢谢!

引用Table是复制了数据的table,这意味着如果引用table有5行,那么这5行将存在于引用的所有实例中table。

然而,Sharded Table 是数据分区的一种。例如,如果您在 Sharded table 中有 5 行数据,那么 2 行将存在于一个碎片(或数据库)上,而 3 行将存在于另一个碎片上。所以没有两个数据库会有相同的行集。

split/merge 工具也使用此信息。对于复制的 tables,所有行都从源复制到目标,而行从源移动到目标以进行分片 tables。

希望对您有所帮助!