像往常一样,我不知道这是否是个好主意,所以这就是我问 StackOverflow 的原因!
我正在玩弄使用 CF 作为额外的分区数据层的想法。例如,(并使用似乎很常见的传感器示例)传统模式将类似于:
CREATE TABLE data (
area_id int,
sensor varchar,
date ascii,
event_time timeuuid,
some_property1 varchar,
some_property2 varchar,
some_property3 varchar
PRIMARY KEY ((area_id, sensor, date), event_time)
) WITH CLUSTERING ORDER BY (event_time DESC);
如果 some_property1,2,3 等在设计时未知并且可以在平台的生命周期内更改,这会有点问题。一种可能性是根据需要声明更多属性,但我认为将传感器带入它们自己的 CF 更有意义,因为每个传感器都有不同的模式。您可以通过将 CF 命名为复合对象(在 Cassandra 外部管理),例如 {area_id}_{sensor_name},然后在请求插入新属性时根据需要更改架构。
我的问题是2折。a) 这是一个合理的想法吗?b) Cassandra 是否有任何可能违反的限制(例如 CF 数量的上限)?
作为参考,这是对先前问题的可能设计,但我认为该问题对独立有效。