2

教育エコシステムに参加する Meteor でアプリを構築しています。データ ストアを Meteor と同期させる必要があるアプリケーションは多数あります (GradeBook、学生情報システム、レポート システムなど)。データストアのサイズは、数十万のドキュメントになります。

私の理解では、DDP は「クライアント」を Meteor アプリに接続するために使用されます (Meteor がデータの変更をプッシュするときにフィードをサブスクライブし、Meteor にデータを取得するために RPC を使用します)。また、「クライアント」は一般にユーザーに限定されます...そのため、データ セットのサイズは、データ全体に比べて比較的小さくなります (教師は 25 万のドキュメントのうち 100 にアクセスできる可能性があります)。

レポート システムを (「クライアント」として) DDP を使用して Meteor に接続した場合、ストア内のすべてのデータを同期する必要があります...つまり、レポート システムが Meteor への接続を失うたびに、すべてのデータがMeteor から DDP クライアントに再送されますか? (レポート システムはすべてのデータに関心があるため)...その場合、DDP はアプリケーションの同期を維持する方法ではありませんよね?...それは、はるかに小さな範囲のデータ セットを対象としています.. ..そして、物事の同期を保つために、おそらく Mongo と直接対話する必要があります。

ありがとう!マイク

4

2 に答える 2

2

特にデータの量を考慮すると、ネイトの答えは何をすべきかについて完璧だと思います。また、ページを使用してページ分割されたサブスクリプションを使用している場合、大量のデータを表示する必要がある場合は、一度にすべてをダウンロードせずにリアルタイム機能を楽しむことができます (使用することにした場合)。ただし、現時点ではデータが次のように送信されることに注意してください (セッションごとに、タブを閉じて再度開くとやり直されます)。

1 - Connect to DDP Server/Proxy (Long Polling now due to websocket issues with chrome)
2 - Establish a 'subscription'
3 - Fetch all data relevant to subscription (initial download)
4 - Subscription is complete, now the client will 'listen' for changes
5 - Any updates (remove/update/insert, etc) are sent down to the client

この時点では、古いデータがオフラインに保たれる同期システム (localstorage またはインデックス付きデータベースなど) が実際には存在しないため、ステップ 3 を回避でき、その時点からの同期のみが行われます。

これは、接続が中断された場合 (たとえば、短時間接続が失われた場合) に注意してください。Meteor は DDP ワイヤへの接続を失い、再接続すると、すべてを最初からダウンロードしたかのように再度ダウンロードします。

于 2013-04-10T19:02:43.417 に答える