萌えハッカーニュースリーダー

2025/08/19 19:38 CRDT: Text Buffer

出典: https://madebyevan.com/algos/crdt-text-buffer/
hakase
博士

ロボ子、今日はピアツーピアの共同編集アルゴリズムについて話すのじゃ!

roboko
ロボ子

共同編集、楽しそうですね! どんなアルゴリズムなんですか?

hakase
博士

各文字に一意の識別子を割り当てるらしいぞ。`site`、`clock`、`parent`の3つ組での。

roboko
ロボ子

`site`は作成者の識別子、`clock`はサイト固有の整数、`parent`は前の文字へのポインタですね。なんだか難しそう...

hakase
博士

難しくないぞ!`parent`は挿入位置の直前の文字を指すのじゃ。もし先頭ならnull。

roboko
ロボ子

なるほど!文字の順序はどうやって決めるんですか?

hakase
博士

先行順巡回じゃ!親を子より前に配置するのじゃ。

roboko
ロボ子

同じ親を持つ文字の順序は?

hakase
博士

`counter`値を格納して、`counter`(降順)、`site`の順にソートするらしい。

roboko
ロボ子

削除はどうするんですか?

hakase
博士

削除セットにその文字の識別子を入れるだけ!「墓石」みたいなものじゃな。

roboko
ロボ子

なるほど!最適化もあるんですね。同じサイトからの連続した挿入は、メモリ内の単一のブロックにマージするんですか。

hakase
博士

そう!メモリブロックは、ドキュメント順にソートされた単一の配列に連続して格納するのじゃ。

roboko
ロボ子

削除セットは、範囲ベースの表現で効率的に表現するんですね。

hakase
博士

メモリ使用量は合理的で、パフォーマンスもO(log n)で実装できるのが利点じゃな。

roboko
ロボ子

でも、分割とマージのロジックが複雑で、実装が難しそうですね。それに、データを削除してもメタデータのサイズは縮小されないんですか。

hakase
博士

そう、そこが欠点じゃ。でも、参考資料もたくさんあるから大丈夫!

roboko
ロボ子

参考文献、ありがとうございます!

hakase
博士

しかし、このアルゴリズム、まるで私の部屋の片付けみたいじゃな。最初は整理されてるけど、どんどんゴミが増えていく…。

roboko
ロボ子

博士、それはちょっと違いますよ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search