目前,我正忙于为我的客户的现有数据库使用 Azure Elastic Scale拆分/合并示例。
我已经定义了一个数据库模式,因此可以进行拆分/合并。但是,有 1 件事给了我错误。这是对 shardlet 的嵌套引用(要拆分的标识符)。
在拆分/合并示例的文档页面上,有以下示例代码用于指定数据库模式:
// Create the schema annotations
SchemaInfo schemaInfo = new SchemaInfo();
// Reference tables
schemaInfo.Add(new ReferenceTableInfo("dbo", "region"));
schemaInfo.Add(new ReferenceTableInfo("dbo", "nation"));
// Sharded tables
schemaInfo.Add(new ShardedTableInfo("dbo", "customer", "C_CUSTKEY"));
schemaInfo.Add(new ShardedTableInfo("dbo", "orders", "O_CUSTKEY"));
// Publish
smm.GetSchemaInfoCollection().Add(Configuration.ShardMapName, schemaInfo);
这段代码可能会起作用,因为它相当简单。但是,如果有另一个表 ,OrderLines
它有一个FK
to Orders
,而它又有一个FK
to Customer
。
在这种情况下应该如何定义模式?
您是否必须指定 和 之间的orderlines
键orders
?我想这会是有道理的。
// Sharded tables
schemaInfo.Add(new ShardedTableInfo("dbo", "customer", "C_CUSTKEY"));
schemaInfo.Add(new ShardedTableInfo("dbo", "orders", "O_CUSTKEY"));
schemaInfo.Add(new ShardedTableInfo("dbo", "orderslines", "OL_ORDERKEY"));
我问的原因是因为我正在处理的数据库与 shardlet 有很多“嵌套”关系,我不确定如何指定架构。我已经注意到将它们指定ReferenceTableInfo
为不是一个选项,因为这样工具会尝试在满足OrderLines
和之间的 FK 关系之前插入记录Orders
。