我将照片存储在列表cql3列中。我可以从cql3轻松查询列表,但我还需要了解Cassandra存储模型如何处理列表以便能够使用JMX bulkLoad服务将我的数据导入Cassandra。如果我将一些测试数据插入到这样的列表中:
insert into dat.lgr (id, photos) values (0, [0xaa, 0xbb]);
使用cli查询时生成的数据如下所示:
=> (column=photos:2fce75c0fe9811e2ab248b7126053a99, value=aa, timestamp=1375794036508000)
=> (column=photos:2fce75c1fe9811e2ab248b7126053a99, value=bb, timestamp=1375794036508000)
所以看起来Cassandra实际上是为列表中的每个元素存储一个列,由一个由集合名称和一个未知十六进制数组成的复合列名称标识。该数字可能是64位散列,或者两个32位散列附加在一起。但是什么被哈希?我查看了源代码,但一无所获。任何帮助表示赞赏。
答案 0 :(得分:2)
我建议列表项的列名是UUID。至少这两个值都代表有效日期“2013年8月6日星期二格林威治标准时间下午1:00:36”(例如,在http://www.famkruithof.net/uuid/uuidgen中尝试“”2fce75c0-fe98-11e2-ab24-8b7126053a99“)。
很容易验证 - 只需截断表并重复相同的语句。如果我的猜测是正确的,你会得到相同数据的完全不同的列名。