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

Zoh*_*sef 5 azure-elastic-scale azure-sql-database

我下载了示例代码->“ ElasticScaleStarterKit”(在Visual Studio中->文件->新建->项目->在线->用于Azure SQL的Elastic DB Tools-入门)。

该模式定义如下:

schemaInfo.Add(new ReferenceTableInfo("Regions"));
schemaInfo.Add(new ReferenceTableInfo("Products"));
schemaInfo.Add(new ShardedTableInfo("Customers", "CustomerId"));
schemaInfo.Add(new ShardedTableInfo("Orders", "CustomerId"));
Run Code Online (Sandbox Code Playgroud)

ReferenceTableInfo与ShardedTableInfo有什么区别?

我了解,简单的区别是所有数据库(例如状态表等)都适用的“干燥”信息与特定客户的个人信息之间。

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

schemaInfo.Add(new ReferenceTableInfo("Regions"));
schemaInfo.Add(new ReferenceTableInfo("Products"));
schemaInfo.Add(new ReferenceTableInfo("Customers"));
schemaInfo.Add(new ReferenceTableInfo("Orders"));
Run Code Online (Sandbox Code Playgroud)

希望有帮助:)

谢谢!

Sil*_*mra 3

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

然而,分片表是对数据进行分区的表。例如,如果分片表中有 5 行数据,则 2 行数据将驻留在一个分片(或数据库)上,3 行数据将驻留在另一个分片上。因此,任何两个数据库都不会有相同的行集。

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

希望这可以帮助!

  • 这是否意味着如果将一行添加到其中一个分片中的引用表中,则该行将在所有分片中复制?如果使用新行更新参考表,这是最佳实践吗? (2认同)