为什么我不推荐一人公司用PostgreSQL

0 阅读4分钟

大家好,我是凌览。

如果本文能给你提供启发或帮助,欢迎动动小手指,一键三连(点赞评论转发),给我一些支持和鼓励谢谢。


你有没有见过这种一人公司?产品还没上线,先搭了一套 PostgreSQL 主从架构,配了个 Redis 缓存,后来又上了个消息队列。问他为什么,他说"万一以后用户多了呢?"

结果呢?六个月过去了,日活用户还没超过 50。

说白了,大多数开发者就是自我感动——技术选得越复杂,越觉得自己牛。但用户只看结果啊。

一人公司嘛,用户还没到那个量级之前,数据库我推荐使用 SQLite 就完事了。

不用装服务、不用配置、不用维护,一个文件搞定全部数据存储。根本不用提前上 PostgreSQL。

SQLite是什么

SQLite 是一个嵌入式关系型数据库

和 MySQL、PostgreSQL 最大的区别是:它不需要装服务、不需要配置、不需要运维——就是一个文件。

SQLiteMySQL / PostgreSQL
启动方式直接读写文件启动服务进程
配置成本需要安装、配置、调优
运维负担几乎为零备份、监控、迁移
适用场景单机、小规模高并发、大规模

你写代码时直接 import { DatabaseSync } from 'node:sqlite' 就能用,数据库就是一个 .db 文件,拷走就能迁移。

一人公司之所以适合用它,是因为大部分产品在早期根本不需要一个跑在服务器上的大型数据库——一个文件搞定的东西,何必上 PG。等用户量真的大了,再迁也不迟。

如何使用 SQLite

image.png Node.js 从 v22.5.0 开始内置了 node:sqlite 模块,不需要 npm install 任何包就能直接操作 SQLite 数据库。

不过这里有个版本问题需要注意,我整理了一个时间线:

版本变化稳定性
v22.5.0node:sqlite 首次引入实验期,需要加 --experimental-sqlite 标志
v22.13.0不再需要实验性标志仍然是实验阶段(Stability 1.1)
v24.15.0升级为 Release Candidate可以上生产了(Stability 1.2)

所以结论很简单:

  • Node 22.x:可以玩,开发和练手完全没问题
  • Node 24.15+:已经是 Release Candidate,可以放心用到正式环境了

具体到代码,就是一个 require 的事:

const { DatabaseSync } = require('node:sqlite')
const db = new DatabaseSync('app.db')
db.exec(`CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)`)
db.prepare('INSERT INTO users (name) VALUES (?)').run('张三')
const users = db.prepare('SELECT * FROM users').all()
db.close()

不需要 npm install sqlite3,不需要 npm install better-sqlite3,Node 自带。

如果你还在用 Node 20.x,那就继续用 better-sqlite3 或者 sqlite3,这两个库也很成熟,等升级到 Node 24+ 再切过来就行。

SQLite的优劣

优点:零配置,一个文件就是数据库,拷走即迁移。Node 自带零依赖,省一台服务器,本地读写比连 PG 快,25 年 ACID 事务稳如老狗。

缺点:并发写会阻塞,高并发扛不住。不支持网络直连,没权限管理,超几十 GB 后降性能,改表不灵活。

但对于一人公司来说,用户量没上来之前,好处远大于坏处

我的线上真实使用

  • 熟人接单,一个个体户性质的小程序用于营业申报小程序加上一个后台

image.png

image.png

  • 给女友开发的供应商管理系统 yiwit.code24.top,女友=需求方,我=产品+前端+后端+测试+UI

我自己就这么干——所有项目 SQLite,用户不多,绰绰有余。稍微调一调,够玩很久。就那点并发量,服务器崩不崩得了都是个问题。

要是直接上 PG,我那 2 核 3G 的服务器怕是还没开张就先撑不住了。

总结

一人公司不需要在数据库上过度设计。SQLite 零配置、Node 自带、一个文件搞定,足够撑到产品验证阶段。等用户真的涨上来了,再考虑迁到 PG 也不迟。

别在技术自嗨上浪费你宝贵的开发时间——先把产品做出来再说。