Azure sql database Azure Elastic DB中ReferenceTableInfo与ShardedTableInfo的区别是什么?

Azure sql database Azure Elastic DB中ReferenceTableInfo与ShardedTableInfo的区别是什么?,azure-sql-database,azure-elastic-scale,Azure Sql Database,Azure Elastic Scale,我下载了示例代码->“ElasticScaleStarterKit” (在visual studio->文件->新建->项目->联机->Azure SQL弹性数据库工具-入门) 模式定义如下: schemaInfo.Add(new ReferenceTableInfo("Regions")); schemaInfo.Add(new ReferenceTableInfo("Products")); schemaInfo.Add(new ShardedTableInfo("Customers", "

我下载了示例代码->“ElasticScaleStarterKit” (在visual studio->文件->新建->项目->联机->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之间有什么区别

我理解,简单的区别在于所有数据库(如状态表等)的“干燥”信息与特定客户的个人信息之间的区别

但是,如果所有的表都设置为引用,会发生什么情况呢???这种设置的缺点是什么:

schemaInfo.Add(new ReferenceTableInfo("Regions"));
schemaInfo.Add(new ReferenceTableInfo("Products"));
schemaInfo.Add(new ReferenceTableInfo("Customers"));
schemaInfo.Add(new ReferenceTableInfo("Orders"));
希望得到任何帮助:)


谢谢大家!

引用表是数据被复制的表,这意味着如果引用表有5行,那么这5行将存在于引用表的所有实例上

然而,分片表是对数据进行分区的表。例如,如果分片表中有5行数据,那么一个分片(或数据库)上有2行数据,另一个分片(或数据库)上有3行数据。因此,没有两个数据库具有相同的行集

拆分/合并工具也会使用此信息。对于复制表,所有行都从源复制到目标,而对于分片表,行则从源移动到目标


希望这有帮助

这是否意味着,如果将一行添加到某个分片中的引用表中,该行将在所有分片中复制?如果引用表更新为新行,这是最佳做法吗?当将规范化DB转换为弹性DB时,我认为需要进行反规范化,以确保切分键必须位于所有切分表上。例如,客户在一个区域内,订单只有一个客户,因此标准化订单没有RegionId,因为它是从客户派生的。但是,必须将RegionId添加到shard中-正确吗?