Задача AppEngine для создания множества сущностей - PullRequest
1 голос
/ 14 июля 2011

Я создаю приложение для людей, посещающих мероприятия. Мне нужно создать объект Ticket для подмножества лиц Person для определенного события. Количество людей может превышать 50 000 юридических лиц.

Очевидно, что я не могу просто выполнить цикл for, где я повторяю запрос Person и генерирую эти тикеты.

Как мне структурировать это в App Engine, есть ли способ воспользоваться MapReduce?

Ответы [ 3 ]

1 голос
/ 14 июля 2011

Вы можете выполнить итерацию в одном цикле for, если у вас есть Backend, где запрос может длиться долго. Но такие длительные процессы, на мой взгляд, не очень хорошая вещь. Я думаю, правильного использования очередей задач более чем достаточно.

Я читал об отложенной библиотеке. Иногда это ведет себя странно, и сбор ваших данных может вызвать некоторые головные боли. Я мог бы для TaskQueue API

1 голос
/ 14 июля 2011

Возможно, вы захотите взглянуть на отложенную библиотеку . Вы можете разместить несколько очередей задач параллельно, чтобы выполнить ту работу, которая вам нужна. Возможно, вы захотите взглянуть на пример класса Mapper в документации Google, который может помочь вам подтолкнуть вас в правильном направлении.

0 голосов
/ 03 октября 2011

Я не предлагаю Отложенная библиотека , хотя написать код очень просто, недостатком является то, что он будет перебирать ваши данные, помещать их в одну сущность, а затем загружать и распаковывать, что стоит многонакладные расходы.Помещение 30K сущностей стоит мне около 3 ЦП !

самый дешевый способ - это просто использовать Task Queue , который разделяет Person и ставит в очередь сключи или другая позиционная информация.Вставьте те же 30K сущностей, которые используются менее чем 1 CPU Hour .

По вашему вопросу, выбор 1 миллиона сущностей и их перерасход очень быстро зависит от дизайна GAE, просто сделайте это.Самая медленная часть - это сохранение новой сущности Ticket.

Кстати, почему бы не просто Person.all().filter("something like attending events").

...