数据库

数据复制


复制是一种将数据从一个数据库拷贝到另一个数据库的技术。Supabase 使用复制功能来提供实时 API。复制技术适用于以下场景:

  • 分散"负载"。例如,如果您的数据库有大量读取操作,您可能希望将其拆分到两个数据库之间。
  • 降低延迟。例如,您可能希望在伦敦部署一个数据库服务欧洲客户,在纽约部署另一个数据库服务美国客户。

复制通过_发布(publications)_实现,这是一种选择将哪些变更发送到其他系统(通常是另一个Postgres数据库)的方法。发布可以在仪表盘中管理,也可以通过SQL管理。

在仪表盘中管理发布

  1. 进入仪表盘的数据库页面
  2. 在侧边栏点击发布(Publications)
  3. 通过切换插入更新删除来控制发送哪些数据库事件
  4. 通过选择**源(Source)**并切换每个表来控制哪些表广播变更

创建发布

此发布包含所有表的变更。

1
2
create publication publication_namefor all tables;

创建监听特定表的发布

1
2
create publication publication_namefor table table_one, table_two;

向现有发布添加表

1
2
alter publication publication_nameadd table table_name;

监听insert操作

1
2
3
create publication publication_namefor all tableswith (publish = 'insert');

监听update操作

1
2
3
create publication publication_namefor all tableswith (publish = 'update');

监听delete操作

1
2
3
create publication publication_namefor all tableswith (publish = 'delete');

删除发布

1
drop publication if exists publication_name;

重新创建发布

如果需要重新创建发布,建议在事务中执行以确保操作成功。

1
2
3
4
5
6
7
begin; -- 删除现有的实时发布 drop publication if exists publication_name; -- 重新创建发布但不为任何表启用 create publication publication_name;commit;