이것은 내 질문을 설명하기 위해 고안된 약간의 예이지만 전구 전구체가 포함 된 Car 엔티티가 있다고 가정 해 보겠습니다. 자동차에는 여러 개의 전구가 있으며 각 전구는 "켜짐", "꺼짐"또는 "깨짐"일 수 있습니다.Cassandra CQL3의 "상태"와 같이 어떻게이 모델을 업데이트 할 수 있고이 상태를 쿼리 할 수 있습니까?
각 유형의 전구에는 고유 한 ID가 있습니다. (왼쪽 헤드 라이트 = 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-land에서 subselected 또는 중첩 된 쿼리를 사용하여 status = on 인 전구를 찾을 수 있다고 생각합니다.
select * from lightbulbstatus where status = 1 and lastupdate > (select lastupdate from lightbulbstatus where status != 1);
당신이 CQL3에서이 작업을 수행 할 방법을 모르고. 물론 하위 선택은 허용되지 않습니다.
각 상태 변경에 대해 행을 추가하는 이유는 무엇입니까? 변경 사항을 추적해야합니까, 아니면 현재 상태입니까? 물론, 인위적인 예에서 방향 조명이 켜지거나 꺼지는 빈도를 추적하는 것은별로 의미가 없습니다. 실제 사용 사례에서는 필요할 수 있습니다. – Moonwalkr
나의 상태는 각 상태 변경에 대해 전구 ID/상태/시간이있는 새 열을 추가하려는 것이 었습니다. 내 파티션 키는 자동차 식별자 여야합니다. – marathon
예, 그것이 제가 추측 한 것입니다. 나는 그것이 실제 사용 사례에서 필요한 것인지 궁금하거나, 변경 될 수있는 on/off/broken 상태의 전구 엔티티를 갖는 것이 더 나은지 궁금하다.즉, 현재 상태 만 필요하고 상태 기록은 필요하지 않습니다. – Moonwalkr