在AppEngine数据存储区的列表中存储子类型对象

时间:2012-09-27 11:50:29

标签: java google-app-engine subclass

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

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

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

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

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

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

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

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

这似乎是一个非常基本的问题 - 我认为一个noSQL数据存储自然没问题 - 但我对这整个概念不熟悉 - 我是一个关系数据库人,直到这一点:)

谢谢!

更新/编辑

mm,我刚刚重新阅读了实体/查询等文档页面......我想我可能会陷入关系数据库思想家陷阱......

实体下的一节说明:

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

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

A类延伸Z

B类延伸Z

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

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

这是否正确 - 为了理智,任何人都可以验证这确实是在这种情况下的预期吗?

0 个答案:

没有答案