問題タブ [changestream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mongodb - 新しいノードを MongoDB レプリカ セットに追加する際の変更ストリームの反応
MongoDB 4.0 を 3 ノードのレプリカ セットとして使用しています。2 つのデータ ノードと 1 つのアービター。私のアプリケーション (ASP.NET Core 2.2) は変更ストリームを使用します。このシナリオを考えてみましょう。プライマリ ノードがダウンし、セカンダリ ノードがプライマリになり、レプリカ セットでダウンしているノードを新しいノードに置き換え、同期を開始します。この場合、変更ストリームはどうなりますか?
私の 2 番目の質問は、私のアプリケーションでreadPreference
はsecondary
、セカンダリ ノードがダウンしたときに MongoDB が自動的に読み取ることを期待していますprimary
が、それは起こらず、アプリケーションの読み取りに問題がありました。それは正常ですか?
mongodb - PSAアーキテクチャでMongoDBが大多数を検出する方法は?
3 つのノード (2 つのデータ ノードと 1 つのアービター (PSA)) を持つレプリカ セットがあるとします。プライマリ ノードとの同期中に何らかの理由でデータ ノードの 1 つがダウンし、元に戻すと、状態は になりますSTARTUP2
。私change stream
のレプリカセットには2つのデータノードがありますが、読み取るノードの大部分がありません。
この問題をどのように処理できますか?
この MongoDB docも読みました。プライマリ ノードの値をセカンダリ ノードよりも高く設定することは可能ですpriority
か (つまり、プライマリ ノードと同期しています)? セカンダリ ノードがSTARTUP2
状態の場合でも、これを行うことで過半数を取得できますか?
mongodb - 変更ストリーム レプリカ セットでの MongoDB バッチ読み取り実装の問題
問題:
推論生成プロセスは、1 秒あたり約 300 の推論データを MongoDB コレクションに書き込みます。MongoDB の変更ストリーム機能は、別のプロセスによって利用され、これらの推論を読み戻し、後処理を行います。現在、変更ストリーム関数 API (mongoc_change_stream_next()) が呼び出されると、単一の推論データのみが返されます。したがって、すべての推論データを 1 秒以内に保存するには、このような呼び出しを合計 300 回行う必要があります。ただし、各読み取りの後、単一/複数の推論データの後処理を実行するために約 50 ミリ秒の時間が必要です。単一データ リターン モデルのため、15 倍の実効レイテンシが導入されます。この問題に取り組むために、私たちはMongoDB の変更ストリーム機能に沿ったバッチ読み取りメカニズム。同じものを実装するためにさまざまなオプションを試しましたが、変更ストリーム API 呼び出しごとに 1 つのデータしか取得できませんでした。この問題を整理する方法はありますか?
プラットフォーム:
OS: Ubuntu 16.04
Mongo-c-driver: 1.15.1
Mongo サーバー: 4.0.12
試したオプション:
カーソルのバッチ サイズを 1 より大きく設定する。
node.js - 要素を含む配列を持つMongoDB変更ストリーム?
MongoDB で変更ストリームを使用して、参加者配列にユーザー ID が含まれるドキュメントの変更を監視しようとしています。
MongoDB 変更ストリームにより、ユーザーは個々のフィールドが一致するドキュメントの変更を監視できることを理解しています。ただし、'participants' 配列にユーザー ID が含まれている場所で変更を監視するにはどうすればよいですか?
このコードは、参加者を単一のフィールドとして扱い、参加者が と等しい場所のみを監視していsocket.uid
ます。participants
が含まれ ている場所を見ることは可能socket.uid
ですか?