我们正在使用DynamoDB全局表,并计划在DynamoDB的顶部使用DAX来启用缓存。但是我没有提到在多区域设置中DAX无效将如何发生。
例如,假设有两个集群,一个在us-west-2中,一个在us-east-2中。如果我们使用DAX客户端更新us-east-2中的内容,则其缓存将被更新,但是在将数据复制到us-west-2时,全局表也会在us-west-2中更新缓存吗?我没有在DynamoDB documentation中提及此事。
答案 0 :(得分:1)
这时,区域2中的DAX缓存将不知道GT复制写操作。目前,您最好的选择是在两个区域中的DAX上都保持较低的TTL,以便它更频繁地获取最新版本。
答案 1 :(得分:1)
DAX缓存不会更新。全局表将在其他区域中复制数据。但是,它不会更新缓存。甚至query cache
和item cache
是独立的。
DAX不会刷新查询缓存中结果最多的结果集 DynamoDB的当前数据。查询缓存中的每个结果集是 当前执行查询或扫描操作的时间。 因此,查理的查询结果不能反映其PutItem操作。 在DAX从查询中逐出结果集之前,情况就是这样。 缓存。
制定政策:-
DAX项目缓存实现了直写策略(请参阅DAX如何 处理写入)。编写项目时,DAX确保已缓存 item与DynamoDB中存在的项目同步。这是 对于需要立即重新读取项目的应用程序很有帮助 写完之后。但是,如果其他应用程序直接写入 DynamoDB表中,DAX项目缓存中的项目将不再位于 与DynamoDB同步。
在上面的语句中,您可以将other application
单词视为global table
复制。 DAX不会知道为全局表完成的复制。
答案 2 :(得分:0)
这一直是AWS服务团队遇到的一致问题。他们似乎孤立地设计事物,而不必担心不同的相关上下文。我已经在几个地方看到这种设计上的不一致。实际上,即使在DAX和DynamoDB中,这2个TTL概念即使相关也不会考虑其功能。不知道AWS服务团队何时会像Microsoft为其解决方案那样在完全上下文中进行设计。