Re: Google Wave and consistency 一貫性
yas@is.tsukuba.ac.jp (Yasushi Shinjo) writes:
> 新城@筑波大学情報です。
>
> この記事だけでは良く分からないけれど、Xerox PARC の Jupiter
> Collaboration System の技術が使われているみたい。まだ良く分
> かってないけれど、たとえ中央のサーバあっても、末端のクライア
> ントから見た時には矛盾することはありそうなんだけどなあ。たと
> えば、誰かある行を修正していて、だれかがその行を削除したりす
> ると、どうなるんだろう。
こんな記事がありました:
http://www.atmarkit.co.jp/news/200906/01/wave.html
「開発チームが明かす、Google Waveの実装概要」
理解していませんが、目についたところを拾ってみると、
・メールシステムを作り直すとしたらどうやるかという問題意識でスタートした
・矛盾が起こらないようにするため、Waveでは各操作を変換する
「オペレーション変換」を実装している
・任意の2つの操作を1つの操作に合成する合成関数を実装した。
任意の2本の操作ストリームをこの合成器に流し込むと、
合成後の1本の操作ストリームが出てくる。
これにより、オペレーション変換を軽くすることができる。
・操作の合成に関して、編集履歴の蓄積から任意のバージョンを引き出すときに
最小限の計算量で済ませるために、「Composition tree」と呼ぶデータ構造
(2分木?) を採用した。
・クライアントから操作(差分)を送るときに
サーバから明示的に送信許可(ACK)を受け取る必要がある。
任意に受け付けるのを行わないことで、状態数を減らせる。
だそうです。
Xerox の論文へのリンクも載ってました:
http://mirrors.ccs.neu.edu/MOO/papers/JupiterWin.ps
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735