powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FireBird vs PostgreSQL
25 сообщений из 28, страница 1 из 2
FireBird vs PostgreSQL
    #39288146
volfram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Не знаю где создать тему, более правильно...
Но проблема такая.
Есть БД firebird 2.5. Стоит она на сервере. Изменять её нельзя. Она как-бы master.
По некоторым причинам, нужно на второй сервак поставить базу PostgreSQL. Он, получается, будет slave. Ну и сделать реплекацию.
Т.е. нужно чтобы с master копировались все новые данные на slave. В идеале, не всех таблиц, а только некоторых... Возможно ли это сделать?
Если нет, то как можно понять, какие записи были изменены/добавлены в определенной таблице с последней даты синхронизации? Тогда, я смогу написать сам программу...
Сталкивался кто-нибудь с этим?
...
Рейтинг: 0 / 0
FireBird vs PostgreSQL
    #39288147
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поиск по слову "репликация" уже проведён?
...
Рейтинг: 0 / 0
FireBird vs PostgreSQL
    #39288148
fankhm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
volfram,

можно. добавляешь в мастер-таблицы поля с признаком выполнения синхронизации ("флаг", дата, время). пишешь синхронизатор.

это просто если синхронизация однонаправленная. если двусторонняя - сложне
...
Рейтинг: 0 / 0
FireBird vs PostgreSQL
    #39288149
volfram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WildSery,

Да :-)
Как раз нашел конвертер из firebird на postgresql... Но каждый раз конвертировать всю базу....нереально..
Сейчас пытаюсь гуглить про последние обновленные записи... Как-то не выходит)
...
Рейтинг: 0 / 0
FireBird vs PostgreSQL
    #39288151
fankhm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
volfram,

если мастер-базу изменять нельзя, то делаешь техническую таблицу, где вносятся эти данные
...
Рейтинг: 0 / 0
FireBird vs PostgreSQL
    #39288154
volfram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fankhm,

синхронизация однонаправленная.
Я не совсем понял..
пусть, в master, я добавлю поле (хотя не очень хочется это делать, так как, если где-то код выполняется как select *, могут быть проблемы в программе, которую разрабатывали не мы), но когда произойдет update поля, дата же не изменится (так как в программе этого нет) и я не узнаю, что поле изменилось.. а полностью проверять БД, займет очень много времени....даже не одни сутки всмысле. Т.е. на момент обновления база уже будет не актуальная...
...
Рейтинг: 0 / 0
FireBird vs PostgreSQL
    #39288157
fankhm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
volfram,

создаёшь с мастер свою таблицу:

- имя таблицы
- дата изменения

в нужных таблицах создаёшь триггеры на добавление и изменение. триггер при срабатывании пишет в твою техническую таблицу имя таблицы, где оно сработало и дату
...
Рейтинг: 0 / 0
FireBird vs PostgreSQL
    #39288160
fankhm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так минимизируется изменение структуры мастер-базы. лишних полей не добавляется
...
Рейтинг: 0 / 0
FireBird vs PostgreSQL
    #39288161
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
volfram,

Помимо технической таблицы тебе нужны будут еще и триггера, которые обеспечат слив в таблицу новых, модифицированных и удаленных данных (самого факта удаления).
...
Рейтинг: 0 / 0
FireBird vs PostgreSQL
    #39288164
volfram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fankhm,

Да, я тоже подумал, про техническую таблицу :-)
Пока единственное, что я думаю, это хранить последний ID записи (благо в каждой он есть и уникален), ночью пробегаться по всем таблицам, где id больше моего и эти записи добавлять в slave.
А вторым потоком бегать по всем таблицам и смотреть есть ли различия между строками....
В таком случае, количество записей будет более менее актуальное, а вот если был update.... То несколько дней придется подождать...пока больше ничего в голову не лезет...
...
Рейтинг: 0 / 0
FireBird vs PostgreSQL
    #39288166
volfram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fankhm,

а, понял) спасибо)
Да, так, наверное, лучше всего)
...
Рейтинг: 0 / 0
FireBird vs PostgreSQL
    #39288169
fankhm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
volframfankhm,

Да, я тоже подумал, про техническую таблицу :-)
Пока единственное, что я думаю, это хранить последний ID записи (благо в каждой он есть и уникален), ночью пробегаться по всем таблицам, где id больше моего и эти записи добавлять в slave.
А вторым потоком бегать по всем таблицам и смотреть есть ли различия между строками....
В таком случае, количество записей будет более менее актуальное, а вот если был update.... То несколько дней придется подождать...пока больше ничего в голову не лезет...

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

