database design - Cassandra: How to model column family to perform intersect-like queries -
basically have 3 attributes: partid
, measurementdef
, value
. each part (partid) consists of multiple measures (value) of type (measurementdef).
formatted tree this:
-part 1 |- measurementdef 1 -> 15,86 |- measurementdef 2 -> 19,54 -part 2 |- measurementdef 1 -> 21,21 |- measurementdef 3 -> 65,54 |- measurementdef 4 -> 12,54 -part 3 ...
now question is: how should model column family this:
select partid <table> measurementdef = xxx , value > 10 intersect select partid <table> measurementdef = yyy , value < 50
in other words: want find parts, value measurementdef xxx higher 10 , value measurementdef yyy lower 50.
afaik, there no modelling approach make intersection within single query. suggest use following table design:
create table mdefparts( mdef int, value float, parts set<uuid>, primary key(mdef, value) );
then use queries:
select parts mdefparts mdef=xxx , value > 10; select parts mdefparts mdef=yyy , value < 50;
then join sets first query 1 set (say, set1).
join sets second query set2.
then intersect set1 , set2.
Comments
Post a Comment