2010-06-11 6 views
0

Предположим, у вас несколько систем, использующих один и тот же БД - каждый из них использует несколько схем (иногда такие же, как и другие). Эта структура этих схем несколько большая и сложная.Как правильно управлять сложной структурой БД?

Теперь, как вы могли бы управлять такой структурой схемы? Очевидно, что использование какой-то «конфигурации» - простейшим будет сценарий SQL, но более разумным решением будет XML, который может быть легко преобразован в SQL или какое-либо другое читаемое решение (например, JPA XML или аннотации).

Это решение, однако, вызывает проблему, когда вы не можете точно определить, соответствует ли ваша конфигурация структуре схемы БД. Вы не можете сказать, синхронизированы ли эти два. Почему бы и нет? Ну, в такой большой структуре будет много изменений, и вы не всегда будете помнить о сохранении/фиксации своей конфигурации после того, как вы изменили схемы, или, может быть, вы сохранили/зафиксировали ее, но в итоге не изменили ничего в схемах и забыл отменить изменения в конфигурации.

Более того, другая проблема (не вызванная конфигурацией, но также не адресованная им) - это управление версиями. Я не вижу никакого хорошего способа управления версиями схем БД (скажем, наше последнее изменение приводит к сбою 3 систем - нехорошо, как «откат»?).

И мысли? спасибо.

ответ

0

Вопрос довольно расплывчатый, но я считаю, что LiquiBase (www.liquibase.org) был изобретен для решения именно тех проблем, которые вы описываете.

+0

После краткого ознакомления с этой библиотекой кажется, что она помогает управлять версиями (также между несколькими разработчиками), но как она справляется с проблемой синхронизации? Может ли эта библиотека взглянуть на мою конфигурацию и посмотреть на схемы БД, и рассказать мне, каковы различия между ними, и, возможно, даже создать конфигурацию, которая будет точно отражать структуру БД, как сейчас? –

+0

Да. Вроде. Сама база данных отслеживает, какие изменения были выполнены, и может генерировать журнал изменений из существующей схемы: http://www.liquibase.org/manual/generating_changelogs. –

0

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

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

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