问题标签 [shared-nothing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
caching - Snowflake - 数据新鲜度缓存
我读过很多关于雪花缓存的文章,但不明白雪花如何解决其他“共享一切架构”遇到的数据新鲜度问题。我的理解是,当数据更改时共享所有内容,本质上需要一些锁定。
如本文所述:
为了提高效率,两个节点都在内存中缓存了记录 1 的本地副本。然后客户端尝试更新记录 1,以便“foo”变为“bar”。要以一致的方式执行此操作,DBMS 必须在可能已缓存记录 1 的所有节点上采用分布式锁。随着集群中机器数量的增加,这种分布式锁会变得越来越慢,因此可能会阻碍数据库的可扩展性。写作过程。
换句话说,如果雪花在计算层缓存数据,但在 S3 中底层数据发生变化,雪花不会遇到与其他共享一切架构相同的缓存问题吗?我在分析数据库中得到了这一点,更新较少,但是为什么传统的共享一切架构不能工作呢?
我看到的唯一答案是雪花有一个查询优化器,可以检查底层数据是否发生了变化。但是仍然不明白这个/如何这是对传统共享所有数据库的缓存策略的重大升级。