2017-09-27 16 views
0

私はcustomer_infoテーブルをカサンドラに持っています。それには次の列があります。計算のためのカサンドラデータモデリング

  1. UUIDが主キーです。
  2. 365日中に
  3. 他のフィールド...

顧客ごとに100 $の取引限度

  • 量をCUSTOMER_ID。

    私は顧客テーブルから特定のcustomer_idのすべてのレコードを選択する2つのオプション

    1. 次があります。アプリケーションコードでメモリ内の計算を行います。トランザクション制限が100 $を超えていない場合は、customer_infoテーブルで挿入または更新を行います。

    2. customer_idlimitフィールドで構成する新しいテーブルcustomer_limitを維持します。 customer_infoのCRUD操作の前に、私はcustomer_limitテーブルを検索して制限を知り、限界に基づいてcustomer_infoテーブルのCRUD操作を行います。

    メンテナンスと高速読み書きの観点から、どのオプションが最適ですか?

  • +0

    まず、プライマリキーがUUIDのみの場合は* customer_id *をどのようにクエリしますか? – xmas79

    +0

    「customer_id」のインデックスについて言及し忘れました –

    答えて

    0

    私はこの目的で2つのテーブルを使用します。

    table-2は、カウンタ値としてlimitのカウンタテーブルになります。 customer_infoテーブルに挿入する前に必ずtable-2を照会する必要があります。

    ここではCountersを参照してください。アプリケーションのソースコードに書き込む前に読み込みを避けるために、並行してインクリメントするのは簡単です。

    また、PartionとClusteringの主要な概念についてもお読みください。 customer_infoのあなたの選択肢はそれほど良くありません。

    0

    それぞれの取引で「進歩する」固定絞り(365日)の「移動」ウィンドウが必要なので、各取引の詳細を保存する必要があると思います。

    あなたは、次のプライマリキーフィールド対でtransactionsテーブル作成することができます。効率的に、そして、あなたは常に過去365日間問い合わせることができます(もちろん日付で)DESCためにこの表をクラスタリングすることにより

    (customer_id, transaction_date) 
    

    を、 毎日。

    関連する問題