PostgreSQL中的跨数据库通信

3 投票
3 回答
854 浏览
提问于 2025-04-15 19:17

我正在使用PostgreSQL 8.4。我非常喜欢它的新功能,比如unnest()和array_agg(),这真是让人期待,因为它们充分发挥了数组的动态处理能力!

总之,我正在开发一个网络服务器的后台,这个后台经常使用很长的数组。会有两个连续的处理过程,每个过程都在不同的物理机器上进行。每个过程都是一个轻量级的Python应用程序,它负责管理各自机器上的SQL查询和来自前端的请求。

第一个过程会生成一个数组,并将其缓存在一个SQL表中。每个生成的数组都可以通过一个主键来访问。当这个过程完成后,第一个Python应用会把这个主键发送给第二个Python应用。第二个Python应用在另一台机器上运行,它会用这个主键去获取第一台机器上对应的数组。然后,它会把这个数组发送到自己的数据库中,以生成最终结果。

我发送主键的原因是希望这样能让两个过程运行得更快。但实际上,我更希望能有一种方法,让第二个数据库能够向第一个数据库发送查询,这样可以尽量减少序列化延迟等问题。

任何帮助或建议都非常感谢。

谢谢!

3 个回答

0

我在考虑使用监听/通知的方式,或者用像memcache这样的缓存。你可以把一个键发送到memcache,然后让第二个Python应用从那里取回这个键。其实你也可以用监听/通知的方式来做,比如说发送这个键,并通知你的第二个应用,这个键已经在memcache里等着被取回了。

1

我不太确定我完全理解,但你有没有看过notify/listen? http://www.postgresql.org/docs/8.1/static/sql-listen.html

1

听起来你想要的是来自dblink的功能。这是一个可以让不同的PostgreSQL数据库之间进行交流的工具。PostgreSQL的文档写得很好,里面有很多你需要的例子。

撰写回答