我是App Engine的新手,我想确认自己对高复制数据存储的了解。
该文档说,实体组是“一致性的单位”,并且所有数据最终都是一致的。同样,它也说“跨实体组的查询可能是陈旧的”。
有人可以提供一些查询“过时”的示例吗?是不是说我可以潜在地保存没有任何父代的实体(即它是自己的组),然后在不久之后查询它却找不到它?这是否还意味着如果我希望数据始终是100%最新的,就需要将它们全部保存在同一实体组中?
使用memcache缓存实体的时间是否比所有数据中心的数据保持一致所需的平均时间长,这是常见的解决方法?延迟的延迟是多少?
谢谢
最佳答案
是说我可能会保存
没有任何父母的实体(即
自己的组),然后非常查询
不久之后又找不到了吗?
正确。从技术上讲,常规的Master-Slave数据存储也是如此,因为索引是异步更新的,但实际上,发生这种情况的时间窗口非常短,以至于您从未见过。
但是,如果用“查询”表示“按键获取”,则在任何一种实现中都将始终返回高度一致的结果。
是否也暗示我要数据
始终保持100%最新,我需要
将它们全部保存在同一实体中
组?
您需要先定义“ 100%最新”的含义,然后才能回答。
这是常见的解决方法
使用memcache缓存实体
时间段长于平均水平
数据变为时间
所有数据中心都一致?
不会。内存缓存严格用于缩短访问时间;您不应该在驱逐缓存会造成麻烦的任何情况下使用它。
如果您需要保证看到的是最新版本,则始终可以获得高度一致的获取。但是,如果没有具体示例说明要执行的操作,则很难提供建议。