0

セット内の NOT CONTAINS を検索するにはどうすればよいですか? 次のモデルがあるとします。

case class ClassRoom(id:String, age:Int, name:String , kids: Set[String])
abstract class PersonModel extends CassandraTable[PersonModel, Person] {
  override def tableName = "ClassRooms"
  object id extends StringColumn(this) with PartitionKey[String]
  object age extends DoubleColumn(this) with PrimaryKey[Double]
  object kids extends SetColumn[String](this)

次のクエリを実行したい

def findMissing(minAge:Double, kid:String) = select 
.where(_.age > age)
.and (_.kids not contain kid)
.fetch()
4

1 に答える 1

0

残念なことに、Cassandra ではエンジンが「マップ スタイル」のインデックス作成に基づいているため、NOT演算子は本質的に適切な概念ではありません。間違いなく、パーティション キー ヒットのキー キャッシュなどを通じて公開される可能性がありますが、セカンダリ インデックスなどは技術的に現実的ではない可能性があります。

まずobject kids extends SetColumn[String](this) with Index[Set[String]]、法線containsが機能する必要があるため、セカンダリ インデックスについて言及します。

カーディナリティに基づいて目的を達成するには、セカンダリ インデックスと法線を使用するか、CONTAIN非正規化して別のテーブルに格納するかの 2 つの方法があります。これにより、パフォーマンスが向上する可能性がありますが、それでも「差分」が必要になります。

于 2016-12-12T00:43:08.940 に答える