|
FireBird vs PostgreSQL
|
|||
---|---|---|---|
#18+
Добрый день! Не знаю где создать тему, более правильно... Но проблема такая. Есть БД firebird 2.5. Стоит она на сервере. Изменять её нельзя. Она как-бы master. По некоторым причинам, нужно на второй сервак поставить базу PostgreSQL. Он, получается, будет slave. Ну и сделать реплекацию. Т.е. нужно чтобы с master копировались все новые данные на slave. В идеале, не всех таблиц, а только некоторых... Возможно ли это сделать? Если нет, то как можно понять, какие записи были изменены/добавлены в определенной таблице с последней даты синхронизации? Тогда, я смогу написать сам программу... Сталкивался кто-нибудь с этим? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2016, 11:05 |
|
FireBird vs PostgreSQL
|
|||
---|---|---|---|
#18+
Поиск по слову "репликация" уже проведён? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2016, 11:11 |
|
FireBird vs PostgreSQL
|
|||
---|---|---|---|
#18+
volfram, можно. добавляешь в мастер-таблицы поля с признаком выполнения синхронизации ("флаг", дата, время). пишешь синхронизатор. это просто если синхронизация однонаправленная. если двусторонняя - сложне ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2016, 11:13 |
|
FireBird vs PostgreSQL
|
|||
---|---|---|---|
#18+
WildSery, Да :-) Как раз нашел конвертер из firebird на postgresql... Но каждый раз конвертировать всю базу....нереально.. Сейчас пытаюсь гуглить про последние обновленные записи... Как-то не выходит) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2016, 11:15 |
|
FireBird vs PostgreSQL
|
|||
---|---|---|---|
#18+
volfram, если мастер-базу изменять нельзя, то делаешь техническую таблицу, где вносятся эти данные ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2016, 11:15 |
|
FireBird vs PostgreSQL
|
|||
---|---|---|---|
#18+
fankhm, синхронизация однонаправленная. Я не совсем понял.. пусть, в master, я добавлю поле (хотя не очень хочется это делать, так как, если где-то код выполняется как select *, могут быть проблемы в программе, которую разрабатывали не мы), но когда произойдет update поля, дата же не изменится (так как в программе этого нет) и я не узнаю, что поле изменилось.. а полностью проверять БД, займет очень много времени....даже не одни сутки всмысле. Т.е. на момент обновления база уже будет не актуальная... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2016, 11:20 |
|
FireBird vs PostgreSQL
|
|||
---|---|---|---|
#18+
volfram, создаёшь с мастер свою таблицу: - имя таблицы - дата изменения в нужных таблицах создаёшь триггеры на добавление и изменение. триггер при срабатывании пишет в твою техническую таблицу имя таблицы, где оно сработало и дату ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2016, 11:24 |
|
FireBird vs PostgreSQL
|
|||
---|---|---|---|
#18+
так минимизируется изменение структуры мастер-базы. лишних полей не добавляется ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2016, 11:25 |
|
FireBird vs PostgreSQL
|
|||
---|---|---|---|
#18+
volfram, Помимо технической таблицы тебе нужны будут еще и триггера, которые обеспечат слив в таблицу новых, модифицированных и удаленных данных (самого факта удаления). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2016, 11:26 |
|
FireBird vs PostgreSQL
|
|||
---|---|---|---|
#18+
fankhm, Да, я тоже подумал, про техническую таблицу :-) Пока единственное, что я думаю, это хранить последний ID записи (благо в каждой он есть и уникален), ночью пробегаться по всем таблицам, где id больше моего и эти записи добавлять в slave. А вторым потоком бегать по всем таблицам и смотреть есть ли различия между строками.... В таком случае, количество записей будет более менее актуальное, а вот если был update.... То несколько дней придется подождать...пока больше ничего в голову не лезет... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2016, 11:30 |
|
FireBird vs PostgreSQL
|
|||
---|---|---|---|
#18+
fankhm, а, понял) спасибо) Да, так, наверное, лучше всего) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2016, 11:32 |
|
FireBird vs PostgreSQL
|
|||
---|---|---|---|
#18+
volframfankhm, Да, я тоже подумал, про техническую таблицу :-) Пока единственное, что я думаю, это хранить последний ID записи (благо в каждой он есть и уникален), ночью пробегаться по всем таблицам, где id больше моего и эти записи добавлять в slave. А вторым потоком бегать по всем таблицам и смотреть есть ли различия между строками.... В таком случае, количество записей будет более менее актуальное, а вот если был update.... То несколько дней придется подождать...пока больше ничего в голову не лезет... не понял зачем так сложно ? триггер тебе будет всё что нужно писать, и у тебя уже будут все данные для синхронизации вплоть до значений (если уже так надо, хотя это перебор). например для таблицы Т1 будет триггер Код: plsql 1. 2. 3. 4.
всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2016, 11:36 |
|
FireBird vs PostgreSQL
|
|||
---|---|---|---|
#18+
fankhm, Проще все лить в одну таблицу: insert into (.... , TableName, Operation,MODIFIED_ID, .....) values (....., 'MYTABLE', 'UPDATE',NEW.ID,.....); Тогда легко можно разбросать изменения по целевым таблицам. Насколько много таких изменений кстати? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2016, 11:41 |
|
FireBird vs PostgreSQL
|
|||
---|---|---|---|
#18+
DarkMaster, Ежедневно создается около 500 записей. Обновляется сколько я не знаю, но мне кажется, не так много... Всего 800+ таблиц :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2016, 11:43 |
|
FireBird vs PostgreSQL
|
|||
---|---|---|---|
#18+
DarkMaster, это уже "вариации на тему". мы же не знаем исходную структуру и что должно быть в конечном итоге :) а так - базовый вариант, на который можно накрутить всё что надо ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2016, 11:45 |
|
FireBird vs PostgreSQL
|
|||
---|---|---|---|
#18+
Но вопросы - а сколько данных, какая интенсивность вставки-обновления на мастер-базе, насколько оперативно нужно реплицировать? А то ведь случай бывает разный. если например поток данных льется рекой, триггер может подтормозить. иной раз может целесообразно мастер-базу приостановить, бэкапнуть, запустить снова, а уже восстановленное из бэкапа целиком влить в реплику. С полной заменой всего. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2016, 11:46 |
|
FireBird vs PostgreSQL
|
|||
---|---|---|---|
#18+
volframDarkMaster, Ежедневно создается около 500 записей. Обновляется сколько я не знаю, но мне кажется, не так много... Всего 800+ таблиц :-) не забудь проверять на ТЕСТОВОЙ базе :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2016, 11:47 |
|
FireBird vs PostgreSQL
|
|||
---|---|---|---|
#18+
Vladimir BaskakovНо вопросы - а сколько данных, какая интенсивность вставки-обновления на мастер-базе, насколько оперативно нужно реплицировать? А то ведь случай бывает разный. если например поток данных льется рекой, триггер может подтормозить. иной раз может целесообразно мастер-базу приостановить, бэкапнуть, запустить снова, а уже восстановленное из бэкапа целиком влить в реплику. С полной заменой всего. тоже вариант ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2016, 11:48 |
|
FireBird vs PostgreSQL
|
|||
---|---|---|---|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Так? Лучше AFTER так как могло не произойти, например, обновление... Если разбивать по операциям, то создавать на каждую операцию свой триггер? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2016, 11:49 |
|
FireBird vs PostgreSQL
|
|||
---|---|---|---|
#18+
volfram Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Так? Лучше AFTER так как могло не произойти, например, обновление... Если разбивать по операциям, то создавать на каждую операцию свой триггер? эээ... я для примера указал New.RecID смотри по своей структуре какие там в таблицах имена ключей ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2016, 11:53 |
|
FireBird vs PostgreSQL
|
|||
---|---|---|---|
#18+
Взять готовый репликатор всё же было бы проще... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2016, 12:00 |
|
FireBird vs PostgreSQL
|
|||
---|---|---|---|
#18+
Vladimir Baskakov, Данных не так много...около 100 человек, в рабочий день, вносят данные...новых записей порядка 500...Плюс обновляют.. Ночью база, практически, не используется. Как и в выходные. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2016, 12:17 |
|
FireBird vs PostgreSQL
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, А как взять готовый реплекатор? Прошу прощения, за, возможно, глупый вопрос. Просто, я программист, и с firebird'ом особо не сталкиваюсь, так, добавить, удалить, изменить.... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2016, 12:20 |
|
FireBird vs PostgreSQL
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, всмысле не как, а где :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2016, 12:23 |
|
|
start [/forum/topic.php?fid=40&msg=39288160&tid=1562025]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 266ms |
total: | 417ms |
0 / 0 |