2009-02-09 3 views
3

Во время нашей работы в качестве веб-разработчика для метеорологической компании мы снова и снова сталкиваемся с одной и той же задачей: получите некоторые файлы откуда-либо (FTP/Web/directory/mail) и импортируйте содержащиеся данные в базу данных.Какова наилучшая практика для разработки инфраструктуры импорта данных PHP?

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

Так что теперь я планирую в рамки импортирующих именно такого рода работы. Поскольку мы все опытные разработчики PHP, а текущие скрипты - это PHP или Perl, мы будем придерживаться PHP как языка сценариев.

  • Получатель данных будет извлекать файл из источника, открывать его и хранить содержимое в строковой переменной. (Не волнуйтесь, PHP получит от нас достаточно памяти.)
  • Обработчик данных выполнит сложную работу, чтобы преобразовать строку в какой-то массив.
  • Массив будет сохранен в базе данных или записан в новый файл или что бы мы ни делали с ним.

Наряду с этой функциональностью будут существовать некоторые распространенные обработки ошибок, запись в журнал и электронная почта.

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

Мой вопрос: Как практически организовать эти классы в рабочем скрипте? Я придумываю какой-то метаязык, который будет интерпретироваться, и классы называются соответственно? Или просто предоставить некоторые простые интерфейсы, которые должны выполнять эти классы, и мои пользователи (например, я сказал: опытные разработчики PHP) напишут небольшие скрипты PHP, загружающие эти классы?

Вторая версия почти наверняка предлагает самую большую гибкость и расширяемость.

Есть ли у вас какие-либо другие идеи относительно такого обязательства?

ответ

3

Работая в подобной среде из десятков различных форматов внешних данных, которые необходимо импортировать и экспортировать, я могу порекомендовать по крайней мере попробовать и получить их для унификации форматов данных. У нас был некоторый успех, разрабатывая инструменты, которые помогают другим, находящимся за пределами нашей компании, преобразовывать свои данные в наш формат. Мы также предоставили им исходный код бесплатно.

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

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

+0

Это «политическая трудность»: слишком много разных компаний, вовлеченных в слишком много разных инструментов и приложений. В большинстве случаев нам просто нужно использовать то, что мы получаем, и не можем требовать изменений в их способе экспорта данных. :-( –

4

Предлагаю концепции заимствования от Data Transformation Services (DTS). У вас могут быть источники данных и приемники данных, задачи импорта, задачи преобразования и т. Д.

+0

Спасибо за подсказку, я прочитаю об этом. И он указал мне в правильном направлении для акронима: ETL (Extract, Transform, Load). –

0

Есть ли причина, по которой определение стандартной веб-службы не будет работать здесь? Затем вы можете предоставить данные в стандартном формате, возвращая SOAP-ошибку (возможно, заполненную поле во входном документе), если есть ошибка.

Это потенциально более ограниченное, чем предложение Павла (или потребуется более современный дизайн), но, возможно, стоит подумать.

+0

Как я отметил в качестве награды Treb: мы не можем требовать слишком много от наших поставщиков данных и находимся в позиции слабости к ним. :-(Или они просто не знают, как отправить Matlab или IDL-выход в веб-службу. Прагматично, мы должны будем сделать работу на нашей стороне. –

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