検索

ホームページ  >  に質問  >  本文

数据库 - mongodb表查询问题?

mongodb一个collection里存了日志,现在要进行统计分析。
因为是记录日志,所以经常插入信息,也就没有索引。但是分析查表的时候没有索引又特别慢。想问下有没有什么好的方法。暂时2000W数据量。

阿神阿神2793日前947

全員に返信(2)返信します

  • 巴扎黑

    巴扎黑2017-05-02 09:22:46

    一般に、インデックスは書き込みパフォーマンスにそれほど明らかな影響を与えるべきではありません。もちろん、大量のインデックスを追加する必要がある場合は別の問題です。まだ試したことがない場合は、必要なインデックスがどの程度の副作用をもたらすか、許容範囲内であるかどうかを確認するために、最初に試してみることをお勧めします。もしそうなら、それは素晴らしいことです、問題は解決されました。受け入れられない場合は、次の 2 つのオプションを検討してください:

    1. 変換にはシャーディングを使用します。
      シャーディングとは何かはすでにご存知のはずです。これ以上説明する必要はありません。このソリューションによってもたらされる問題は、明らかにサーバーの数が大幅に増加することです。これは水平方向の拡張の必然的な結果でもあります。長期的に見て、ビジネスが前進するためには、これが選択すべき道であるため、事前に計画を立ててください。

    2. 異なるレプリケーション セット ポイントに異なるインデックスを作成します
      まだ単一ノードで実行している場合は、できるだけ早くレプリカ セットにアップグレードすることをお勧めします。単一ノードのハードウェア障害によってデータが失われ、回復できない場合が多くあります。障害が発生するまで待ってから後悔しないでください。レプリカ セットの前提の下では、各結果に独立してインデックスを付けることができます。

      1. ノードを停止します

      2. レプリカセット構成を削除し、別のポートで開始します

      3. このノードで必要なインデックスを構築します

      4. 元の構成で再起動します

    レプリカ セットはプライマリ ノードですべての書き込み操作を完了する必要があるため、インデックスが多すぎると問題が発生する可能性があることに注意してください。結論を出すには、すべて自分でテストする必要があります。

    返事
    0
  • phpcn_u1582

    phpcn_u15822017-05-02 09:22:46

    インデックスを追加するか、elasticsearch または hbase に変更します。できるだけ早くelasticsearchに変更することをお勧めします

    返事
    0
  • キャンセル返事