Как правильно добавить / манипулировать тысячами детей в группе сущностей? - PullRequest
1 голос
/ 27 июля 2010

Это далее к моему предыдущему вопросу об обработке большого количества объектов в BigTables / JDO.

Если предположить, что TransactionAccount может содержать до 10000 объектов в списке transactions, как это работает с механизмом приложений Goodle?

Как добавить объекты в такой большой список без загрузки всего списка в память? (Предполагается, что 10000 объектов не должны быть загружены в память?)

Я не пытаюсь спросить вас, как сделать домашнее задание, я просто не знаю, с чего начать, документация механизма приложений и поиск в Google не помогают: (

// example only, not meant to compile
@PersistenceCapable
public class TransactionAccount {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    public Key key;
    private long balance;
    private long transactionCount;
    @Element(dependent = "true")
    private List<Transaction> transactions = new ArrayList<Transaction>();
    ....
    public long getBalance() { return balance; }
}

@PersistenceCapable
private class Transaction {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    public Key key;
    public Date date;
    public long amount;
}

Этот вопрос поднимается, но не решается в следующих сообщениях групп Google .

1 Ответ

1 голос
/ 29 января 2011

попробуйте пометить свойство транзакций @NotPersistent, чтобы оно вообще не сохранялось в хранилище данных.Вы можете получить объекты транзакции для данного TransactionAccount с запросом-предком (больше в этой теме ).при этом вы должны иметь возможность хранить произвольно много транзакций для данной учетной записи, поскольку не все они хранятся в сущности учетной записи.

менее радикальной мерой было бы отметить свойство транзакций, не проиндексированное этой аннотацией:

@Extension(vendorName = "datanucleus", key = "gae.unindexed", value="true") 

транзакции счета все равно будут храниться в списке, но они не будут проиндексированы, что сделает его немного более осуществимым.тем не менее, вы достигнете предела размера сущности в 1 МБ около 10-100 КБ транзакций, что не будет проблемой, если вы используете @NotPersistent.

...