現在、私は顧客の既存のデータベースに対してAzure Elastic Scale の分割/マージの例を使用することに忙しくしています。
データベース スキーマを定義したので、分割/マージを行うことができます。ただし、エラーが発生することが1つあります。これには、シャードレット (分割する識別子) へのネストされた参照があります。
分割/マージ サンプルのドキュメント ページには、データベース スキーマを指定する次のサンプル コードがあります。
// 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);
このコードはかなり単純なので、おそらく機能します。しかし、 toOrderLinesを持つ別のテーブルがあり、次にto を持つ場合はどうなるでしょうか。FKOrdersFKCustomer
このような状況でスキーマをどのように定義すればよいでしょうか?
と の間のキーを指定する必要が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"));
私が質問する理由は、私が取り組んでいるデータベースにはシャードレットとのこれらの「ネストされた」関係がたくさんあり、スキーマを指定する方法がわからないためです。とReferenceTableInfoの間の FK 関係が満たされる前にツールがレコードを挿入しようとするため、それらを a として指定することはオプションではないことに既に気付きました。OrderLinesOrders