数据库设计文档
概述
本文档详细描述了井云服务中心后端系统的数据库设计,包括表结构说明、关键索引、数据增长预期、数据保留与清理策略以及迁移策略。
数据库架构
数据库选型
- 数据库类型:PostgreSQL 17.5
- 字符集:UTF8
- 时区:Asia/Shanghai
- 连接池:最大 200 连接,最小 10 连接
- 备份策略:每日全量备份,增量备份每小时
数据库分片策略
- 当前阶段:单数据库实例
- 未来规划:按租户 ID 进行水平分片
- 分片键:tenant_id
- 分片数量:预留 16 个分片
核心数据模型
用户服务数据模型
用户表 (users)
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
phone VARCHAR(20) UNIQUE NOT NULL,
nickname VARCHAR(100),
avatar VARCHAR(500),
email VARCHAR(100),
status INTEGER DEFAULT 1, -- 1:正常 2:禁用 3:删除
tenant_id BIGINT,
inviter_id BIGINT,
openid VARCHAR(100),
unionid VARCHAR(100),
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
CONSTRAINT users_phone_check CHECK (phone ~ '^[0-9]{11}$'),
CONSTRAINT users_email_check CHECK (email ~ '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$' OR email IS NULL)
);
-- 索引
CREATE INDEX idx_users_phone ON users(phone);
CREATE INDEX idx_users_tenant_id ON users(tenant_id);
CREATE INDEX idx_users_inviter_id ON users(inviter_id);
CREATE INDEX idx_users_openid ON users(openid);
CREATE INDEX idx_users_unionid ON users(unionid);
CREATE INDEX idx_users_status ON users(status);
CREATE INDEX idx_users_created_at ON users(created_at);