SuperAPI AI 工具集

nestjs database

数据与分析

查看项目

更新于 10-15 21:09

技能介绍

用途与服务对象 该技能面向 NestJS 后端项目,整理数据库选型、数据访问模式、迁移与生产扩展的工程规范,作为团队在持久层设计与演进时的参考框架。

主要能力 选型框架:按数据结构与访问模式决策。结构化强关联数据(用户、订单、库存、财务)默认 PostgreSQL;非结构化或多态数据(商品目录、CMS 内容、JSON 块)选 MongoDB;时间序列/指标(IoT、股价、日志)选 TimescaleDB。分析型负载可考虑 ClickHouse 或只读副本,高吞吐写入可选 Cassandra/DynamoDB。另给出通用选型对照(通用应用、JSON 文档、搜索引擎、金融事务)。 访问模式:推荐 Repository Pattern 隔离数据库逻辑;TypeORM 使用 @InjectRepository(Entity),Prisma 封装 PrismaService,服务层调用仓库而非裸 SQL。配置方面始终用 TypeOrmModule.forRootAsync 加载 ConfigService 密钥,生产环境设置 synchronize: false。 扩展与生产:读写副本分发负载;连接多路复用用 PgBouncer(Postgres)或 ProxySQL(MySQL)事务模式,不要只依赖 ORM 连接池;绝不在生产开启 synchronize,迁移通过独立 init 容器或 CD 步骤执行,不在主进程启动时自动运行;软删除用 @DeleteDateColumn(TypeORM)或中间件(Prisma)。 多租户与分片:列式(tenant_id + RLS 或严格 Where)、Schema 式、独立数据库式三种方案及其规模与隔离度;横向分片建议超过 10TB 再考虑,优先用分区。 迁移与数据演进:区分 DDL 与 DML 迁移;零停机字段迁移用 Expand-Contract 三步法;种子数据开发用工厂,生产只 Upsert 静态字典。 最佳实践:强制分页、在代码中为高频过滤列建索引、多步写入用 QueryRunner 或 $transaction 保证原子性。

使用方式与限制 文档以规范与决策矩阵形式给出,未提供具体安装命令、版本要求、代码示例或收费标准。实际落地需结合项目数据库版本与 ORM 版本自行验证。