gpt4 book ai didi

c# - 拆分/合并具有 'nested' 外键引用的 shardlet

转载 作者:太空宇宙 更新时间:2023-11-03 13:12:13 25 4
gpt4 key购买 nike

目前我正忙于使用 Azure Elastic Sc​​ale split/merge example对于我的客户的现有数据库。

我已经定义了一个数据库模式,因此可以进行拆分/合并。然而,有一件事给了我错误。这是对 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,它有一个 FKOrders,而 Orders 又有一个 FK客户

在这种情况下您应该如何定义架构?

是否必须指定 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 关系之前插入记录订单已满足。

最佳答案

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

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

关于c# - 拆分/合并具有 'nested' 外键引用的 shardlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28028271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com