对于一个新的个人项目,你会如何选择数据库(MariaDB/MySQL/PostgreSQL)?

203 天前
 CoronaZero

请将讨论范围限定于 MariaDB/MySQL/PostgreSQL 这三者之间,并假设此项目对数据库有一定的性能要求? 如何权衡性能与成本(包括服务器成本、学习成本与后期维护成本)来进行选择呢?

5621 次点击
所在节点    数据库
77 条回复
jinker
202 天前
sqlite 太容易嵌入了,规模大了再考虑其他的吧。
yy77
202 天前
个人用本地开发的推荐一个 duckdb 。和 sqlite 很类似,多了不少方便的数据导入导出功能。

如果仅限楼主提的这 3 个,还是 mysql 吧。云服务商里 mysql 的实例也是相对最便宜的。出版、电子书等也较多。
rahuahua
202 天前
首先选你最熟悉的,其次是更多人熟悉的
hnliuzesen
202 天前
推荐一个 supabase 的 免费 pg ,省得装了,方便尝试。
其实不用各种数据库的高级特性,SQL 都是兼容的,而且现在有了 LLM ,就算一些 SQL 用了特殊的关键字,也能很方便的翻译到其他数据库。
debuggerx
202 天前
MySQL 简单稳定可能是国内那帮搞互联网的说的最大的谎言。
MySQL 看上去简单,实际上限制和坑比 PG 多不少,简单写个 demo 随便跑跑可能还体验不出区别,稍微做点像样的项目差距就出来了。MySQL 一大堆的文章和中间件方案,很多都是因为自身的缺陷和问题产生的,其实只要耐着性子把文档看完,学习使用 PG 所要花的精力并不会比学 MySQL 然后各种避坑花的精力多,使用过程中也更加自由,不会多写两个 join 就要担心会不会性能下降。
uniquecolesmith
202 天前
不用犹豫,选 PG - 正确的选择,未来你会感谢 v 友
coolcfan
202 天前
性能方面得按照你们自己的业务去做基准测试。

如果测试用的数据是生成的,要小心。我曾经遇到过一个问题,就是在我们的测试数据上,有个查询直接让 MySQL 的 CPU 占用冲到 90%多,但在 PostgreSQL 上就不会(小于 10%)。后来发现是因为我们的测试数据生成的太差,导致这个表上所有跟该查询沾边的索引都无法过滤掉任何行(也就是说查询会返回整个表),在这个情况下,MySQL 的优化器尝试的索引查询就变成了累赘……然而这种极端的数据在真实世界基本不会存在……
iOCZS
202 天前
论性能,据说还是微软的强。但是偶尔 CPU100%
haython
202 天前
看你对数据库的定义是什么,如果定义就是简单存取,推荐 MySQL
CoronaZero
202 天前
@iOCZS #28
是的,微软的技术力倒是没的说,但是免费版本似乎有核心数限制和单表大小限制?
对于个人项目来说感觉确实好贵
x86
202 天前
mysql 吧,先建立起来再说性能
PS:有些人建个 blog 个位数 ip 就考虑主机性能线路各种优化,/??/
horizon
202 天前
PostgreSQL
Mithril
202 天前
最近几年的趋势就是,当你不知道选什么的时候,就选 Postgres 。除非你有特定理由,要换 MySQL 或者其他的什么东西,不然直接无脑 pg 。

当然个人项目肯定优先 SQLite 。而且当你想拿出去打包卖拷贝的时候,MySQL 那 License 也是麻烦。
0o0O0o0O0o
202 天前
PostgreSQL
Mithril
202 天前
@CoronaZero 4 核心,单库 10GB 。
一般来说当你的个人项目超过这个数据量的时候,你也应该考虑付费了。
gimp
202 天前
PostgreSQL
Philippa
202 天前
简单实用 mysql 和 postgres 没区别,起个 k8s/k3s 环境(几分钟)然后安装任意一个数据库都是几分钟内解决了。这么一弄,sqlite 的便利性对比起来其实没啥优势。另外 mysql 和 postgres 有网络连接,比 sqlite 复制文件方便多了。如果真的上线,postgres 和 mysql 配置好直接用,sqlite 还得迁移回 mysql 和 postgres ,这些细细碎碎的杂活反倒比较花时间。

综合来说选 postgres 。
CoronaZero
202 天前
@Mithril #35
这倒是没错,不过上次看到别人一个项目把图片 Excel 表格 word 文档等等等等都直接用 MySQL 存储二进制...
感觉这样的话似乎很容易就会突破单库大小限制.(当然我肯定不会这么用数据库就是了)
Mithril
202 天前
@CoronaZero 确实是有这种做法,优点就是你当你需要存文件的时候,不需要关心数据库记录和文件存储是否能对的上,是否需要做 hash 验证。同时只要能 commit ,那你这文件就算存上了。

但缺点也很明显,就是数据库文件本身会变得非常的大。但多数允许你把文件存进来的数据库,你存一堆文件也不会影响性能。

只要能搞定备份,那你直接把文件也存进去还是很方便的。
yekern
202 天前
个人项目 首先服务器资源就没有那么多, PG 比 MYSQL 资源占用要少,尤其是 MYSQL8.0 以后 是内存大户 ,而且两个使用起来也没啥太大差别 不管是 Docker 还是源安装也都很简单, 建议 PG

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1036566

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX