NDB HRD交易,其祖先确定实体组?(NDB HRD transactions, which an

2019-11-02 01:28发布

是它最接近的或写入的实体,它决定了实体组的最远处的父有关系吗? ( 问题1),如果我有,

两个同时请求写入两个不同的实体,在此示例中,具有直接父数据实体(与键“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

在任一种情况下,它们都属于同一个实体组,无论是在实体人锚定:9,或实体数据:2。 这是实体组,人的正确判断:9或数据:2? 此外,如果有两种类型的实体从数据下降:2,说记录和计划,将所有的记录和计划的实体属于同一实体组,通过数据挂靠:2,或者,由于是不同类型的,属于独立的实体组? ( 问题2)

顺便说一下,如果是人:9,其确定一个父下所述实体组,和不同类型的不形成亲下不同实体组,则一切从人后裔: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

这样,写将属于不同的实体组(只要人的假设:9锚固组是错误的),因此,总是可以同时进行。 一个AppEngineer /专家可以在权衡呢? ( 问题4)

另外,由于我强制执行的限制,即独立的客户端只能进行连续请求的数据存储,并且不会造成任何性能的影响,通过一个单一的客户端所做的任何写操作永远不需要出现超过每秒1次,上面的方法,如果我可以保证它的工作原理,将意味着有零性能影响很大 ,只要我有足够的独立客户端(和他,足够配额 ),我可以使尽可能多的写入数据存储快如HTTP可以随身携带。 一个AppEngineer /专家可以在权衡呢? ( 问题5)

我用这组拆分方法看到的唯一问题是,查询数据下记录的实体:2父,现在的事实是,即使记录语义相关,它们是由不同的客户端分离复杂。 因此,为了收集所有记录,我需要先收集所有客户端,然后在那里聚集的所有记录。 任何人都可以看到这是否会造成一个多产的恐怖性能的影响,做这种查询“你刚才询问孩子的查询所有的孩子”的...? 一个AppEngineer /专家可以在权衡呢? ( 问题6)

Answer 1:

你有一些误解在这里。

首先,文件对什么构成的实体组十分明了:这是一个根实体下的一切

但是我不知道你在哪里得到了一个实体组中写入的想法是在某个方面要比外面的人更“串行”。 该文档不说,或暗示它。 它并说这个的唯一的事情就是写一个单一的实体组发生在不超过每秒1次以上。

您的问题,其余就没有任何意义可言:加入一个新元素链不改变根实体。

我不知道为什么你需要摆在首位这样深的实体组链。 该文件的有关比例的建议是保持实体组小。 如果每个叶实体将只由一个客户端写入,这听起来像客户端本身应该是根,和路径的其余部分不应该是祖先的一部分都:也许你可以使用的ReferenceProperty指一个或多个通过其关键的实体。



文章来源: NDB HRD transactions, which ancestor determines the entity group?