Cassandra 1.1 klucze kompozytowe, kolumny i filtrowanie w CQL 3

Chcę mieć stół w następujący sposób:

CREATE TABLE ProductFamilies (
  ID varchar,
  PriceLow int,
  PriceHigh int,
  MassLow int,
  MassHigh int,
  MnfGeo int,
  MnfID bigint,
  Data varchar,
  PRIMARY KEY (ID)
);

Łącznie jest 13 pól. Większość z nich to wiadra. Dane to JSON identyfikatorów rodziny produktów, które są następnie używane w kolejnym zapytaniu.Biorąc pod uwagę, jak działa Cassandra, nazwy kolumn pod maską będą wartościami. Chcę je filtrować.

Chcę uruchamiać zapytania w następujący sposób:

SELECT Data FROM MyApp.ProductFamilies WHERE ID IN (?, ?, ?) AND PriceLow >= ? 
AND PriceHigh <= ? AND MassLow >= ? AND MassHigh <= ? and MnfGeo >= ? AND 
MnfGeo <= ?
Czytałem, że Cassandra może wykonywać tylko predykaty WHERE względem złożonych kluczy wiersza lub indeksowanych kolumn. Czy to nadal prawda? Jeśli tak, musiałbym utworzyć kolumny <Data w PK.Czy nadal jest konieczne dołączenie wszystkich kolumn od lewej do prawej i nie można ich pominąć?Czy w moim projekcie są jakieś nieoptymalne punkty?Chciałbym dodać kolumnę „Materiały”, która jest zestawem możliwych materiałów w rodzinie produktów. Pomyśl o dodatkach do pizzy i pytaj „WHERE Materials IN („ Pineapple ”)”. Czy bez tworzenia oddzielnego odwróconego indeksu materiałów i wykonywania ręcznego przecięcia z powyższym zapytaniem, czy jest jakiś inny [bardziej elegancki] sposób radzenia sobie z tym w Cassandrze?

questionAnswers(2)

yourAnswerToTheQuestion