我知道如何在谷歌BigTable中表。我对此有一个疑问。谷歌BigTable支持的所有数据类型是什么。
答案 0 :(得分:4)
从Class and Field Annotations引用Using JPA with App Engine部分:
要访问的数据类的字段 必须存储在数据存储区中 是一种坚持的类型 default或expliclty声明为 执着。你可以找到一张图表 详细说明JPA默认持久性 the DataNucleus website上的行为。 要将字段显式声明为 持久的,你给它一个
@Basic
注释:import java.util.Date; import javax.persistence.Enumerated; import com.google.appengine.api.datastore.ShortBlob; // ... @Basic private ShortBlob data;
字段的类型可以是任何字段 以下内容:
- 数据存储区支持的core types之一
- a的值的集合(例如
java.util.List<...>
) 核心数据存储类型- 的实例或实例集合
@Entity
类- 嵌入式类,存储为实体上的属性
要定义并使用Email
和PhoneNumber
作为数据类型,请为其创建实体并将其映射为@OneToOne
或制作@Embeddable
。
答案 1 :(得分:2)
David上面的回答给出了Appengine原生支持的数据类型列表。但要使用GAE编写实际应用程序,您需要支持更多数据类型和模式。除了JPA,JDO和LowLevel api及其局限性和相关问题并不实用。
尝试完所有后,我们选择了Objectify并且从未回头。它是专为GAE设计的非常有效的数据访问抽象层。回到您的问题,使用Objectify为您自己的数据类型添加序列化器非常容易。
更新: 在原始答案之后3年,我可以说Objectify是我做出的最好的软件库选择之一。
答案 2 :(得分:2)
答案 3 :(得分:1)
Here是App Engine for Java中原生支持的数据类型列表。
答案 4 :(得分:0)
Bigtable可以存储所有Object类型。它只是一个巨大的键值字典
答案 5 :(得分:0)
点击此处查看使用JDO在GAE中支持的数据类型列表:
http://code.google.com/appengine/docs/java/datastore/dataclasses.html
并使用Python:
http://code.google.com/appengine/docs/python/datastore/typesandpropertyclasses.html
答案 6 :(得分:0)
在Java中查找受支持的低级属性类型的最终方法是使用DataTypeUtil
e.g。
if (!DataTypeUtil.isSupportedType(value.getClass())) {
// Convert the value to a supported type.
}