我创建了我的第一个 App Engine 项目。我正在使用云端点和数据存储为移动应用程序提供后端。用户将仅使用现有内容,他们无法更改数据存储内容。
所以数据存储区的内容将由我专门管理。我有不到 10 种实体,大约 5000 个对象。这些对象大约每月需要进行两次部分更新。
为了在我这边生成这些对象,我使用了一些本地 sqlite 数据库,并且我还从网络上汇总了一些信息。
我的问题是进行这些数据存储更新的最佳方法是什么?我的第一个想法是使用端点进行插入/更新操作,并确保它们只能由我访问。然后,每月两次,我将使用我的“管理客户端”生成新内容,并使用安全 Web 服务更新数据存储内容。
但我想知道是否有更合适的方法。尤其是在效率和数据一致性方面。如果用户在更新过程中询问内容会发生什么,他将获得部分最新的内容。
也许我可以使用另一个我不知道的 API?或者只是在应用引擎端使用某种脚本?
编辑
我的一个Entity
有几个EmbeddedEntities
。这对我来说不是强制性的,但我认为这样检索它们会更便宜,而且我不需要从其他地方访问它们。
但是有了这个模型,我找不到如何使用bulkloader上传我的数据,也找不到RemoteApi。在这两种情况下,embeddedEntities 都没有填充:<missing>
对于 中的嵌入实体的每个字段,我都有DataViewer
,并且在我的端点中没有返回任何内容。如果我使用我的插入端点,它就可以工作。此外,需要明确的是,尽管嵌入了实体,但一切正常。
我的模特
@Entity
public class MyEntity {
@Id
private Long id;
private String name;
private MyEmbeddedEntity embeddedEntity;
...
@Embedded
public MyEmbeddedEntity getEmbeddedEntity() {
return embeddedEntity;
}
}
远程API
EmbeddedEntity embeddedEntity = new EmbeddedEntity();
embeddedEntity.setProperty("name", "testEmbedded");
Entity entity = new Entity("MyEntity", 1L);
entity.setProperty("name", "test");
entity.setProperty("embeddedEntity", embeddedEntity);
...
datastore.put(entity);
散装机
我已经使用 create_bulkloader_config 生成了 yaml 配置。我设置了 simplexml 连接器,其中 xpath_to_nodes=/list/MyEntities 对应于我的 xml 的结构。
我用@Embedded 注释尝试了不同的方法。我也尝试过使用不同的实体键。如果我使用端点插入一个实体,并使用批量加载程序和相同的 yaml 配置导入数据,我生成的 xml 不包含嵌入的实体(而它们在 DataViewer 中可见)。