2012-04-15 5 views
2

Cassandraでコンポジット列としてカウンタのリストを作成する方法を教えてください。私が解決しようとしている問題は、特定のオブジェクトへの訪問回数を格納することです。複合列を持つcassandraでカウンタのバケットを作成する方法

ColumnFamily:view_counts のrowKey: { 合計:10、 リファラー:{ 投稿:2、 さえずり:5、直接

値をOBJECT_ID JSON表現のモデルは、このようなものです:2、 その他:1 }国:{ オーストラリア:4、 米国:4、 他:2 }}

ありがとうございます。

答えて

-3

リファラーと国のスーパーカラムを使用してスーパーカラムを使用するだけではどうですか。

2

何がしたいことは(X:Yは複合列である):このようなものである

:あなたはオーストラリアからTwitter経由Object6に新しい訪問を取得するとき

ColumnFamily: view_counts 
Rows: 
object_id -> { "total": 10, 
       "referrer:facebook": 2, 
       "referrer:twitter": 5, 
       "referrer:direct": 2, 
       "referrer:other": 1, 
       "country:australia": 4, 
       "country:us": 4, 
       "country:other": 2 } 

その後、あなたは次の増分を行います

incr view_counts[Object6]['total'] 
incr view_counts[Object6]['referrer:twitter'] 
incr view_counts[Object6]['country:australia'] 

もちろん、あなたがこれを手配することができ、さまざまな方法があります - あなたはまた、行キーに複合材を入れることができます:

total:object_id -> { "count": 10 } 
referrer:object_id -> { "facebook": 2, 
         "twitter": 5, 
         "direct": 2, 
         "other": 1 } 
country:object_id -> { "australia": 4, 
         "us": 4, 
         "other": 2 } 

を使用するか、または複合カラムを使用せずに、view_counts_by_referrerおよびview_counts_by_countryに別々のカラムファミリを使用してください。

Acunu Analyticsのようなリアルタイム解析システムでは、すべてこれを実行するので、SELECT COUNT_DISTINCT(user_ip_address) FROM view_counts WHERE object = Object6 AND time > '7 days ago' GROUP BY referrerのようなクエリを指定するだけで、背後にあるすべての適切なカウンタが機能します。

(あなたは物事を遅くsupercolumnの一部だけを変更することはできませんので、P.S.のSupercolumnsが、推奨されません。)

+0

おかげでたくさんの仲間、 私は複合列のカウンターAPIのヘクターのAPIを見つけることができません。カウンタとスーパーカラムを作成するためのAPIしかありません。 ヘクタークライアントで非常に小さなサンプルを投稿できますか? 乾杯 –

関連する問題