据我所知,底层文件(列式格式)是不可变的。我的问题是,如果文件是不可变的,那么如何执行更新。 Snowflake是否维护同一行的不同版本,并根据密钥返回最新版本?或者它将数据插入到场景后面的新文件中并删除旧文件?如果时间旅行设置为90天,那么性能如何在这些情况下受到影响(查询当前数据),因为Snowflake需要维护同一行的不同版本。但是,由于Snowflake不尊重键,甚至可以检测到不同的版本。任何关于详细内部的见解(文档/视频)都表示赞赏。
答案 0 :(得分:2)
这是一个复杂的问题,但基本思路如下(相当简化):
因此Snowflake不需要记录密钥,因为每条记录只存储在给定时间内活动的一个文件中。
执行更新对查询的影响很小,唯一可见的影响可能是文件需要从S3获取并缓存在仓库上。
有关详细信息,我建议您前往Snowflake论坛并询问。