2016-05-10 8 views
1

アラートを格納するための効率的なインデックススキーマが必要です。 Accumulo:効率的なクエリのためのデータのインデックス方法

  • alertId
    • 私は次のクエリを実行する必要があり、タイムスタンプ
    • タイプ
    • 場所

    :各アラートには、次の属性を持っていたどのように多くのアラート

    • を定義された日付範囲で作成されますか?
    • 定義された日付範囲でタイプXのアラートがいくつ作成されましたか?
    • 定義された日付範囲でロケーションYからアラートがいくつ作成されましたか?
      ROWID -> alertId_timestamp, 
      CF -> attribute (type, location), 
      CQ -> value 
      

      は、しかし、私は、クエリのパフォーマンスは、私の#2 &#3クエリのユースケースのために悪くなると思う:

    私の最初に考えたのは、以下の指標aにしました。データのインデックスを作成するにはどうすればよいですか?

    +0

    検索をサポートするにはどのくらいの期間が必要か、3つの照会の実行速度? – elserj

    +0

    日付の範囲は30日を超えないようにしてください。 3秒以内に各クエリが返されることを願っています。 – user1040535

    +0

    もう1つ質問:アラートの数とアラートの平均サイズ(1日の合計バイト数を計算する)の両方で、1日あたりのアラートの数。 – elserj

    答えて

    2

    あなたはそれらがあなたのクエリのみであることを行っているわかっている場合は、次のようなあなたのデータを挿入できます。

    RowID  | CF | CQ | Value 
    Timestamp | "TYPE" | <type> | alertID 
    Timestamp | "LOC" | <loc> | alertID 
    

    を、はい、あなたは、データの2倍を挿入しているが、これは「ビッグデータ」で、右記憶スペースは大きな問題ではないはずです。すべてのクエリは時間ベースであり、カウントを行うだけなので、行の上でRangeを実行し、CF/CQに必要なものをfetchColumnFamilyまたはでフィルタできるように、タイムスタンプをRowIDとして配置する必要があります。また、特定のタイプ/場所だけを探していることがわかっている場合は、「TYPE_Foo」や「LOC_Boston」などのCF/CQを組み合わせてみることもできますが、見つけようとすると制限されますタイプ/場所のすべて/範囲。サーバー側の集計には、ある種のイテレーターを使用することもできます。Does Accumulo support aggregation?

    +0

    フィードバックありがとうございます!あなたの提案を受けて、イテレータを使用して、特定のタイムスタンプ(またはタイムスタンプの範囲)のアラートの総数を集計する方法を教えてください。 – user1040535

    関連する問題