1

我正在尝试使用数据存储 API 创建单个排序对象列表。(它在一个列表中的原因是因为对象在写入时是有序的——它基本上就像一个美化的 LOG 文件)。

我的问题是我想存储在列表中的东西是我定义的接口/抽象类的子类型。

我有一个使用我的 SQL 的当前商店,它看起来像:ID、组 ID、序列号、子类的序列化字符串。

我希望通过将其推送到数据存储中,我不必序列化,而是可以存储对象。但我现在有点不确定这是最好的方法。

注意。我使用的是直接数据存储 API,而不是 JDO/JPA 等。

我想一个选择是继续序列化 - 我不清楚对 AppEngine 上的各种序列化方法的支持有多好?我想我可以存储为字节数组 - 直接使用可串行化接口写入?

或者,我可以存储一些主元列表,并将每个对象子类型存储为它自己的实体 - 我不确定能否引用它,以及速度影响?我有大约 100 种不同的子类型需要存储。

有人对如何做到这一点有任何建议吗?

这似乎是一个非常基本的问题——我认为使用 noSQL 数据存储自然不会有问题——但我对这整个概念很陌生——直到现在我还是一个关系数据库人:)

谢谢!!

更新/编辑

嗯,我刚刚重新阅读了实体/查询等的文档页面......我想我可能落入了关系数据库思考者的陷阱......

实体下的一节指出:

注意:数据存储区实体是无模式的:与传统的关系数据库不同,App Engine 数据存储区不要求给定类型的所有实体都具有相同的属性,或者给定属性的所有实体值都必须具有相同的数据类型。如果需要一个正式的模式,应用程序本身负责确保实体符合它;为此,Python SDK 包含丰富的数据建模功能库。

我认为这意味着我可以将所有子类存储在接口的“实体”引用下,例如..

A 类扩展 Z

B 类扩展 Z

将 A 类和 B 类保存为实体“Z”。不另存为实体 A 和实体 B。

似乎并不关心大多数属性等完全不同:)

这是正确的吗?出于理智,任何人都可以验证这确实是在这种情况下所期望的吗?

4

0 回答 0