Вопрос шаблона проектирования, касающийся нескольких баз данных с немного различными структурами - PullRequest
1 голос
/ 23 июля 2010

Я работаю над перепиской очень старого проекта Perl. Этот проект для оценки эффективности сотрудников. Каждый год сотрудник будет оцениваться его руководителем (ями).

Проект был впервые введен в эксплуатацию в 1994 году с использованием mysql. В 1995 году для оценки 1995 года была создана новая база данных mysql, а исходный код был изменен. Затем 1996, 1997, ..... 2003. В 2004 году все по-другому. Разработчики используют оракул .... до сих пор. Смотрите, есть более 10 баз данных.

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

Теперь мне нужно переписать этот проект с помощью Jsp / Servlet, чтобы он имел универсальный пользовательский интерфейс на все годы. Но я должен сохранить структуру базы данных, как сказал мой начальник, данные очень и очень чувствительны, поэтому просто держите их там.

Это моя ситуация. Не могли бы вы сказать мне, как спроектировать это? Какой шаблон дизайна следует использовать?

Ответы [ 2 ]

0 голосов
/ 23 июля 2010

Я предполагаю, что отчеты об оценке используются только для просмотра данных, а не для их изменения.

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

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

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

0 голосов
/ 23 июля 2010

Нужно ли обновлять старые базы данных?Если нет, можете ли вы перенести их все на более новую систему и оставить прежнюю систему нетронутой?Если старые системы все еще могут быть изменены, можете ли вы добавить триггеры, чтобы они обновляли новую систему при обновлении старой?Таким образом, вы никогда не редактируете конфиденциальные старые данные, но, по крайней мере, можете представить их более современным способом.

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

Это не конкретный шаблон проектирования в смысле синглтон / стратегия / фабрика, но иногда вам просто нужно создать мультиплексор для древнихустаревшие вещи.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...