创建一个包含非关键属性的全局二级索引

时间:2019-08-07 02:32:15

标签: scylla

我正在尝试在表Scylla群集上创建GSI。根据文档,我可以创建CREATE INDEX ON ks.users (email);,它将在创建的实例化视图中包括此字段和主键。创建此GSI时,是否可以将其他非关键属性投射到MV?

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

由于物化视图具有约束,因此无法进行这种投影-物化视图的键中最多只能包含一个非关键列。 Scylla的GSI创建一个底层的物化视图,并将索引列放在键中,因此只能使用一个非键列。

我能想到的唯一解决方法是:

  • 通过创建将两个属性的组合值存储为blob的单个列来更改基表架构-然后可以在该blob上创建索引;
  • 更改基本表架构,以使列之一成为主键的一部分。

此外,当前在Scylla的索引中自定义投影的唯一选项是局部索引,该索引可以确保基本分区键也用作基础视图中的分区键:CREATE INDEX ON ks.users ((userid), email)。有一天,实现通用索引会很好,这将允许以一种更加灵活的方式自定义基础的物化视图-总是欢迎您提供帮助:)尽管如此,物化视图的约束仍然适用,因此可以为索引建立更多非关键列只能在实体化视图允许相同的条件下被允许。