Google App Engine的数据存储支持哪些数据类型?

3

我知道如何在Google BigTable中建表。但我有一个疑问:Google BigTable支持哪些数据类型?


如果您设置一个更具描述性的标题,即以更清晰的方式总结您的问题,那么将来可能会有所帮助。 - Jason Hall
7个回答

4

引用使用JPA与App Engine中的类和字段注释部分:

Fields of the data class that are to be stored in the datastore must either be of a type that is persisted by default or expliclty declared as persistent. You can find a chart detailing JPA default persistence behavior on the DataNucleus website. To explicitly declare a field as persistent, you give it an @Basic annotation:

import java.util.Date;
import javax.persistence.Enumerated;

import com.google.appengine.api.datastore.ShortBlob;

// ...
    @Basic
    private ShortBlob data;

The type of a field can be any of the following:

  • one of the core types supported by the datastore
  • a Collection (such as a java.util.List<...>) of values of a core datastore type
  • an instance or Collection of instances of a @Entity class
  • an embedded class, stored as properties on the entity
要将EmailPhoneNumber定义为数据类型,并使用它们,需创建实体并将它们映射为@OneToOne或将其设置为@Embeddable

如何在大表中定义和使用电子邮件和电话号码数据类型。 - user309944
你知道Collection的size()方法有大小限制吗? - fernandohur

2
以上是David的回答,列出了Appengine原生支持的数据类型列表。但是,要使用GAE编写真实应用程序,需要更多支持的数据类型和模式。除了JPA、JDO和LowLevel API具有限制和相关问题外,它们并不实用。在尝试了所有这些方法之后,我们选择了Objectify,从此没有回头。它是一个非常高效的数据访问抽象层,专门为GAE设计。回到你的问题,使用Objectify很容易添加自己的数据类型序列化器。
更新: 原始答案3年后,我可以说Objectify是我做出的最好的软件库选择之一。

2

1

这里是App Engine for Java原生支持的数据类型列表。


0

查找Java支持的低级属性类型的最终方法是使用DataTypeUtil

例如:

if (!DataTypeUtil.isSupportedType(value.getClass())) {
  // Convert the value to a supported type.
}

0

Bigtable可以存储所有类型的对象。它只是一个巨大的键值字典。


我尝试存储一个GregorianCalendar对象,但是出现了不支持的操作异常。 - David Parks
问题有些混淆。AppEngine 可能会使用 BigTable 作为实现层,但它不会将其暴露给用户。 - Robin Green


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接