对于客户的新需求,我们需要设置非关键列搜索。我想避免创建索引,因此使用原始表的非键列作为分区键来评估新表的创建会更好,或者物化视图在这里是更好的选择。由于新表和物化视图都会占用存储空间(并且客户认为这是存储空间的浪费,因为我们在每个节点上保存两次相同的数据)那么通过创建物化视图我们可以实现什么额外的效果?(它的提示不适合生产)。除了使用非键列(原始表的)作为分区键创建索引/物化视图/新表之外,还有其他方法可以管理这种将引入非键列搜索查询的情况
对于客户的新需求,我们需要设置非关键列搜索。我想避免创建索引,因此使用原始表的非键列作为分区键来评估新表的创建会更好,或者物化视图在这里是更好的选择。由于新表和物化视图都会占用存储空间(并且客户认为这是存储空间的浪费,因为我们在每个节点上保存两次相同的数据)那么通过创建物化视图我们可以实现什么额外的效果?(它的提示不适合生产)。除了使用非键列(原始表的)作为分区键创建索引/物化视图/新表之外,还有其他方法可以管理这种将引入非键列搜索查询的情况
物化视图 (MV) 在 Cassandra 中被归类为“实验性功能”,因为在某些情况下视图变得如此不同步,以至于唯一已知的解决方法是删除并重新创建视图。
默认情况下禁用 MV,这就是为什么在尝试创建视图时会收到警告 ( CASSANDRA-13959 )。我在《我们应该重新考虑在 Cassandra 中使用物化视图吗?.
MV 的优势在于 Cassandra 会自动为您创建和维护新表。但是,存在一些缺点,首先是视图更新是异步的,因此您无法立即看到数据。
一种误解是数据没有重复,这是不正确的。基(源)表中的数据被复制到视图中,因此它不会像您期望的那样保存在存储中。
从你的帖子中,我很清楚你已经意识到二级索引不是解决方案,尤其是在性能很重要的情况下,所以你剩下的唯一选择是为每个应用程序查询设计一个表。干杯!