2

目前,我正忙于为我的客户的现有数据库使用 Azure Elastic Sc​​ale拆分/合并示例。

我已经定义了一个数据库模式,因此可以进行拆分/合并。但是,有 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它有一个FKto Orders,而它又有一个FKto Customer

在这种情况下应该如何定义模式?

您是否必须指定 和 之间的orderlinesorders?我想这会是有道理的。

// 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

4

1 回答 1

1

拆分/合并服务将跟踪 FK 依赖关系并以正确的顺序移动表。重要的是即使 OrdersLines 表也包含分片键(客户键),然后它还需要包含一个 order-key 来处理 FK。但是这个键不需要是 SchemaInfo 的一部分。

但是,在您对 OrdersLines 表的定义中,FK 引用将是 Customer-key、Order-key 作为组合。

于 2015-01-24T05:23:13.997 回答