如何在Cassandra中创建计数器列表作为复合列。我试图解决的问题是存储访问特定对象的次数。在JSON表示的模型是这样的:如何使用复合列在cassandra中创建桶计数器
的ColumnFamily:view_counts RowKey:OBJECT_ID
值: { 总:10, 引荐:{ Facebook的:2, 叽叽喳喳:5, 直接:2, 其他:1 } 国家:{ 澳大利亚:4, 我们:如图4所示,其他 :2 } }
在此先感谢
如何在Cassandra中创建计数器列表作为复合列。我试图解决的问题是存储访问特定对象的次数。在JSON表示的模型是这样的:如何使用复合列在cassandra中创建桶计数器
的ColumnFamily:view_counts RowKey:OBJECT_ID
值: { 总:10, 引荐:{ Facebook的:2, 叽叽喳喳:5, 直接:2, 其他:1 } 国家:{ 澳大利亚:4, 我们:如图4所示,其他 :2 } }
在此先感谢
为什么不只是使用supercolumnfamily,为推荐人和国家的超级列?
你想要的是像这样(其中X:Y是一个复合列):
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 }
然后当你到Object6通过Twitter来自澳大利亚一个新的访问,您做如下增量:
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
这样的查询,它可以计算出幕后所有适当的计数器。
(附注:Supercolumns已被弃用,因为你不能修改supercolumn,这会减慢速度的一部分。)
非常感谢队友, 我找不到计数器API赫克托API复合列。只有创建计数器和超级列的API。 你可以请一个非常小的样本与hector客户端? 干杯 – 2012-04-17 11:27:56