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

Create a Global Secondary Index which include non-key attributes

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

感谢您的帮助。

由于物化视图的限制,这种投影是不可能的 - 最多只能将一个非键列合并到物化视图的键中。 Scylla的GSI创建底层物化视图,将索引列放在键中,所以只能使用一个非键列。

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

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

此外,目前在 Scylla 的索引中自定义投影的唯一选项是本地索引,其中可以确保基本分区键也用作基础视图中的分区键:CREATE INDEX ON ks.users ((userid), email)。有一天实现通用索引会很好,这将允许以更灵活的方式自定义底层物化视图 - 总是欢迎贡献 :) 尽管如此,物化视图的约束将适用,因此投影更多非键列用于索引只有在物化视图允许相同的情况下才能被允许。