2010-11-02 4 views
0

Я использую Google App Engine для создания веб-приложения. Приложение имеет сущность, записи, для которых будет вставлен пользователь через функцию загрузки. Пользователь может выбрать до 5 тыс. Строк (объектов) данных. Я использую проект DataNucleus в качестве реализации JDO. Вот такой подход, который я беру для вставки данных в хранилище данных.Использование очередей задач в GAE для вставки объемных данных

  1. Данные считываются из CSV и преобразуются в объекты сущностей и сохраняются в списке.
  2. Список разделен на более мелкие группы объектов, которые говорят около 300/группы.
  3. Каждая группа сериализуется и хранится в кеше с использованием memcache с использованием уникального идентификатора в качестве ключа.
  4. Для каждой группы задание создается и вставляется в очередь вместе с ключом. Каждая задача вызывает сервлет, который принимает этот ключ в качестве входного параметра, считывает данные из памяти и вставляет его в хранилище данных и удаляет данные из памяти.

Очередь имеет максимальную скорость 2/мин, а размер ведра равен 1. Проблема, с которой я столкнулся, - это задача не вставлять все 300 записей в хранилище данных. Из 300 максимум, который вставил, составляет около 50. Я проверял данные после его чтения из memcache и могу получить все сохраненные данные из памяти. Я использую метод makepersistent для PersistenceManager для сохранения данных в ds. Может кто-нибудь, пожалуйста, скажите мне, в чем проблема?

Кроме того, я хочу знать, есть ли лучший способ обработки массовой вставки/обновления записей. Я использовал инструмент BulkInsert. Но в таких случаях он не будет удовлетворять требованиям.

ответ

1

Это идеальный чехол для App Engine mapreduce. Mapreduce может считывать строки текста из блоба в качестве входных данных, и он закроет ваш ввод для вас и выполнит его в задаче.

Когда вы говорите, что загрузчик «не удовлетворяет требованиям», это поможет, если вы скажете, какое требование у вас есть, что оно не удовлетворяет, хотя, я полагаю, в этом случае проблема заключается в том, -admin пользователей для загрузки данных.

+0

Именно поэтому я хочу, чтобы пользователи, не являющиеся администраторами, загружали данные. Пользователь может выбирать свои ежедневные записанные данные и загружать их в DS через средство загрузки. – Vikram

 Смежные вопросы

  • Нет связанных вопросов^_^