-1

我有两种存储数据的方式

用例:存储每个产品的传入数据

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))

现在我的目标是获得更好的磁盘读取。在第一种情况下,整行都在同一个地方,因此磁盘读取对于所有时间范围的读取来说都是快速的。在第二种情况下,一种产品的数据将位于相同的副本中,但它们会位于相同的磁盘空间中吗?

4

1 回答 1

0

第二个语句是第一个语句的 CQL 等效语句:product_id将由引擎转换为行键,并将time值转换为列名。CQL 范围查询将可以在time字段(即SELECT * FROM product_data WHERE product_id = ? AND time > ? AND time < ?)上进行,但不能在product_id. 推荐第二种方式,因为 CQL API 已经略微优于 Thrift,并且开发重点是 CQL 改进。

于 2013-06-26T18:57:49.913 回答