Google app engine 交易和实体组
让我试着描述一下需求 我的产品有很多站点,每个站点都有很多仓库,每个仓库都有一个它负责的重要资源的计数 每当有人需要资源时,我都希望高效地选择一个(站点、仓库)来满足需求(基于一些启发式) 我想我需要在这样一个操作上进行交易(因为我不想让事情处于混乱状态) 我已经阅读了很多次文档,了解到实体组是执行事务的推荐方式 来自Google AppEngine Go文档: 实体的父级、父级的父级等递归地都是它的祖先;它的孩子,孩子的孩子,等等,都是它的后代。一个实体及其子实体被称为属于同一实体组 如果我使每个仓库都有一个站点作为祖先,那么在同一站点(即实体组)下的仓库上操作时,我可以获得良好的控制 使所有现场及其仓库的操作安全的简单方法是什么 我想到的方法是:Google app engine 交易和实体组,google-app-engine,go,google-cloud-datastore,Google App Engine,Go,Google Cloud Datastore,让我试着描述一下需求 我的产品有很多站点,每个站点都有很多仓库,每个仓库都有一个它负责的重要资源的计数 每当有人需要资源时,我都希望高效地选择一个(站点、仓库)来满足需求(基于一些启发式) 我想我需要在这样一个操作上进行交易(因为我不想让事情处于混乱状态) 我已经阅读了很多次文档,了解到实体组是执行事务的推荐方式 来自Google AppEngine Go文档: 实体的父级、父级的父级等递归地都是它的祖先;它的孩子,孩子的孩子,等等,都是它的后代。一个实体及其子实体被称为属于同一实体组 如果我使
- 将所有站点置于虚拟父站点下,但这是否允许我以事务方式在W1(站点S1下的仓库)和W2(站点S2下的仓库)上操作?换句话说,W1和W2在一个实体组中是因为他们自己的祖先有相同的父代吗
- 将所有仓库置于虚拟父级之下,并采取折衷方案,因为所有仓库都位于同一实体组中
PS:所需的此类安全操作的数量相对较低,因此我不太担心一个实体组下的写入吞吐量有限。您的问题的答案是肯定的,如果实体具有相同的父级,则它们属于相同的组,即使该母公司是其中一个或两个实体的母公司: 以给定根实体作为祖先的每个实体都位于同一个目录中 实体组 发件人:
因此,实体组总是从根实体(没有父实体)开始,并包含其所有子实体?此外,您建议两种方法中的哪一种给出上述事实?是的,因此您必须小心不要在一个组中包含太多的实体,因为这样会造成性能限制。对于事务,您必须仔细检查您的用例。对数据存储的提交很少会失败,因此请查找存在实际损坏的用例(例如,将资金从一个帐户转移到另一个帐户)。您还可以使用任务API来处理某些请求,因为它使您能够控制重试。我无法帮助您选择解决方案,因为我不知道失败提交的预期负载和潜在损害。