2017-08-26 8 views
0

私はredis時系列アプリケーションの構築に興味があります。私のデータは歴史的に時々到着し、データは変更可能になります。現在、約1億件のイベントがあります。redisデータへのアクセスのキーデザイン

私は検討していたデータへのアクセスを柔軟にする必要があるので、重要度の順に

[時間の一日分] DATETYPEが のClientID がbrandid [販売手数料の印象]

タイプ producttypeid のProductID

I販売、手数料、印象のようなデータの種類を尋ねるでしょう。 次に集計タイプso second、min、hour、day 私はイベントデータの階層を持っています。クライアント、ブランド、製品タイプ、およびそれぞれの特定の製品によって同様に分類されます。

などの主要構築する方法があります:

販売:時間:のClientID:brandid:producttypeid:商品コード

、その後は

販売のように、そのキーの部分にクエリは:時間:のClientID:

をbrandidまたは私は各

  • SAのバケットを構築する必要がありますル:時間
  • 販売:時間:ClientIDを
  • 販売:時間:のClientID:時間::のClientID:brandid:
  • 販売をbrandid時間:ClientIDを:brandid:producttypeid:商品コード
  • 販売をproducttypeid
  • 答えて

    0

    私はcouchbase - そのビュー(インデックス)を使って、あなたのユースケースのためにはるかに良い非SQLの選択となると思います。それぞれのアイテムを1つのエントリとして保存し、ビューで必要に応じてスライスすることができます。しかし、それは最終的にはビューに永続的です(データは少し古いかもしれません - 数秒/最大1分程度)。あなたがそれで暮らすことができれば、これはあなたにとってはるかに優れたツールです。それも永続的です。これは赤目を取りにくくなります。

    0

    redisソートセットを使用できます。 このセクションのレキシカルインデックスはarticleから取得しています。

    ZADDコマンドを使用して、ソートセットに要素を追加する場合はわかります。このように:すべての列は、文字列です

    ZADD key score member 
    

    しかし、あなたの場合には、それはここに無用であるので、スコアが小数でなければなりません。同じスコアでは、ソートされたセットはメンバーの辞書編集順でソートされます。

    次に、リレーショナルDBのようなソートセットで複合インデックスを作成します。

    ZADD myset 0 sale:hour:clientid:brandid:producttypeid:productid:real_value 
    

    そして、あなたが販売に照会する場合:時間を、あなたがこれを行うことができます。このように(することができます販売と仮定して6文字のユニークなIDであり、時間はYYYY-MM-DDTHHと日時フォーマットであり、あなたが販売に何かを照会したい。これは、同じ販売IDを持つこの時間のデータを返します

    ZRANGEBYLEX myset [FG63dF:2017-08-28T08 (FG63dF:2017-08-28T09 
    

    )FG63dFで、時間は2017-08-28T08です。他のクエリは上記と同じです。意味について(および[、これらの手段の範囲の項目は、それぞれ排他的または包括的である場合

    あなたはこのように、すべての列にデータを照会したい場合は:。

    ZRANGEBYLEX myset [FG63dF:2017-08-28T08:<client-id>:<brand-id>:<producttypeid>:<product-id> + 
    

    「+」であります。時間、あなたは販売のような複合インデックスで使用したいすべての列というように、同じ持っている必要があります。あなたはあなたのための制限特定も可能性、無限値と同様 あなたは細部のために注意する

    何かをZRANGEBYLEXを参照することができますフォーマット、同じ詰め物。例えば、あるブランドが4桁の数字ならば、左の詰め物を4桁の数字に追加する必要があります。例えば。 7878 => 07878

    この場合、コロンを使用してこれらの列を分割するので、これらの列にはコロンを使用できません。

    もっと詳しく「どのように」私が最初に述べた記事を参照することができます。

    関連する問題