[解決済み] OTとCRDTの違い
質問
Operational TransformとCRDTの主な違いについて、簡単に説明してもらえますか?
私の理解では、どちらも分散システムの異なるノードでデータが衝突することなく収束することを可能にするアルゴリズムです。
どのようなケースでどちらのアルゴリズムを使うのでしょうか? 私の理解では、OTは主にテキストに使われ、CRDTはより一般的で、より高度な構造を扱うことができますよね?
CRDTはOTより強力なのでしょうか?
私がこの質問をするのは、HTML ドキュメント用の共同エディターをどのように実装するか考えており、最初にどの方向に目を向けるべきかわからないからです。私は ShareJS プロジェクトと、ブラウザ上でリッチ テキスト コラボレーションをサポートする彼らの試みは
contenteditables
要素でリッチテキストのコラボレーションをサポートする試みを見ました。ShareJS のどこにも、そのために CRDT を使用する試みが見当たりません。
Google DocsがOTを使っていて、リッチドキュメントのリアルタイム編集のためにかなりうまくいっていることも知っています。 Google が OT を使用することを選択したのは、当時 CRDT があまり知られていなかったからでしょうか。それとも、今日でも良い選択なのでしょうか?
また、データベースでこれらのアルゴリズムを使用するような、他のユースケースについても聞きたいと思っています。RiakはCRDTを使用しているようです。OTはデータベースのノードを同期するためにも使用でき、Paxos/Zab/Raftの代替となり得るでしょうか?
どのように解決するのですか?
どちらのアプローチも、最終的な一貫性を提供するという点では似ています。違いは、それをどのように行うかにあります。1 つの見方としては
- OTは 操作 . オペレーションはワイヤーを介して送信され、同時進行のオペレーションは受信されると変換されます。
- CRDTは、それを行うために 状態 . 操作はローカルのCRDTに対して行われます。その状態はワイヤーを介して送信され、コピーの状態とマージされる。マージが何回行われるか、どのような順序で行われるかは問題ではなく、すべてのコピーが収束します。
確かに、OT は主にテキストに使用され、CRDT よりも古いものです。 研究 はそれを示しています。
文献にある多くのOTアルゴリズムが、作者が述べたのとは異なり その著者によって述べられたものとは異なり
言い換えれば、CRDTのマージは可換であるのに対し、OTの変換関数はそうでない場合があるということです。
より WikipediaのCRDTに関する記事 :
<ブロッククオートOTは一般に複雑で非スケーラブルである。
CRDT(セット、カウンタ、...)には、さまざまな種類の問題に適したものがあります。テキスト編集のために設計されたものもあります。例えば、Treedoc -は 協調的編集のための可換複製データ型 .
関連
-
[解決済み】なぜO(n)はO( nlog(n) )よりも優れているのでしょうか?)
-
[解決済み] DFS-Forest Componentとは?
-
[解決済み] T(n) = 2T(n/2) + O(n) からO(nlogn)を得る方法
-
[解決済み] DPLLアルゴリズムはどのように動作しますか?[クローズド]
-
[解決済み] ビッグシータ記法の証明
-
[解決済み] 2つの緯度経度点間の距離を計算する?(ハバーシンの公式)
-
[解決済み] MongoDBとその逆の上にCouchDBを使用するとき
-
[解決済み] MapReduceのソートアルゴリズムはどのように動作するのですか?
-
[解決済み] ハングマンの難易度を「易しい」「中くらい」「難しい」に分類するためのアルゴリズム
-
[解決済み] リンクリストのソートで最も高速なアルゴリズムは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ベルマンフォードとダイクストラの比較。どのような状況下でベルマンフォードが優れているか?
-
[解決済み] このHeld-Karp TSP Pseudocodeの説明をお願いします。
-
[解決済み] DPLLアルゴリズムはどのように動作しますか?[クローズド]
-
[解決済み] 決定論的クイックソートとは何ですか?
-
[解決済み] あるアルゴリズムの計算量がO(log log n)になる原因は何でしょうか?
-
[解決済み] アルゴリズム設計マニュアル』の解答はどこにあるのですか?[クローズド]
-
[解決済み] ユダヤ人の足の爪を切る最適なアルゴリズムとは?
-
[解決済み] 3点から角度を計算するには?[閉じる]
-
[解決済み] ユークリッド・アルゴリズムの時間計算量
-
[解決済み] 学校の時間割を作成するアルゴリズム