Это немного надуманный пример, иллюстрирующий мой вопрос, но допустим, у меня есть объект Car, который содержит объекты Lightbulb. В автомобиле есть несколько лампочек, каждая из которых может быть «включена», «выключена» или «сломана».
Каждый тип лампочки имеет уникальный идентификатор. (левая фара = 100, правая фара = 101... что-то в этом роде)
Состояние лампочки необходимо постоянно обновлять.
Что я хотел бы сделать, так это запросить конкретный автомобиль для набора лампочек с определенным статусом.
что-то вроде: "дайте мне все лампочки со статусом "включено" для автомобиля "шеви" модель "нова" vin "xyz-123"".
create table lightbulbstatus (
bulbid uuid,
carmake text,
carmodel text,
carvin uuid,
lastupdate timestamp,
status int,
/* row key * /* col keys */
PRIMARY KEY( (carmake, carmodel, carvin), ? ? ? ?)
);
Я считаю, что в ключе строки должна быть координата автомобиля, но помимо этого я немного потерялся. Я предполагаю, что каждый раз, когда происходит изменение состояния лампочки, мы добавляем столбец. Но я не уверен, какие ключи должны быть в столбце, чтобы запрос работал.
Я думаю, что в стране RDBMS вы могли бы выполнить запрос с подвыборкой или вложенным запросом, чтобы найти лампочки со статусом = on.
select * from lightbulbstatus where status = 1 and lastupdate > (select lastupdate from lightbulbstatus where status != 1);
Не знаю, как бы вы сделали это в CQL3. Очевидно, что подзапросы не допускаются.