在一个代码处我做这样的事情:
FormModel(.. some data here..).put()
我从数据库中选择以下几行:
FormModel.all().filter(..).fetch(100)
我注意到的问题 - 有时候fetch不会注意到我刚刚添加的数据。
我的理论是,这是因为我正在使用高复制存储,而且我没有给它足够的时间来复制数据。但是我怎么能避免这个问题呢?
答案 0 :(得分:3)
除非数据在同一个实体组中,否则无法保证数据最适合数据(如果我understand this section正确)。
答案 1 :(得分:2)
Shay是对的:无法知道数据存储区何时准备好返回刚输入的数据。
但是, 保证在put
的调用成功完成后,最终输入数据。这是很多信息,您可以使用它来解决这个问题。当您从fetch
获取数据时,只需追加/插入您知道将在那里的新实体!在大多数情况下,我认为,基于每个请求执行此操作已经足够好了,但是你可以做一些更强大的功能,使用memcache来覆盖所有请求(除了memcache失败的情况)。
当然,困难的部分是确定何时应该追加/插入哪些实体。不得不采用这种解决办法,但付出与HRD一样惊人复杂的东西的代价相对较低。
答案 2 :(得分:0)
此一致快照视图还扩展到写入后的读取 内部交易。与大多数数据库,查询和获取不同 在数据存储区事务内部看不到以前的结果 在该交易中写道。 具体而言,如果实体被修改 或在事务中删除,查询或获取返回原始 截至交易开始时的实体版本,或 如果实体当时不存在则没有。