Citus简介
citus 是一个 PostgreSQL 插件。通过它,可以实现分布式 PostgreSQL安装和部署
本章我们将讨论 citus 的部署。分布式表
本章将通过一个讨论话题的示例来演示 citus 分布式表的设置coordinator节点的灾难处理
本章讨论 coordinator 的灾难处理。
分布式表
- 57969
- 2022-09-19 13:17:03
数据表
表名 | 说明 |
---|---|
users | 用户信息 |
discussions | 讨论的话题 |
普通SQL
CREATE TABLE users (
id bigserial PRIMARY KEY,
email VARCHAR(255) NOT NULL,
nickname VARCHAR(50) NOT NULL,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
is_del BOOLEAN NOT NULL DEFAULT FALSE
);
CREATE TABLE discussions(
id bigserial NOT NULL,
user_id bigint NOT NULL REFERENCES users (id),
parent_id bigint NOT NULL DEFAULT 0,
subject VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
is_del BOOLEAN NOT NULL DEFAULT FALSE,
PRIMARY KEY(user_id,id)
);
注意,由于 citus 分布式要求,discussions
的主键是 (user_id,id)
分布式规则
本例中,我们选用 users.id
字段作为分布式规则。
分布式 users
表
SELECT create_distributed_table('users', 'id');
分布式 discussions
表
SELECT create_distributed_table('discussions', 'user_id');
特别注意!discussions
使用的是 user_id
作为分布式规则,而不是 id
。