Ton*_*ony 11 google-app-engine entity-groups google-cloud-datastore
继我之前关于GAE数据存储区实体层次结构的问题之后,我仍然对何时使用实体组感到困惑.
举个简单的例子:
Company
都有一个或多个Employee
实体Employee
不能被移动到另一个Company
,并与一个处理用户Company
不能看到Employee
的是另一个sCompany
这看起来像在那里我可以做的情况下,Employee
一个子实体的Company
,但什么是实际的后果是什么?这是否会提高可扩展性,损害可扩展性或没有影响?使用或不使用实体层次结构的其他优点/缺点是什么?
(实体组启用事务,但假设此示例我不需要事务).
如果您不需要事务,请不要使用实体组.在某些情况下,它们会降低速度,并且永远不会加快速度.他们唯一的好处是他们支持交易.
据我所知,使用实体组的最佳位置是许多用户不可能同时访问的数据,并且您经常希望包含在事务中.因此,如果您存储购物车的内容(可能只有该购物车的所有者经常处理),那么这些内容可能对实体组有利 - 能够对该数据使用交易会很好当您添加或更新实体时,当您这样做时,您并未锁定其他任何人.
尼克明确表示,你不应该让这些组大于必要,编写可扩展应用程序的最佳实践有一些讨论原因.
需要交易时使用实体组.在您给出的示例中,员工的ReferenceProperty将获得类似的结果.
除了事务之外,实体组可能很有用,因为可以从父实体键入密钥提取和查询.但是,您可能需要考虑这些类型的用例的多租户.
最终,大型实体组可能会损害可扩展性,实体组中的实体将存储在同一平板电脑中.你塞进一个实体组的东西越多,你就越能减少并行完成的工作量 - 它需要连续完成.
归档时间: |
|
查看次数: |
3433 次 |
最近记录: |