ありがとうございます。
ヒント#1カサンドラで作業する場合、は完全にあなたの語彙から単語「スーパー欄を」消去。
各顧客のデータをバケットに分割することをお勧めしますか?
あなたのクエリは主に顧客IDに基づいているように聞こえるので、パーティションキーの部分とすることが理にかなっています。しかし、各顧客パーティションに数百万の行および/または列がある場合、それは非常に大きくなるでしょう。
ヒント#2、適切なカサンドラモデリングは、必要なクエリの外観に基づいて行われます。だから実際にあなたが提供する必要がある種類のクエリを見ることなく、それ以上の具体的なことは困難になるだろう。
アカウントや住所などに関する顧客データがある場合は、プライマリキーがcustomer_id
のcustomers
テーブルを作成することは意味があります。しかし、たとえばemail_address
で顧客にクエリを行う必要がある場合は、customers_by_email
テーブルを作成し、そのテーブルにデータを複製し、それをサポートするPRIMARY KEYを作成します。
さらに、お客様の活動にデータを格納する場合は、customer_activity
テーブルのPRIMARY KEYがPRIMARY KEY ((customer_id,month),activity_time)
であると考えてください。これはcustomer_id
とmonth
の両方をパーティションキーとして使用し、activity_time
でクラスタ化された顧客のアクティビティを格納します。この場合、追加のパーティションキーとしてmonth
を使用しなかった場合、それぞれのcustomer_id
パーティションは、あまりにも書き込みやクエリ(バインドされていない行の増加)が不適切なものになるまで、継続的に書き込まれます。
概要:
- 誰でもカサンドラでスーパー列を使用するよう表示されたら、はそれらを平手打ち。
- の前にのテーブルを設計する前に、クエリを知る必要があります。
- はい、
customer_id
は、データを個別に保ち、各クエリが1つのノードに限定されていることを確認するのに適しています。 - バインドされていない行の増加を考慮してパーティションキーを作成し、同じパーティションにあまりにも多くのデータを書き込まないようにします。
ご迷惑をおかけして申し訳ありません。 対象のアプリケーションは、オンライン会計アプリケーションの近くにありますが、ほとんどの場合、クライアントの相談に限ります。 データは自動プロセスによって追加されます。 私はcassandraを使用したことがなく、mongoDbをnosqlで使用しています。 (これを列ファミリではなくスーパーカラムでグループ化する) – user4185975