2010-04-26 2 views
3

Я знаю, как заглядывать в google BigTable. У меня есть одно сомнение относительно этого. Каковы все типы данных, поддерживаемые google BigTable.Какие типы данных поддерживаются хранилищем данных Google App Engine?

+0

Возможно, это будет полезно в будущем, если вы зададите более описательное название, что более подробно изложит ваш вопрос. –

ответ

0

Bigtable может хранить все типы объектов. Его просто гигантский ключ-значение словаря

+0

Я попытался сохранить GregorianCalendar и получил неподдерживаемое исключение операции. –

+0

Вопрос смущен. AppEngine может использовать BigTable как уровень реализации, но он не раскрывает это пользователю. –

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.

+0

Как определить и использовать тип данных электронной почты и номеров телефонов в большой таблице – user309944

+0

Знаете ли вы, существует ли ограничение на размер() коллекции? – fernandohur

2

ответ Давида выше дает список типов данных поддерживается изначально по Appengine. Но для написания реальных приложений с помощью GAE вам нужно больше типов данных и шаблонов. Помимо JPA, JDO и LowLevel api с их ограничениями и связанными с ними проблемами не так практичны в использовании.

После того, как они попробовали все, мы выбрали Objectify и никогда не оглядывались назад. Это очень эффективный уровень абстракции доступа к данным, специально разработанный для GAE. Возвращаясь к вашему вопросу, очень легко добавить сериализаторы для ваших собственных типов данных с Objectify.

Обновление: Через 3 года после первоначального ответа я могу сказать, что Objectify является одним из лучших решений для библиотеки программного обеспечения, которые я сделал.

1

Here - это список типов данных, поддерживаемых в App Engine для Java.

0

Окончательный способ найти поддерживаемые типы недвижимости низкого уровня в Java является использование DataTypeUtil

например

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