7

Meteor がデフォルトで複数のクライアント間でデータを同期するのは素晴らしいことなので、コラボレーション ドキュメント編集アプリを作成するために Meteor を検討しています。

ただし、Sameer Kalburgi の例のように、テキスト領域を使用する場合
http://www.skalb.com/2012/04/16/creating-a-document-sharing-site-with-meteor-js/
http://docshare -tutorial.meteor.com/
エクスペリエンスは最適ではありません。

同僚と同時に入力しようとしましたが、同僚が入力すると私の変更が上書きされ、その逆も同様でした。つまり、競合解決にはまだマージアルゴリズムがありません。

これはこの機能で計画されていますか? 現在これを実装する方法はありますか?Etherpad はこの問題をうまく処理しているようです。Meteor でこれを使用すると、共同ドキュメント編集アプリの作成がよりアクセスしやすくなります。

4

3 に答える 3

8

Etherpad で使用されているアルゴリズムは Operational Transformation として知られています。

それを解決するのが、運用の変革 (OT) です。聞いたことがない方のために説明すると、OT はマルチサイトのリアルタイム同時実行を行うアルゴリズムのクラスです。OT はリアルタイム git のようなものです。任意の量のラグ (ゼロから長期休暇まで) で動作します。これにより、ユーザーは低帯域幅でライブの同時編集を行うことができます。OT は、再試行、エラー、データの上書きなしに、複数のユーザー間で最終的な一貫性を提供します。

残念ながら、OT の実装は最悪です。さまざまなトレードオフを持つ 100 万のアルゴリズムがあり、そのほとんどは学術論文に閉じ込められています。アルゴリズムを正しく実装するには、非常に困難で時間がかかります。優れたライブラリが必要なので、必要に応じてどのプロジェクトでも OT をプラグインできます。

それはsharejsのサイトからのものです。既存のクライアントにフックできる node.js ベースのサーバー クライアント。

OT は、Derby の基盤を形成する Node.js の Racer モデル同期エンジンにも実装されています。現時点では、derby.js はまだそれを透過的に提供していませんが、Derby docsからも計画しています。

現在、Racer はデフォルトで、すべてのトランザクションを受信した順序で適用します。つまり、last-writer-wins です。(…) Racerは[また]ソフトウェア トランザクショナル メモリ (STM)、運用変換 (OT)、および Diff-match-patch 技術の組み合わせによる競合解決もサポートしています。

これらの機能はまだ完全には実装されていませんが、Racer のデモでは STM と OT の予備的な例が示されています。

偶然にも、sharejs チームと derbyjs チームの両方に元 Google ウェイバーが参加しています。Meteor のコア チームには、ex etherpad/Google Waver がいます。Etherpad は OT の最もよく知られた実装の 1 つであるため、Meteor もいつかサポートしたいと考えていました…</p>


于 2012-08-23T11:16:14.223 に答える
4

ShareJS を統合する Meteor スマート パッケージを作成しました。

https://github.com/mizzao/meteor-sharejs

現時点では非常に予備的なものですが、アプリにインポートしてドロップインするtextareaと、「動作する」だけです。試してみて、プルリクエストでいくつかの新機能を提出してください:)

ここでデモをチェックしてください:

http://documents.meteor.com

于 2013-06-25T19:48:15.247 に答える
0

あなたが説明することは、私にとってMeteorsの範囲外のようです. コラボレーションの可能性を設定するためのツールではありません!

それが提供するのは、サーバー データベースのサブセットに対して透過的に作業する方法です。ただし、ユースケース固有のマージ機能の実装は、フレームワークではなく、アプリケーションの仕事です。

于 2012-08-14T16:39:32.527 に答える