我想要完成这个计划,以实现与GAE结构的强烈一致性。目前,这就是我所拥有的(这很简单,我保证):
您有一个类(类意味着课堂而不是编程“类”)模型和分配模型以及用户模型。现在,Class有一个名为memberIds的整数列表属性,它是用户ID的索引列表。类还有一个Assignment id的字符串列表。
无论何时创建新的Assignment,其各自的Class实体也会更新,并将新的Assignment id添加到其列表中。
我想要做的是为用户获取新的分配。对于所有memberId = currentUserId
的类,我所做的是查询。每个我上课的课程都有一个作业ID列表。我使用这些ID来按键获取各自的作业。使用这个数据模型几个月之后,我才意识到我可能与此没有很强的一致性(对于类查询部分)。
如果用户A发布了一个作业(因此更新了ClassA),那么稍后检查新作业的用户B可能还没有看到对ClassA的更新更改(对吗?)。
这是不受欢迎的。一个解决方案是用户祖先查询,但在我的情况下这是不可能的,并且实体组每秒限制为1次写入,我不确定这对我的情况是否足够。
所以这就是我的想法:无论何时发布新作业,我们都会这样做:
hasNewAssignment =
YES
所以在整个过程中,我从未质疑过。所有结果应该是一致的,对吧?这是一个好的解决方案吗?我是不是太复杂了?我的读/写费用是否暴涨?你觉得怎么样?
答案 0 :(得分:2)
查询不一致。获取非常一致。
我认为你做对了:
因此,成本取决于您的使用模式:您创建了多少分配读取与新分配创建。
答案 1 :(得分:0)
我认为使用祖先查询是一种更好的解决方案。
这样,特定类中的所有作业和学生都属于同一个实体组。因此,一个只需要处理一个类的查询就可以保证强一致性。
N.B。我假设没有太多人不会同时在课堂上发布作业。 (但是任何数量的人都可以将作业分配到不同的班级,因为他们属于不同的实体组)