它是正在写入的实体的最近还是最远的父亲属,它决定了实体组?(问题 1)因为,如果我有,
两个同时请求写入两个不同的实体,在此示例中,它们都具有 Data 实体的直接父级(键为“2”),并且具有以下祖先:
Person:9 > Collection:3 > Script:4 > Data:2 > Record of Tom Cruise
Person:9 > Collection:3 > Script:4 > Data:2 > Record of Shia La Boef
在任何一种情况下,它们都属于同一个实体组,要么锚定在实体 Person:9,要么锚定在实体 Data:2。哪个是实体组的正确确定者,Person:9 或 Data:2?此外,如果有两种从 Data:2 派生的实体,比如 Record 和 Scheme,那么所有 Record 和 Scheme 实体是否属于同一个实体组,由 Data:2 锚定,或者由于是不同的种类而属于单独的实体组?(问题2)
顺便说一句,如果是 Person:9 确定了实体组,并且父级下的不同种类不会在该父级下形成不同的实体组,那么从Person:9 继承的所有内容都是同一个实体组,并且必须编写在系列中,恐怖
由于在此示例中,我同时对同一个实体组执行这些相同类型的实体的写入,因此它们将被连续应用,因此与可以同时应用它们相比,需要“双倍的时间”。
对于这种“加倍”时间,有什么好的解决方案?(问题 3 - 可选!)
我想到了以下几点:
因为我知道两个单独的写入必须由两个单独的客户端实例启动,所以我可以向链中添加另一个祖先,它表示执行写入的客户端实例,如下所示:
Person:9 > Collection:3 > Script:4 > Data:2 > **Client:92** > Record of Tom Cruise
Person:9 > Collection:3 > Script:4 > Data:2 > **Client:37** > Record of Shia La Boef
这样,写入将属于不同的实体组(只要 Person:9 锚定该组的假设是错误的),因此始终可以同时执行。AppEngineer/专家可以对此进行权衡吗?(问题4)
此外,由于我强制限制单独的客户端只能向数据存储发出串行请求,并且我可以保证单个客户端进行的任何写入永远不会超过每秒 1 次,如果没有任何性能影响,则上述方法,如果它有效,意味着对性能的影响为零,只要我有足够的独立客户端(而且,他有足够的配额),我可以尽可能快地对数据存储进行尽可能多的写入,就像 HTTP 可以携带它们一样快。AppEngineer/专家可以对此进行权衡吗?(问题 5 )
我看到的这种组拆分方法的唯一问题是,查询 Data:2 父项下的 Record 实体现在很复杂,因为即使记录在语义上相关,它们也被不同的客户端分开。所以为了收集所有的记录,我需要先收集所有的客户,然后收集所有的记录。任何人都可以看到这是否会产生极其可怕的性能影响,执行这种“查询您刚刚查询的孩子的所有孩子”查询......?AppEngineer/专家可以对此进行权衡吗?(问题 6 )