|
|
|
Изменение схемы существующей БД и поддержка версионности
|
|||
|---|---|---|---|
|
#18+
Всем доброго дня В процессе разработки текущая схема БД хранится в виде файлов в репозитории. В БД уже есть данные, так что любой процесс изменения схемы не должен приводить к потере данных. Все изменения должны быть отражены в репозирории, чтобы была возможность воссоздать схему. Мне интересно, как у вас построен процесс разработки БД и контроль версий. В каком виде вы храните изменения в БД? С уважением, Давыдов Виталий ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2008, 17:01 |
|
||
|
Изменение схемы существующей БД и поддержка версионности
|
|||
|---|---|---|---|
|
#18+
davydoffВсем доброго дня Мне интересно, как у вас построен процесс разработки БД и контроль версий. В каком виде вы храните изменения в БД? См. ссылку . Там описаны несколько подходов. "Метод “таблиц-двойников”" мне наиболее симпатичен, ИМХО. Однако, если данные изменяются очень часто, стОит подумать о другом методе. Под "изменением" в данном случае я имею ввиду операции DELETE и UPDATE, но не INSERT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2008, 17:15 |
|
||
|
Изменение схемы существующей БД и поддержка версионности
|
|||
|---|---|---|---|
|
#18+
Таки вопрос про версионность схемы или версионность схемы и данных? Если интересует только версионность схемы - то у нас устроено так: Каждую ночь автоматический таск сгружает заскриптованные описания всех объектов базы данных (таблицы, триггера, ХП, функции итп) в текстовом виде в Visual Source Safe. Удобно смотреть за эволюцией схемы по диффам между разными версиями одного объекта. Неудобно, то что не видны промежуточные изменения сделанные в течении дня . Неудобно, что не виден автор изменения (автор везде - системный логин). Для нас неудобства не принципиальны из-за особенностей процесса разработки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2008, 18:28 |
|
||
|
Изменение схемы существующей БД и поддержка версионности
|
|||
|---|---|---|---|
|
#18+
Senya_L davydoffВсем доброго дня Мне интересно, как у вас построен процесс разработки БД и контроль версий. В каком виде вы храните изменения в БД? См. ссылку . Там описаны несколько подходов. "Метод “таблиц-двойников”" мне наиболее симпатичен, ИМХО. Однако, если данные изменяются очень часто, стОит подумать о другом методе. Под "изменением" в данном случае я имею ввиду операции DELETE и UPDATE, но не INSERT. Не то :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 09:24 |
|
||
|
Изменение схемы существующей БД и поддержка версионности
|
|||
|---|---|---|---|
|
#18+
davydoffВ каком виде вы храните изменения в БД? Если изменение незначительно и не затрагивает функционал (добавили какое-то необязательное поле), то в виде скриптов на изменение. Т.е. файл может выглядеть как-то так: Код: plaintext 1. 2. 3. 4. 5. 6. Другой способ - файлы с переходными скриптами от версии к версии ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 10:11 |
|
||
|
Изменение схемы существующей БД и поддержка версионности
|
|||
|---|---|---|---|
|
#18+
Коллеги, спасибо за комментарии. Задача состоит в том, чтобы хранить текущую актуальную схему БД в виде файлов на диске. В БД есть данные. Есть данные в БД, версионность которых нужно поддерживать. Сейчас я использую подход, который привел sti - файлы с переходными скриптами. Есть некоторая базовая схема, к которой применяется скрипт. В итоге схема переходит в другой вид. Сейчас в репозитории каждая таблица (create table) хранится в виде отдельного файла. Аналогично хранятся другие объекты. Теперь представьте, я добавляю новый столбец в таблицу с данными. Я не могу это сделать, изменив файл, где эта таблица создается. Иначе данные будут потеряны. В итоге, я создаю скрипт - выполняется alter table. При этом файл с таблицей тоже надо изменять, чтобы поддерживать исходники в актуальном состоянии. В общем, все нетривиально получается. Для меня проблемы разобраться нет, но придет другой человек и не сможет использовать репозиторий, для того чтобы воспроизвести актуальную схему в БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 12:08 |
|
||
|
Изменение схемы существующей БД и поддержка версионности
|
|||
|---|---|---|---|
|
#18+
davydoffСейчас я использую подход, который привел sti - файлы с переходными скриптами. Есть некоторая базовая схема, к которой применяется скрипт. В итоге схема переходит в другой вид.так все и делают davydoffСейчас в репозитории каждая таблица (create table) хранится в виде отдельного файла.а как решается проблема со связями между таблицами - тригерами и порядком их создания ? davydoffТеперь представьте, я добавляю новый столбец в таблицу с данными. Я не могу это сделать, изменив файл, где эта таблица создается. Иначе данные будут потеряны. В итоге, я создаю скрипт - выполняется alter table. При этом файл с таблицей тоже надо изменять, чтобы поддерживать исходники в актуальном состоянии. В общем, все нетривиально получается. Для меня проблемы разобраться нет, но придет другой человек и не сможет использовать репозиторий, для того чтобы воспроизвести актуальную схему в БД.для некоторых СУБД есть автоматизированные средства производящие сравнение схемы данных и самих данных в двух базах и генерящие скрипт приведения одной базы в другую. но они не всегда работают и не всегда правильно... :) http://database-comparison.qarchive.org/ я пробовал EMS DB Comparer for PostgreSQL правда по-моему предыдущую версию или предпредыдущую - была просто не работоспособна. теряла информацию о правах доступа при синхронизации/сравнении, для не совсем уж простых связей просто генерировала битый синтаксически alter скрипт... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 23:32 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=100&tid=1543728]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 211ms |
| total: | 363ms |

| 0 / 0 |
