- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我有以下一组实体:
A --> (unowned) B
\
--> (owned) List<C>
D --> (owned) List<E> --> (owned) List<F> --> (unowned) A
\
--> (unowned) H
G --> (unowned) H
\
--> (unowned) D
\
--> (unowned) B
\
--> (unowned) A
\
--> (unowned) F
\
--> (unowned) F
如果我在一个事务中接触所有这些对象,我计算 4 个实体组(A、B、D、H)这应该是允许的(根据文档,您最多可以有 5 个)。
所以,有 2 个问题:1) 获取/创建它们的方式重要吗?即是
C c = new C(a);
a.getCs().add(c);
尽管是父/子关系,但还是以某种方式使用了两个单独的实体组?或者 G 有两个不同的 F 值这一事实——是两个实体组还是一个?
2) 当你访问一个对象时,它有多深?即如果我也有
D --> (owned) List<K> --> (owned) List<L> --> (unowned) M
即使我没有访问 K、L 或 M,appengine 是否将 M 包含在事务中访问的实体组列表中?
从概念的角度来看,我对我的对象模型相当满意(没有 appengine 我很确定我会再次以相同的方式设计它)但是我应该按照其他人在这里的建议去做并创建一个 GenericObject不知何故这是一切的父?
或者,鉴于这在数据库世界中相当微不足道,有多少人在 6 个月内放弃了 Cloud SQL 的 DataStore? (也许最后一个对于 stackoverflow 来说太主观了,但这是一个真正的问题)
更新
在浏览通过调试所有内容生成的日志后,我可以看到在某些时候我得到了以下行:
24634 [1419746043@qtp-647750325-2] DEBUG DataNucleus.Persistence - 对 ID 为“com.google.appengine.api.datastore.Key:D("alex@hotmail.com")”
然后是对每个对象的大量检索,这些对象可以从该根实体开始访问。由于这包括一堆无主的实体(也就是说,它们不使用任何作为其父级访问的实体)我想这就是导致我的交易失败的原因,而 Q2 的答案似乎是 '无处不在'
那么...Q3 - 我该如何防止这种行为。请注意,我调用 makePersistent(D) 是为了保留已修改的 F 的两个实例。
最佳答案
一些注意事项:
所有高级数据存储 API (JDA/JPA/Objectify) 都基于 low-level api 构建.它们不能比低级 API 做的“更多”。如果您想了解 Datastore,您应该了解低级 API。
实体之间的关系是基于一个实体拥有一个属性和另一个实体的键。简单地说:实体包含另一个实体的 ID。
您可以通过简单地从实体中删除键属性来破坏实体关系。没有像您在 SQL 世界中使用的那样的参照完整性:您可以在没有约束的情况下删除关系任一侧的实体。
实体组基于祖先关系,与上面第 2 点中提到的实体关系无关。祖先关系基于键:子键将包含所有父键的键。
由于祖先关系是基于键的,因此它只能在创建实体时建立。由于键是不可变的,因此以后无法更改。
实体组的写入/更新限制为每秒 1 次写入。因此,将所有实体置于一个通用的 GenericObject 下确实是一个坏主意。你真的应该小心你如何设计实体组,因为它们会影响性能。好的起点是将每个用户实体作为实体组的根。
实体组旨在定义事务范围(基本上这意味着这些实体驻留在同一台服务器上,因此存在写入限制),您不应该使用它们在实体之间建立逻辑关系。
关于java - AppEngine 如何计算交易的实体组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12506645/
我正在尝试将gradle appengine plugin与我的项目一起使用,但SDK的软件包未得到解决。 我在网上看到很多Maven资料库的引用资料:com.google.appengine:app
我对 gradle 概念很陌生。我正在为应用程序引擎做 gradle (我不知道 maven 或 ant),我经历了 [https://cloud.google.com/appengine/docs/
我使用 maven 3.3.9 使用命令 mvn archetype:generate 创建了一个项目,然后搜索端点 archtype 并选择它,然后插入 groupid artifectId 版本.
这个问题已经有答案了: 已关闭12 年前。 Possible Duplicate: How to implement “autoincrement” on Google AppEngine 我在 Ap
对于我的小框架 Pyxer我希望也能够在 AppEngine 项目之外使用 Google AppEngine 数据存储,因为我现在已经习惯了这种 ORM 模式,对于一些快速的破解来说,这很好。由于文件
我正在尝试 GAE Java 灵活环境并在我的构建脚本中使用“com.google.appengine:gradle-appengine-plugin:gradle-appengine-plugin”
我是 GAE 的大菜鸟,Python 水平中等,Java 中等至生疏。我希望将现有的可用 GAE Java 应用程序(在 Google Play 商店中并在 Android 上运行)转换为 GAE P
我的 AppEngine Java8 应用程序缺少 appengine-api-1.0-sdk-1.9.77.jar。无论我调用什么 servlet,我都会收到此错误 java.lang.NoClas
我正在尝试在请求中获取地区和国家。我认为可以在对 AppEngine 的每个请求中获取 X-AppEngine-Region 和 X-AppEngine-Country header ,但它们丢失了。
我们正在从非官方的“kidleit”maven 插件切换为使用官方的“appengine-maven-plugin”http://code.google.com/p/appengine-maven-p
我正在构建一个 Maven 应用程序,我想将其部署在 Java 的 Google 应用程序引擎上。 我尝试在本地服务器中进行测试 localhost:8080 当我运行命令mvn clean pack
如何在 AppEngine 中使用 X-AppEngine-Estimated-CPM-US-Dollars header 。我读了一些文档,我们可以只使用管理员凭据来使用它,这是什么意思? 如果您有
当我尝试使用 appengine-maven-plugin 更新 appengine-application 时出现以下错误: 400 Bad Request Error when loading a
当我尝试在 AppEngine 中使用低级 DataStore API 时,我收到了一个有趣的 ClassNotFoundException。此异常发生在云服务器中,而不是本地实例中。我在本地使用 a
我在尝试运行我的应用程序时遇到以下错误 from oauth2client.appengine import oauth2decorator_from_clientsecrets ImportErro
情况 我正在使用 AppEngine Cloud Endpoints (Java)作为我的 Android 应用程序的后端服务器。在 Cron-Job 中,服务器定期下载新数据(字符串),过滤掉相关信
我有一个多模块 Maven java 项目。在父 pom 中: core batch-worker be scheduler migrations migr
我们正在尝试从 oauth2client 导入 AppAssertionCredentials。我们正在使用 python27 标准谷歌应用程序引擎。 我们的appengine_config.py如下
有什么区别mvn appengine:更新和Google App Engine 中的 mvn appengine:deploy。 最佳答案 这取决于您为项目使用的配置。 old AppEngine p
从语义上讲,api 和ext 指的是什么意思?例如,为什么 taskqueue 属于 api 而 db 属于 ext? 最佳答案 API = 应用程序编程接口(interface)。 所以我们通过它的
我是一名优秀的程序员,十分优秀!