CouchDB使用a cool pattern,可以在众多其他场景中使用。我在谈论map / reduce结果的持久B树索引。这个想法是预先计算聚合数据并将其存储在B树索引的不同级别。然后,索引可用于有效地查询聚合,而无需始终重新聚合所有数据。然后,如果任何叶级值发生更改,则只需重新计算通过树的升序路径。
例如,如果数据是随时间变化的价格,则索引可以在日,月和年级别存储SUM和COUNT项。然后,如果有人想要查询年初至今的平均价格,那么您所要做的就是总结自年度开始以来所有整月的所有商品数量和计数,加上上个月可用的所有日期,然后除以总和总计COUNT。如果过去的价格必须改变,则变化必须通过索引传播,但只需要更新相应的日期和月份和年份的值,即使这样,一年中其他日期和其他月份的值也可以重新用于计算
这种方法的通用名称是什么?在任何流行的RDBMS中都存在类似的东西吗?有没有在实践中使用它的经验?
答案 0 :(得分:5)
“物化视图是一个包含查询结果的数据库对象。它们是远程数据的本地副本,或者用于根据表格数据的聚合创建汇总表。物化视图,存储基于数据的视图在远程表上,也称为快照。“
这是一篇维基百科文章,主要讨论在RDBMS的上下文中存储结果。
我个人更喜欢“索引视图”这个词。我实际上通过搜索"indexed view" on Google找到了wikipedia文章。