Meteor の DDP プロトコルは、少量のデータ コレクションをサーバーからブラウザー ベースのクライアントに同期するのに非常に適しています。これにより、処理されるデータの量が本質的に制限されます。
ただし、あるサーバーから別のサーバーに大規模なコレクションを同期するために Meteor が使用されている状況や、ある MongoDB を別のサーバーと同期するために DDP プロトコル自体が使用されている状況を考えてみてください。
この場合、DDP はどのくらい効率的ですか (計算上)? 複数のクライアントにどの程度拡張できますか? パフォーマンスの制限は帯域幅のみですか、それとも DDP は一部の CPU バウンドにも影響しますか? 現在、DDP で合理的に同期できるデータの最大量はどれくらいですか? DDP はこれを行うための間違ったアプローチなのでしょうか (以下の参考文献を参照)。
いくつかの追加の考え:
- 私の知る限り、現在のバージョンの DDP は各クライアントのコレクション全体を追跡しているため、漸近的に非常に効率的とは言えません。
- スマート コレクションは、サーバーからクライアントへの同期コレクションのパフォーマンスを向上させるために作成されました。しかし、これが DDP を改善しているのか、それとも他の何かを改善しているのかは不明です。
以下も参照してください。
- 多くのリモート クライアントに MongoDB (または CouchDB) のリアルタイム レプリケーションを実装する方法
- 大量のデータを同期するための DDP とストレート MongoDB アクセス
編集:
これに関するいくつかの経験的な経験の後、答えは「あまり効率的ではない」と結論付けなければなりません。説明については、 https://stackoverflow.com/a/21835534/586086を参照してください。
Meteor 開発者との話し合いによると、この問題は将来的に DDP とパブリッシュ/サブスクライブ API のリビジョンで対処され、それによってマージ ボックスが削除され、クライアントがマージを処理することが示されました。これにより、サーバーの CPU/メモリが節約され、より大きなデータセットをネットワーク経由で送信できるようになります。