Zusammengesetzte Schlüssel, Spalten und Filter für Cassandra 1.1 in CQL 3

Ich möchte einen Tisch wie folgt haben:

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

Insgesamt gibt es 13 Felder. Die meisten davon repräsentieren Eimer. Data ist ein JSON von Produktfamilien-IDs, die dann in einer nachfolgenden Abfrage verwendet werden.In Anbetracht der Funktionsweise von Cassandra sind die Spaltennamen unter der Haube die Werte. Ich möchte diese filtern.

Ich möchte Abfragen wie folgt ausführen:

SELECT Data FROM MyApp.ProductFamilies WHERE ID IN (?, ?, ?) AND PriceLow >= ? 
AND PriceHigh <= ? AND MassLow >= ? AND MassHigh <= ? and MnfGeo >= ? AND 
MnfGeo <= ?
Ich habe gelesen, dass Cassandra nur WHERE-Prädikate für zusammengesetzte Zeilenschlüssel oder indizierte Spalten ausführen kann. Ist das noch wahr? In diesem Fall müsste ich die Spalten <Data zum Bestandteil der PK machen.Muss man noch alle Spalten von links nach rechts aufnehmen und kann keine überspringen?Gibt es nicht optimale Punkte in meinem Design?Ich möchte eine Spalte "Materialien" hinzufügen, die eine Reihe möglicher Materialien in einer Produktfamilie darstellt. Denken Sie an Pizzabeläge und fragen Sie nach "WHERE Materials IN ('Pineapple')". Gibt es eine andere [elegantere] Möglichkeit, dies in Cassandra zu handhaben, ohne einen separaten invertierten Index der Materialien zu erstellen und dann eine manuelle Überschneidung mit der obigen Abfrage durchzuführen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage