我下载了示例代码->"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行将存在于引用表的所有实例中。
然而,Sharded表是对数据进行分区的表。例如,如果Sharded表中有5行数据,那么其中2行将存在于一个Shard(或数据库)中,3行将存在另一个。所以没有两个数据库会有相同的行集。
拆分/合并工具也会使用此信息。对于复制的表,所有行都从源复制到目标,而对于分片表,行则从源移动到目标。
希望这能有所帮助!