与其他 Postgres 数据库共享 table
share a table to other Postgres DB
我有一个由 Postgres 支持的后端微服务。
我还有一个微服务,用于应用程序中的一项功能,即聊天(消息应用程序),例如类似于 Instagram。
我为聊天功能提供不同服务的原因:
我想为消息 table(以及其他相关 table 进行异步提交,例如对话 table、Conversation_Participants table,等等)。
如果我错了请纠正我,但我不能让一些查询异步,而让其他查询同步。不是这个就是那个。所以我需要一个单独的数据库来实现聊天功能。
** 我可以为每个查询使用类似 SET LOCAL synchronous commit TO OFF:'
的东西,但我假设
那不是很明智,也不安全。
减轻主后端微服务的负载。
问题:
在我的主要微服务中,我有一个名为 user_relations
的 table,我可以在其中判断用户是否阻止了其他用户。
显然,这是 Chat 微服务应该注意的事情,因此用户将无法向阻止他们的人发送消息。
但是聊天微服务如何访问这些数据呢?
我是否应该维护 uer_relations table 的副本,然后随着主要服务的每次更改,我将向聊天服务发送 gRPC 请求以更新其自己的 user_relations table相应地?
或者有更好的解决方案吗?
您可以设置 asynchronous_commit
at multiple levels, including at the user
or transaction
levels (see the doc),因此可以在服务之间共享相同的 table。
如果你真的想要两个数据库,你可以考虑 link 从 DB2 到 DB1,甚至是 DB1 上的另一个服务允许(或不允许)2 个用户之间的通信。
我有一个由 Postgres 支持的后端微服务。 我还有一个微服务,用于应用程序中的一项功能,即聊天(消息应用程序),例如类似于 Instagram。
我为聊天功能提供不同服务的原因:
我想为消息 table(以及其他相关 table 进行异步提交,例如对话 table、Conversation_Participants table,等等)。 如果我错了请纠正我,但我不能让一些查询异步,而让其他查询同步。不是这个就是那个。所以我需要一个单独的数据库来实现聊天功能。
** 我可以为每个查询使用类似
SET LOCAL synchronous commit TO OFF:'
的东西,但我假设 那不是很明智,也不安全。减轻主后端微服务的负载。
问题:
在我的主要微服务中,我有一个名为 user_relations
的 table,我可以在其中判断用户是否阻止了其他用户。
显然,这是 Chat 微服务应该注意的事情,因此用户将无法向阻止他们的人发送消息。
但是聊天微服务如何访问这些数据呢?
我是否应该维护 uer_relations table 的副本,然后随着主要服务的每次更改,我将向聊天服务发送 gRPC 请求以更新其自己的 user_relations table相应地?
或者有更好的解决方案吗?
您可以设置 asynchronous_commit
at multiple levels, including at the user
or transaction
levels (see the doc),因此可以在服务之间共享相同的 table。
如果你真的想要两个数据库,你可以考虑 link 从 DB2 到 DB1,甚至是 DB1 上的另一个服务允许(或不允许)2 个用户之间的通信。