В настоящее время я отвечаю за процесс, который, кажется, очень тесно связан с базой данных. Цель моей программы / скрипта / фреймворка - сделать единообразие из разнородных источников данных. Используя форму внедрения зависимости, мой процесс на очень высоком уровне работает нормально. Реализация каждого типа источника данных скрыта от бизнес-абстракции самого высокого уровня происходящего. Отлично. У меня два вопроса.
1) У меня длинный абзац (и его беспокоит длина), который собирает инструкцию SQL в пространстве Perl о том, как преобразовать эти разные источники данных в один, однородный конечный формат. Поэтому строка SQL всегда зависит от типа данных, с которыми я работаю. Предложение WHERE зависит, предложение FROM зависит, предложение INSERT зависит, все зависит. Меня смущает высокий уровень зависимости. Как мне моделировать этот процесс объектно-ориентированным способом? MagicObject-> buildSQL? По сути, это то, что у меня есть сейчас, но кажется, что все части кода знают слишком много, поэтому его длина.
2) Если у меня есть функция, которая что-то делает (строит SQL?), Передам ли я бизнес-объекты целиком, а затем в последнюю минуту приведу их в строку? Или я ранжирую их пораньше и позволяю моей функции обрабатывать только то, что ей нужно, а не визуализировать сами объекты?
Редактировать : Хотя я не сомневаюсь в важности ORM, я не верю, что мы еще находимся в пространстве ORM. Представьте, что данные по бейсболу для американской, национальной и вымышленной лиг хранились в совершенно разных форматах с разными уровнями нормализации. Моя работа состоит в том, чтобы читать эти источники данных и помещать их в единый нормализованный пул. Я чувствую, что действие ORM на эти объекты происходит после моего процесса. Я своего рода уборщик данных, если хотите. По сути, из-за отсутствия единого пула, который я создаю, бизнес-объектов пока не существует.
Редактировать ^ 2 : Мне стало известно, что, возможно, я не описал проблемное пространство достаточно подробно. Вот пример.
Представьте, что вам нужно было создать основную базу данных всех преступников в Соединенных Штатах. Служба вашей компании продает продукт, который находится на вершине, и предоставляет доступ к этим данным в чистом унифицированном формате.
Эти данные предоставляются в открытом доступе 50 штатами, но в совершенно разных форматах. Некоторые представляют собой один файл данных, не нормализованный. Другие являются нормализованными таблицами в формате CSV. Некоторые из них являются документами Excel. Некоторые из них являются TSV. Предоставляются даже некоторые записи, которые не являются полными без ручного вмешательства (другие, созданные вручную источники данных).
Цель моего проекта - создать «драйвер» для каждого из 50 состояний и убедиться, что конечным продуктом процесса является основная база данных преступников в идеальной модели отношений. Все правильно набрано, схема в идеальной форме и т. Д.