复制

复制是一种将数据从一个数据库复制到另一个数据库的技术。Supabase使用复制功能来提供一个实时的API。复制在以下方面很有用:

  • 分散 "负载"。例如,如果你的数据库有大量的读数,你可能想把它分成两个数据库。
  • 减少延时。例如,您可能希望伦敦有一个数据库为您的欧洲客户服务,而纽约有一个为美国服务。

复制是通过发布来完成的,这是一种选择将哪些变化发送到其他系统(通常是另一个Postgres数据库)的方法。发布可以在仪表板中管理,也可以用SQL来管理。

在仪表板中管理发布

  1. 进入仪表板中的数据库页面。
  2. 点击侧边栏中的复制
  3. 通过切换插入更新删除来控制哪些数据库事件被发送。
  4. 通过选择和切换每个表来控制哪些表被发送变化。

创建一个发布

这个发布包含对所有表格的修改

1create publication publication_name
2for all tables;

创建发布以侦听各个表

1create publication publication_name
2for table table_one, table_two;

添加表到现有发布中

1alter publication publication_name
2add table table_name;

监听插入操作

1create publication publication_name
2for all tables
3with (publish = 'insert');

监听更新操作

1create publication publication_name
2for all tables
3with (publish = 'update');

监听删除操作

1create publication publication_name
2for all tables
3with (publish = 'delete');

删除一个发布

1drop publication if exists publication_name;

重新创建发布

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

1begin;
2  -- remove the realtime publication
3  drop publication if exists publication_name;
4
5  -- re-create the publication but don't enable it for any tables
6  create publication publication_name;
7commit;