私はデータ構造のようなツリーを持っています:
- 作業指示書のリストがあります
- 各作業指示書には複数の作業があります
- 各操作にはいくつかの役割があります
- 各ロールには複数のリソース ノードがあります
各作業指示書、工程、役割、およびリソース ノードには、多数の属性があります。
このようなデータ構造の 2 つのインスタンスがあります: マスターとスレーブです。スレーブを定期的に更新し、マスターと同期させたいと考えています。私の質問は次のとおりです。どうすれば本当に速くできますか?
問題は次のとおりです。
- これらの 2 つのインスタンスは巨大です
- これら 2 つのインスタンスは別々のネットワーク上にあり、スループットの低いネットワークで接続されています
- 速度は重要なパラメータです
[編集] 4. マスターのトランザクション ログへのアクセス権はありません。この時点でのマスターの状態だけです (SQL ビューへの読み取りアクセスしかありません)。[/編集]
私が考えていたのは、ノード ID、ノード属性、および子ノードのハッシュ (明らかにボトムアップ) を一緒にハッシュすることによって、両側にマークル ツリーを作成することでした。
そして、次の方法でツリーを比較します。
- トップレベルのハッシュのリストをネットワーク経由で送信する
- 等しくないノードの判別
- 不一致ノードのプロセスを再帰的に繰り返す
したがって、同期していないノードのリストを取得し、それらを更新します。
ここで見られる問題は、インスタンスを比較するたびに両方のマークル ツリーを再作成する必要があり、時間がかかることです。
それで、私が試すことができる他のアルゴリズムがあるかどうか疑問に思っていましたか?