Каков наилучший метод для первоначального (массового) импорта данных в систему RESTful? - PullRequest
2 голосов
/ 17 января 2012

Что вы считаете чистым и эффективным способом первоначального заполнения хранилища данных, которое является частью архитектуры распределенной системы RESTful?

У нас уже есть метод POST для массового импорта, который принимает XML-канал, анализирует, проверяет и импортирует данные.Таким образом, одна возможность потребует, чтобы клиент отправил POST по нашему интерфейсу REST (вероятно, порциями, если мы столкнулись с проблемами тайм-аута с запросом).

Само хранилище данных основано на MongoDB, так что с другойС другой стороны, вы также можете подумать о низкоуровневом массовом импорте, который берет сжатый файл данных, распаковывает его и напрямую импортирует данные JSON в базу данных (что, конечно, обойдёт нашу бизнес-логику для проверки данных для импорта).

Каково ваше мнение и рекомендация, есть ли шаблон REST, который дает совет по этой проблеме?

1 Ответ

1 голос
/ 20 января 2012

Не зная больше деталей, я думаю, что вы в конечном итоге прибили это. Я бы разбил данные на куски, а затем запустил программу, чтобы прочитать один из этих кусков и отправить эти данные в ваш http-интерфейс.

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

Сказав все это, также хорошо, если ваша система позволяет импортировать одно и то же несколько раз без последствий (см. http://en.wikipedia.org/wiki/Idempotence), так что в случае, если вам придется полностью повторно отправить 1 сегмент, ваш restful backend сможет принять его без дублирования данных.

Если вы работаете хорошо, вы можете даже запустить свою программу импорта из нескольких блоков одновременно, чтобы сделать ее параллельной и более быстрой. (до тех пор, пока ваш http / restful бэкэнд может справиться с этим)

...