|
сравнение структуры 2х баз данных
|
|||
---|---|---|---|
#18+
Есть проект, состоящий из распределенных в пространстве stand-alone серверов с PostgreSQL 7.4.(модифицированная версия) Есть активный центральный сервер, где собираются все данные и обрабатываются. На нем же, происходит и развитие структуры БД. Есть задача приведения структуры бд на удаленных серверах к структуре центрального сервера, при этом необходимо сохранить данные на удаленном сервере, т.к. они не полностью совпадают с тем, что на центральном. Для примера: Есть таблица central.tab с полями a и b , был когда то произведен перенос этой таблицы на remote.table_a с теми же полями. Далее в процессе разработки central.tab получила столбец с , но a был вынесен в другую таблицу. на момент обновления ПО на удаленном сервере, уже скопился определенный объем уникальной информации, которой нету в central.tab. Как и чем произвести мягкий автоматизированный переход на новую структуру, если есть все соответствия новых полей и таблиц старым. Или хотя бы как сравнить структуры и понять что поменялось.. Пробовали ERWin, но необходимый результат достигнут не был. Возникла еще бредовая идея типа написания скрипта который бы по системным таблицам с нуля восстанавливал структуру и просто тупо с помощью какого-либо windiff'а сравнить текст создания структуры Например восстановление старого tab выглядит как create table tab (temp_column int) alter table tab add column a alter table tab add column b alter table tab drop temp_column в новой структуре это будет как create table tab (temp_column int) alter table tab add column b alter table tab add column с alter table tab drop temp_column create table tab2 (temp_column int) alter table tab2 add column a alter table tab2 drop temp_column при проходе winDiff покажет что a из старой структуры исчез, добавился c и появилась новая сущность tab2. Данные перекачивать пока даже не знаю как.... Понимаю что подход очень извратный, но проблема в том, что стандартные средства не помогли это сделать. Если кто сталкивался с подобными задачами и успешно решил их или может подсказать идеи, как их решить - напишите пожалуйста здесь или на контактную инфу: ICQ - 864050 mail: centur@dezcom.mephi.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2004, 12:21 |
|
сравнение структуры 2х баз данных
|
|||
---|---|---|---|
#18+
Не знаю как в ERwin а в power designer делаешь реверс по обеим структурам, одну сохраняешь в види архивной модели, вторую в виде текущей, выбираешь в меню Database -> Modify Database ставишь соответствующие галочки, после чего дизайнер сгенерит скрипт в котором создает копии рабочих таблиц, перегоняет туда данные, создает новую структуру и сливает из копий таблиц данные. Если натыкается в структуре на констрейнты (например новое поле с not null-ом) и залить из старой схеме данные не может помечает те места коментариями, чтоб можно было исправить ручками. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2004, 12:38 |
|
сравнение структуры 2х баз данных
|
|||
---|---|---|---|
#18+
а поподробнее можно ? а то у меня повердизайнер 7.4 не понимает, я сам не могу понять как можно создать базы из скриптов (реверс инжиниринг пробовал - не очень удачно. есть ли другой способ или как им пользоваться верно ) Если можно - дайте контакт - мыло или аську - чтобы быстрее общаться ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2004, 07:09 |
|
сравнение структуры 2х баз данных
|
|||
---|---|---|---|
#18+
2 centur Мыло в профайле смотри. Power designer лучше возьми поновее, для разовой работы может даже ознакомительная версия десятки сгодиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2004, 10:43 |
|
сравнение структуры 2х баз данных
|
|||
---|---|---|---|
#18+
> Есть таблица central.tab с полями a и b , был когда то произведен перенос этой > таблицы на remote.table_a с теми же полями. Далее в процессе разработки > central.tab получила столбец с , но a был вынесен в другую таблицу. на момент > обновления ПО на удаленном сервере, уже скопился определенный объем > уникальной информации, которой нету в central.tab. Изначально плохо спроектированная база данных. Не должно возникать ситуаций с переносами полей из таблицы в таблицу. Решить описанную проблему можно попробовать следующим образом: вести лог в каждой из баз данных: что, кем, когда и куда добавлено. Кроме того, в центральной базе необходимо описать и поддерживать актуальной структуру всех баз (если они одинаковы, то это достаточно просто). Все изменения в базе фиксируются в таблицах, описывающих структуру баз. Теперь достаточно просто получить структуру любой базы данных на любой момент времени и внести в любую из них требуемые изменения. Но не рекомендовал бы так делать: это _очень_ геморройный путь. Возможно, проще будет все переписать. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2004, 15:00 |
|
сравнение структуры 2х баз данных
|
|||
---|---|---|---|
#18+
ммм... база в процессе проектирования и доработки. одновременно создается распределенная система.. но вы не поняли вопроса - перенос не из таблицы в таблицу, хотя и такой бывает. проблема в синхронизации версий базы. Вот Геннадий подсказал решение. но к сожалению 10 ПД не в полном объеме поддерживает 7.4.1 постгрю, по крайней мере reverse database дает не самые показательные результаты, и опять же - не смог сделать как сказал Геннадий будем пытаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2004, 21:25 |
|
|
start [/forum/topic.php?fid=53&fpage=356&tid=2007808]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
69ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 181ms |
0 / 0 |