например для таблицы Т1 будет триггер
Код: plsql
1.
2.
3.
4.
insert into SyncTab
(TabName, RecID, XDate)
values
('T1', New.RecID, current_timestamp)



всё.
...
Рейтинг: 0 / 0
FireBird vs PostgreSQL
    #39288173
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fankhm,

Проще все лить в одну таблицу:

insert into (.... , TableName, Operation,MODIFIED_ID, .....)
values (....., 'MYTABLE', 'UPDATE',NEW.ID,.....);

Тогда легко можно разбросать изменения по целевым таблицам. Насколько много таких изменений кстати?
...
Рейтинг: 0 / 0
FireBird vs PostgreSQL
    #39288177
volfram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster,

Ежедневно создается около 500 записей.
Обновляется сколько я не знаю, но мне кажется, не так много...
Всего 800+ таблиц :-)
...
Рейтинг: 0 / 0
FireBird vs PostgreSQL
    #39288179
fankhm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster,

это уже "вариации на тему". мы же не знаем исходную структуру и что должно быть в конечном итоге :)
а так - базовый вариант, на который можно накрутить всё что надо
...
Рейтинг: 0 / 0
FireBird vs PostgreSQL
    #39288182
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но вопросы - а сколько данных, какая интенсивность вставки-обновления на мастер-базе, насколько оперативно нужно реплицировать? А то ведь случай бывает разный. если например поток данных льется рекой, триггер может подтормозить. иной раз может целесообразно мастер-базу приостановить, бэкапнуть, запустить снова, а уже восстановленное из бэкапа целиком влить в реплику. С полной заменой всего.
...
Рейтинг: 0 / 0
FireBird vs PostgreSQL
    #39288183
fankhm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
volframDarkMaster,

Ежедневно создается около 500 записей.
Обновляется сколько я не знаю, но мне кажется, не так много...
Всего 800+ таблиц :-)

не забудь проверять на ТЕСТОВОЙ базе :)
...
Рейтинг: 0 / 0
FireBird vs PostgreSQL
    #39288185
fankhm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vladimir BaskakovНо вопросы - а сколько данных, какая интенсивность вставки-обновления на мастер-базе, насколько оперативно нужно реплицировать? А то ведь случай бывает разный. если например поток данных льется рекой, триггер может подтормозить. иной раз может целесообразно мастер-базу приостановить, бэкапнуть, запустить снова, а уже восстановленное из бэкапа целиком влить в реплику. С полной заменой всего.

тоже вариант
...
Рейтинг: 0 / 0
FireBird vs PostgreSQL
    #39288186
volfram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TRIGGER MY_TRIGGER FOR T1
ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0
BEGIN
 
  insert into SyncTab
  (TabName, RecID, XDate)
  values
  ('T1', New.RecID, current_timestamp)
 
END



Так?
Лучше AFTER так как могло не произойти, например, обновление...
Если разбивать по операциям, то создавать на каждую операцию свой триггер?
...
Рейтинг: 0 / 0
FireBird vs PostgreSQL
    #39288190
fankhm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
volfram
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TRIGGER MY_TRIGGER FOR T1
ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0
BEGIN
 
  insert into SyncTab
  (TabName, RecID, XDate)
  values
  ('T1', New.RecID, current_timestamp)
 
END



Так?
Лучше AFTER так как могло не произойти, например, обновление...
Если разбивать по операциям, то создавать на каждую операцию свой триггер?

эээ... я для примера указал New.RecID
смотри по своей структуре какие там в таблицах имена ключей
...
Рейтинг: 0 / 0
FireBird vs PostgreSQL
    #39288194
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Взять готовый репликатор всё же было бы проще...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireBird vs PostgreSQL
    #39288210
volfram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vladimir Baskakov,

Данных не так много...около 100 человек, в рабочий день, вносят данные...новых записей порядка 500...Плюс обновляют..
Ночью база, практически, не используется. Как и в выходные.
...
Рейтинг: 0 / 0
FireBird vs PostgreSQL
    #39288211
volfram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

А как взять готовый реплекатор?
Прошу прощения, за, возможно, глупый вопрос.
Просто, я программист, и с firebird'ом особо не сталкиваюсь, так, добавить, удалить, изменить....
...
Рейтинг: 0 / 0
FireBird vs PostgreSQL
    #39288215
volfram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

всмысле не как, а где :-)
...
Рейтинг: 0 / 0
FireBird vs PostgreSQL
    #39288217
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
volframА как взять готовый реплекатор?
так
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FireBird vs PostgreSQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]