我希望有一个表的东西如下:卡桑德拉1.1复合密钥,列和滤波CQL 3
CREATE TABLE ProductFamilies (
ID varchar,
PriceLow int,
PriceHigh int,
MassLow int,
MassHigh int,
MnfGeo int,
MnfID bigint,
Data varchar,
PRIMARY KEY (ID)
);
总共有13个领域。其中大部分代表水桶。数据是产品系列ID的JSON,然后用于后续查询。 鉴于Cassandra的工作方式,引擎盖下的列名将是值。我希望过滤这些。
我希望如下运行查询:
SELECT Data FROM MyApp.ProductFamilies WHERE ID IN (?, ?, ?) AND PriceLow >= ?
AND PriceHigh <= ? AND MassLow >= ? AND MassHigh <= ? and MnfGeo >= ? AND
MnfGeo <= ?
- 我读的卡桑德拉只能执行WHERE对复合排按键或索引列谓词。这仍然是真的吗?如果是这样,我将不得不使数据部分的PK列<。
- 是否仍然需要从左到右包含所有列并且不能跳过?
- 我的设计中是否有非最佳点?
- 我想添加一列“材料”,这是一个产品系列中可能的材料数组。想想比萨浇头,并查询“哪里的材料('菠萝')”。如果不创建单独的材质倒排索引,然后对上述查询执行手动交集,在Cassandra中是否还有其他[更优雅]的处理方式?
再次,这是我的答案,它仍然是成立的:d http://stackoverflow.com/questions/11825783/cassandra-and-querying-hierarchies/11828376 #11828376 – Tamil
是的......谢谢,但是只能对PK进行过滤的点呢?我知道你的答案是真的;) – IamIC
还有关于#4的任何想法? – IamIC