数据存储(HRD)的一致性......我的想法

时间:2014-01-21 17:33:05

标签: google-app-engine google-cloud-datastore consistency

我希望这不会被标记为“没有用”,因为我认为很多人都试图找到一种方法来保持HRD的一致性。

这是我用于我的应用程序的想法。我想得到你的意见。

我有一个健身应用程序。这当然是由锻炼和锻炼组成的。 HRD包含大约400个可供选择的练习,或者用户可以创建自己的练习(UExercise)。

当用户登录时,我将所有锻炼键加载到用户的“workoutKeys”列表中。同时我也将所有用户练习键(UExercise)加载到用户的“exerciseKeys”列表中。

如果用户想要从特定锻炼中添加/删除锻炼,则会加载锻炼,并将其所有锻炼键加载到锻炼中的“运动键”列表中。

在这看一个模式?

因此,每当我想查看用户(UExercise)或用户锻炼或该锻炼中的练习所创建的练习时,我都会使用这些键进行get()。

由于用户可能没有1000次锻炼,或者创建1000次锻炼,我认为这是一种安全快捷的方法,可以实现强一致性。

不是说这是每个应用程序的最佳方式。但对我来说,我相信它会运作良好。

如果我在这里遗失某些内容,或者没有正确考虑,我将非常感谢您的所有意见。

1 个答案:

答案 0 :(得分:1)

好的......在仔细考虑了我的应用程序如何工作以及用户如何实际使用它之后,我决定放弃上面的想法并使用Ancestor Queries。

因此,对于上述模型,我提出了以下内容......

  • 对于锻炼,我将用户设为父母
  • 对于练习创建了一个用户(UExercise),我将用户设为 父

这允许我使用Ancestor Queries(非常一致)来提取最近添加或修改的实体。

由于用户不会大量修改这些实体,我认为写入的限制不会是一个因素。

这也让我忘记了Model对象的属性,这些属性本来就不应该存在。

顺便说一句,我也试过Memcache。我发现这是最终的痛苦。必须保持Memcache和数据存储同步似乎注入了比实际需要更多的复杂性。

但您的网站和结果可能会有所不同。这个想法适用于我的应用程序。

谢谢!