通常は相互に通信できない 2 つのオフライン システムがあります。両方のシステムは、アイテムの同じ順序付きリストを維持します。リストを同期するために相互に通信できることはめったにありません。
編集を検出するために、アイテムには変更のタイムスタンプが付けられます。(自動インクリメント整数を使用するのではなく) 新しいアイテムを挿入するときの競合を避けるために、アイテムは UUID によって識別されます。同期すると、新しい UUID が検出され、他のシステムにコピーされます。削除についても同様です。
上記のデータ構造は、順序付けされていないリストには問題ありませんが、順序付けをどのように処理できますか? 整数の「ランク」を追加した場合、新しいアイテムを挿入するときに番号を付け直す必要があります (したがって、1 つの挿入だけのために後続のすべてのアイテムを同期する必要があります)。別の方法として、分数ランク (先行アイテムと後続アイテムのランクの平均を使用) を使用することもできますが、多くの新しいアイテムが挿入されるとすぐに精度の問題が発生するため、これは堅牢なソリューションとは思えません。
また、これを、各アイテムがその先行アイテムと後続アイテムの UUID を保持する二重リンク リストとして実装することも検討しました。ただし、1 つの新しいアイテムが挿入されたときに 3 つのアイテムを同期する必要があります (または、1 つのアイテムが削除されたときに残りの 2 つのアイテムを同期する)。
できれば、新しく挿入されたアイテムのみを同期する必要があるデータ構造またはアルゴリズムを使用したいと考えています。そのようなデータ構造は存在しますか?
編集: 既存のアイテムを別の位置に移動することも処理できる必要があります!