数据复制
复制是一种将数据从一个数据库拷贝到另一个数据库的技术。Supabase 使用复制功能来提供实时 API。复制技术适用于以下场景:
- 分散"负载"。例如,如果您的数据库有大量读取操作,您可能希望将其拆分到两个数据库之间。
- 降低延迟。例如,您可能希望在伦敦部署一个数据库服务欧洲客户,在纽约部署另一个数据库服务美国客户。
复制通过_发布(publications)_实现,这是一种选择将哪些变更发送到其他系统(通常是另一个Postgres数据库)的方法。发布可以在仪表盘中管理,也可以通过SQL管理。
在仪表盘中管理发布
- 进入仪表盘的数据库页面
- 在侧边栏点击发布(Publications)
- 通过切换插入、更新和删除来控制发送哪些数据库事件
- 通过选择**源(Source)**并切换每个表来控制哪些表广播变更
创建发布
此发布包含所有表的变更。
12create publication publication_namefor all tables;
创建监听特定表的发布
12create publication publication_namefor table table_one, table_two;
向现有发布添加表
12alter publication publication_nameadd table table_name;
监听insert
操作
123create publication publication_namefor all tableswith (publish = 'insert');
监听update
操作
123create publication publication_namefor all tableswith (publish = 'update');
监听delete
操作
123create publication publication_namefor all tableswith (publish = 'delete');
删除发布
1drop publication if exists publication_name;
重新创建发布
如果需要重新创建发布,建议在事务中执行以确保操作成功。
1234567begin; -- 删除现有的实时发布 drop publication if exists publication_name; -- 重新创建发布但不为任何表启用 create publication publication_name;commit;