在 PHP 中将 Firebird 与 MySQL 同步

发布于 2024-10-13 01:17:17 字数 443 浏览 2 评论 0原文

我有两个数据库,一个是Firebird数据库,另一个是MySQL数据库。

Firebird数据库是信息变化的主要数据库。我必须将这些更改同步到其他 MySQL 数据库。

我无法控制 Firebird - 我只能从中选择。我无法添加触发器、事件或类似内容。我拥有 MySQL 数据库的所有控制权。

同步必须通过“互联网”完成,因为这两个服务器没有以任何方式连接并且位于不同的位置。

同步必须在同时托管 MySQL 数据库的服务器上用 PHP 完成。

目前,我只是检查每条记录(每 15 分钟),计算行的哈希值,比较两个哈希值,如果它们不匹配,我会更新整行。它有效,但看起来非常错误并且没有以任何方式优化。

还有其他方法可以做到这一点吗?我错过了什么?

谢谢。

I have two databases, one is a Firebird database, other is a MySQL database.

Firebird database is the main one where the information changes. I have to synchronize those changes to the other MySQL database.

I have no control over the Firebird one - I can just SELECT from it. I cannot add triggers, events or similar. I have all the control on the MySQL database.

The synchronization has to be done through 'internet' as these two servers are not connected in any way and are on different locations.

Synchronization has to be done in PHP on the server that also hosts the MySQL database.

Currently I just go through every record (every 15 minutes), calculate the hash of the rows, compare two hashes and if they don't match, I update the whole row. It works but just seems very wrong and not optimized in any way.

Is there any other way to do this? I am missing something?

Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

从﹋此江山别 2024-10-20 01:17:17

我曾经做过同样的事情,我认为没有更好的解决方案。

您只能或多或少地优化您目前拥有的东西。例如:

  • 如果某些表有一列包含“最新更新”信息,则您可以仅选择自上次同步以来更改的那些表。
  • 您可以更改比较机制 - 您可以比较各个列,并在 MySQL 端仅更新已更改的列,而不是比较和更新整行。我相信,如果使用 MyISAM 表,它会加快速度,但如果使用 InnoDB,则可能不会。

I have made the same thing once and I don't think there is a generaly better solution.

You can only more or less optimize what you have so far. For example:

  • If some of the tables have a column with the "latest update" information, you can select only those that were changed since the last sync.
  • You can change the comparison mechanism - instead of comparing and updating whole rows, you can compare individual columns and on the MySQL side update only the changed ones. I believe that it would speed things up in case of MyISAM tables, but probably not if you use InnoDB.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文