Хранение большого блога с Objectify Appengine

У меня есть этот класс, который я хочу сохранить с помощью Objectify, этот класс будет представлять данные размером более 1 МБ, так что есть список объектов Blob, который представляет фрагмент хранимого массива байтов размером менее 1 МБ:

@Entity
public class BigBlob {

    @Id
    private Long id;
    public static final int FRAGMENT_LIMIT = 777 * 1024;
    @Serialized
    private List<Blob> fragments = new ArrayList<Blob>();

    ...

}

Тем не менее, «фрагменты» is @Serialized, который отображает размер этого класса / объекта BigBlob больше 1 МБ.

Вызывает эту ошибку:

com.google.apphosting.api.ApiProxy$RequestTooLargeException: The request to API call datastore_v3.Put() was too large.

Если я использую аннотацию @Embedded, я получаю эту ошибку:

Cannot place array or collection properties inside @Embedded arrays or collections

Как убедиться в том, что «фрагменты» хранятся как отдельная сущность?

Кстати, у меня уже есть логика разбивки байтов, которая разбивает весь байтовый массив и помещает фрагменты вList изBlob так что этот вопрос не касается того, как разрезать байты.

В основном то, что я хочу знать, - это больше о сохраняющейся стороне.

Ответы на вопрос(2)

ты в магазине, особенно если вы новичок в GAE и у вас возникли концептуальные проблемы с хранилищем данных.

С другой стороны, есть несколько веских причин использовать разделенные объекты для хранения больших двоичных объектов, особенно если вы храните данные, расположенные близко к фронту 1М. Вы не хотели бы делать это с каплями размером 100 МБ, но капли размером 2 МБ могут иметь смысл.

Прежде всего, вы не хотите сериализовать или внедрять. Это просто способы структурировать данные внутри единого объекта.

Кроме того, нет волшебной аннотации, которая позволяла бы разбивать капли между сущностями. Вы должны сделать все это вручную. Вам не нужно фактически создавать "master" или корневая сущность; просто создайте все фрагменты сущности с родителем, определенным идентификатором (но без фактической сущности), и используйте запрос ancestor () для извлечения всех фрагментов.

tify. Objectify работает поверх хранилища данных, а не из блоба.

ВАШ ОТВЕТ НА ВОПРОС