"сделать", как планирование последовательности задач - PullRequest
1 голос
/ 24 июня 2009

Компания, в которой я работаю, имеет множество «сложных» пакетных процессов на основе файлов с такими последовательностями файлов, как:

  • взять файл A
  • получить файл B
  • объединить поля в файле A с файлом B для создания файла C
  • запустить некоторую эвристику для файла C, чтобы создать файл D
  • загрузить файл D на сервер X
  • создать отчет на основе файлов D и A и отправить его по адресу user.name@example.com

Каждый шаг может занять много часов (файлы могут содержать миллиарды строк данных). В то время как вещь склеена вместе с Makefiles GNU, с разделами, такими как:

файлC: файлD анализ выполнения $ ^> $ @

Make-файлы полезны для моделирования зависимостей между шагами, а также позволяют повторять все после определенного шага (если есть проблема с шагом, или эвристика изменена и так далее).

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

Мой вопрос: как вы координируете большие последовательности больших операций, подобных этим?

Ответы [ 3 ]

6 голосов
/ 24 июня 2009

Makefile может использоваться для программного обеспечения для сборки .
Но они не ограничены этой деятельностью.

Makefile может помочь упорядочить многие вещи .
Который включает тестовые рамки .

Использовали ли вы последовательность сборки, тестирования, установки на основе Makefile?
Есть инструменты для создания Makefiles !

Вот некоторые необычные способы использования,

Другие ссылки внутри stackoverflow включены,

4 голосов
/ 24 июня 2009

Makefiles на самом деле довольно хороши для такого рода вещей и довольно широко используются. Их можно использовать для всего, что связано с отслеживанием зависимостей (я слышал анекдот о экспертной системе, реализованной в виде make-файла). Gnu make может выполнять несколько заданий параллельно.

Вы не должны слишком задумываться о make-файлах, поскольку в качестве альтернативы используются такие инструменты корпоративного планирования, как Control-M. Эти инструменты:

  • Гораздо сложнее

  • Очень дорого

  • Довольно непрозрачный и несколько сложнее для тестирования, чем make-файл

  • Политически сложно настроить на локальном компьютере, чтобы вы могли проверить их.

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

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

С бюрократией «Архитектуры предприятия» может быть довольно сложно поспорить, если вы не знакомы с инструментарием. Makefiles знакомы, инструменты для каждого. Вы можете спорить о make-файлах на равных.

Придерживайтесь make-файлов. Это делает ублюдков честными.

0 голосов
/ 24 июня 2009

Данные в файлах переросли файловую структуру? Возможно, пришло время задуматься о новых источниках данных, если данные в файлах действительно хорошо структурированы.

Я чувствую, что замена файлов A и B хорошо структурированными данными в базе данных, однако, не вариант. Как насчет этого:

  1. Загрузка структурированных данных из файла A и извлеченного файла B в серию таблиц реляционной базы данных.
  2. Выполните объединения из таблиц, чтобы создать данные в другой таблице (таблицах) (или даже в памяти).
  3. Запустить необходимую эвристику
  4. Создать выходной файл D из полученных данных.
  5. Построить отчет по полученным и начальным данным.

Шаги 1 + 4 все еще будут медленными, но я держу пари, что вы могли бы ускорить весь процесс, используя более эффективные структуры данных для фактической обработки.

Радость работы с базами данных заключается в том, что вам доступно гораздо больше вариантов программирования (выберите язык, который вам нравится), когда речь идет о написании процедур объединения / обработки. Вам не нужно полагаться исключительно на файлы make.

...