【发布时间】:2010-04-26 05:03:43
【问题描述】:
我知道如何在 google BigTable 中建表。对此我有一个疑问。google BigTable 支持的所有数据类型是什么。
【问题讨论】:
-
如果您设置一个更具描述性的标题,将来可能会有所帮助,以更清晰的方式总结您的问题。
标签: java google-app-engine jpa google-cloud-datastore
我知道如何在 google BigTable 中建表。对此我有一个疑问。google BigTable 支持的所有数据类型是什么。
【问题讨论】:
标签: java google-app-engine jpa google-cloud-datastore
引用Using JPA with App Engine 中的Class and Field Annotations 部分:
数据类的字段 存储在数据存储中必须要么 是一种被持久化的类型 默认或显式声明为 执着的。你可以找到一张图表 详述 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。
【讨论】:
上面大卫的回答给出了 Appengine 原生支持的数据类型列表。但是要使用 GAE 编写现实生活中的应用程序,您需要支持更多的数据类型和模式。除了 JPA,JDO 和 LowLevel api 及其局限性和相关问题并不实用。
在尝试了所有这些之后,我们选择了Objectify,并且再也没有回头。它是专为 GAE 设计的非常高效的数据访问抽象层。回到您的问题,使用 Objectify 为您自己的数据类型添加序列化程序非常容易。
更新: 在最初的答案 3 年后,我可以说 Objectify 是我做出的最好的软件库选择之一。
【讨论】:
Datastore 支持的数据类型列于
Datastore > Entities, Properties, and Keys > Properties and value types
【讨论】:
Here 是 App Engine for Java 原生支持的数据类型列表。
【讨论】:
Bigtable 可以存储所有的 Object 类型。它只是一个巨大的键值字典
【讨论】:
在此处查看 GAE 使用 JDO 支持的数据类型列表:
http://code.google.com/appengine/docs/java/datastore/dataclasses.html
并使用 Python:
http://code.google.com/appengine/docs/python/datastore/typesandpropertyclasses.html
【讨论】:
在 Java 中查找受支持的低级属性类型的最终方法是使用 DataTypeUtil
例如
if (!DataTypeUtil.isSupportedType(value.getClass())) {
// Convert the value to a supported type.
}
【讨论】: