Синхронизировать Firebird с MySQL в PHP - PullRequest
1 голос
/ 21 января 2011

У меня есть две базы данных, одна база данных Firebird , другая база данных MySQL .

База данных Firebird является основной, где информация меняется. Я должен синхронизировать эти изменения с другой базой данных MySQL.

У меня нет контроля над Firebird - я могу просто выбрать из него. Я не могу добавить триггеры, события или тому подобное. У меня есть все элементы управления в базе данных MySQL.

Синхронизация должна выполняться через Интернет, поскольку эти два сервера никак не связаны и находятся в разных местах.

Синхронизация должна выполняться в PHP на сервере, на котором также размещена база данных MySQL.

В настоящее время я просто просматриваю каждую запись (каждые 15 минут), вычисляю хэш строк, сравниваю два хеша, и если они не совпадают, я обновляю всю строку. Это работает, но кажется очень неправильным и никак не оптимизированным.

Есть ли другой способ сделать это? Я что-то упустил?

Спасибо.

1 Ответ

1 голос
/ 21 января 2011

Я однажды сделал то же самое, и я не думаю, что есть вообще лучшее решение.

Вы можете только более или менее оптимизировать то, что у вас есть. Например:

  • Если в некоторых таблицах есть столбец с информацией о «последнем обновлении», вы можете выбрать только те, которые были изменены с момента последней синхронизации.
  • Вы можете изменить механизм сравнения - вместо сравнения и обновления целых строк вы можете сравнивать отдельные столбцы, а на стороне MySQL обновлять только измененные. Я считаю, что в случае таблиц MyISAM это ускорилось бы, но, вероятно, нет, если вы используете InnoDB.
...