sql >> データベース >  >> NoSQL >> MongoDB

ワーキングセットをMongoDBのRAMに収めるとはどういう意味ですか?

    「ワーキングセット」とは、基本的に、システムでアクティブ/使用されるデータとインデックスの量です。

    たとえば、1年分のデータがあるとします。簡単にするために、毎月は1GBのデータに関連して合計12GBになり、毎月のデータをカバーするために、1GBに相当するインデックスが1年間で合計12GBになります。

    過去12か月分のデータに常にアクセスしている場合、ワーキングセットは12GB(データ)+ 12GB(インデックス)=24GBです。

    ただし、実際に過去3か月分のデータにしかアクセスしない場合、ワーキングセットは3GB(データ)+ 3GB(インデックス)=6GBになります。このシナリオでは、8 GBのRAMがあり、過去6か月分のデータに定期的にアクセスし始めた場合、ワーキングセットは使用可能なRAMを超え始め、パフォーマンスに影響を及ぼします。

    ただし、一般的に、頻繁にアクセスすると予想されるデータ/インデックスの量をカバーするのに十分なRAMがある場合は、問題ありません。

    編集:コメント内の質問への回答
    私が完全にフォローしているのかどうかはわかりませんが、答えるつもりです。まず、ワーキングセットの計算は「球場の数字」です。次に、user_idに(たとえば)1GBのインデックスがある場合、一般的にアクセスされるそのインデックスの部分のみがRAMにある必要があります(たとえば、ユーザーの50%が非アクティブであるとすると、0.5GBのインデックスがより頻繁になりますRAMで必要/必要)。一般に、RAMが多いほど、使用量の増加によりワーキングセットが時間の経過とともに大きくなる可能性があるため、特に優れています。ここでシャーディングが役立ちます。データを複数のノードに分割すると、費用対効果の高い方法でスケールアウトできます。次に、ワーキングセットは複数のマシンに分割されます。つまり、より多くのマシンをRAMに保持できます。より多くのRAMが必要ですか?シャーディングする別のマシンを追加します。



    1. MongoDB GridFSをクエリしますか?

    2. MessagePackedハッシュをRedisに保存する

    3. Resqueワーカーを本番環境にデプロイする方法は?

    4. データベース構成チェックの自動化