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

时间:2015-12-09 12:54:04

标签: azure-sql-database azure-elastic-scale

我下载了示例代码 - > “ElasticScaleStarterKit” (在visual studio中 - >文件 - > new - >项目 - >在线 - >用于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"));

希望有任何帮助:)

谢谢你!

1 个答案:

答案 0 :(得分:3)

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

但是,Sharded Table是分区数据的表。例如,如果Sharded表中有5行数据,那么2将存在于一个Shard(或数据库)中,而3将存在于另一个Shard(或数据库)中。因此,没有两个数据库具有相同的行集。

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

希望这有帮助!