我有两种存储数据的方法
用例: 存储每个产品的传入数据
1)CREATE COLUMN FAMILY product_data WITH comparator = TimeUUIDType AND key_validation_class=UTF8Type AND default_validation_class = UTF8Type;
这将存储
等数据product_id|timeuuid1 | timeuuid2 |
A | (some-value) | (some-value) |
2)CREATE COLUMN FAMILY product_data(product_id varchar, time TIMESTAMP, some-data varchar, key(product_id, time))
现在我的目标是获得更好的磁盘读取。在第一种情况下,整行位于同一位置,因此对于所有时间范围读取,磁盘读取都很快。在第二种情况下,一个产品的数据将在相同的副本中,但它们是否在相同的磁盘空间中?
答案 0 :(得分:0)
第二个语句是第一个语句的CQL等价物:product_id
将由引擎转换为行键,time
值转换为列名。 CQL范围查询可以在time
字段(即SELECT * FROM product_data WHERE product_id = ? AND time > ? AND time < ?
)上进行,但不能在product_id
上查询。建议使用第二种方法,因为CQL API已经略微优于Thrift,并且开发侧重于CQL改进。