请将讨论范围限定于 MariaDB/MySQL/PostgreSQL 这三者之间,并假设此项目对数据库有一定的性能要求? 如何权衡性能与成本(包括服务器成本、学习成本与后期维护成本)来进行选择呢?
1
xarthur 242 天前 via iPhone 25
先用 Sqlite ,如 Sqlite 不够用在用 PostgreSQL
|
2
aagaguai 242 天前
我是喜欢 mysql
|
3
timethinker 242 天前 5
既然是个人项目,从严谨程度上来讲可以随意一些,没有必要在这个上面耗费太多的时间,与其在一开始考虑太多,倒不如多学习一下表结构设计相关的知识。
不过当你提到性能相关问题的时候,严谨的来说基准测试才是唯一的答案。如果你没有任何数据库相关的经验,我更推荐 MySQL ,它容易学习,相比 PostgreSQL ,虽然没有那么多复杂特性,但是久经考验,足以应付常见的需求,最重要的是,它使用人群足够多,你能遇到的任何问题,基本上在网上都能找到相关的问答,从维护成本上来看,更多的资料也就意味着更快的解决效率。 |
4
Aiurvia 242 天前 2
SurrealDB
|
5
pandaidea 242 天前 via iPhone
PostgreSQL
|
6
qfdk 242 天前 1
问题是 都是关系型数据库... 那就选个自己熟悉的. 如果都不熟悉,就百度搜一下,看看哪一个讨论的人多就好了
|
7
yidinghe 242 天前 via Android
前面提到 SurrealDB 的请注意了,它不是一个关系数据库。
|
8
shallyy 242 天前 via iPhone
单纯使用建议 MySQL
二次开发产品可以考虑 PG 很多国产数据库都是基于这两种数据库开发的 |
9
cmdOptionKana 242 天前 1
个人项目为什么不用 Sqlite ?
|
10
paranoiagu 242 天前 via Android
pg ,后续换信创方便
|
11
chendy 242 天前
个人项目我选择 MongoDB
因为做不了多大,文档数据库一把梭完全够用 |
12
macaodoll 242 天前 via Android
首选 PostgreSQL
|
13
wssy001 242 天前
首选 mysql 它教程多,学习成本比较低,后期维护也比较方便
数据库性能更多地取决于服务器硬件与你的 SQL 水平,再不济,可以用 Redis 缓解 前提是你个人项目数据量能到 1kw+,但我觉得个人项目不需要考虑数据库性能 |
14
dayeye2006199 242 天前
postgres ,还有功能比这个更多的吗?
你当 noSQL 都能使,向量数据库也行,全文搜索也行 在你变成成功公司前,你甚至只需要这个数据库 |
15
Ackvincent 242 天前
PGSQL YYDS ,
|
16
zhy0216 242 天前 via Android
postgres 拓展好很多
无论之后是玩时序,向量还是分布式都有选择 |
17
daysv 242 天前
sqlite yyds ,啥时候不用了, 那你大概也发家了
|
18
shinession 242 天前
pg +1
|
19
ma836323493 242 天前
sqlite 赞一个, 轻松便捷
|
20
encro 242 天前
PostgreSQL 就挺好的,
装个插件就成了分析型数据库, 还可以物化视图。 |
21
jinker 242 天前
sqlite 太容易嵌入了,规模大了再考虑其他的吧。
|
22
yy77 242 天前
个人用本地开发的推荐一个 duckdb 。和 sqlite 很类似,多了不少方便的数据导入导出功能。
如果仅限楼主提的这 3 个,还是 mysql 吧。云服务商里 mysql 的实例也是相对最便宜的。出版、电子书等也较多。 |
23
rahuahua 242 天前
首先选你最熟悉的,其次是更多人熟悉的
|
24
hnliuzesen 242 天前
推荐一个 supabase 的 免费 pg ,省得装了,方便尝试。
其实不用各种数据库的高级特性,SQL 都是兼容的,而且现在有了 LLM ,就算一些 SQL 用了特殊的关键字,也能很方便的翻译到其他数据库。 |
25
debuggerx 242 天前 2
MySQL 简单稳定可能是国内那帮搞互联网的说的最大的谎言。
MySQL 看上去简单,实际上限制和坑比 PG 多不少,简单写个 demo 随便跑跑可能还体验不出区别,稍微做点像样的项目差距就出来了。MySQL 一大堆的文章和中间件方案,很多都是因为自身的缺陷和问题产生的,其实只要耐着性子把文档看完,学习使用 PG 所要花的精力并不会比学 MySQL 然后各种避坑花的精力多,使用过程中也更加自由,不会多写两个 join 就要担心会不会性能下降。 |
26
uniquecolesmith 242 天前
不用犹豫,选 PG - 正确的选择,未来你会感谢 v 友
|
27
coolcfan 242 天前 1
性能方面得按照你们自己的业务去做基准测试。
如果测试用的数据是生成的,要小心。我曾经遇到过一个问题,就是在我们的测试数据上,有个查询直接让 MySQL 的 CPU 占用冲到 90%多,但在 PostgreSQL 上就不会(小于 10%)。后来发现是因为我们的测试数据生成的太差,导致这个表上所有跟该查询沾边的索引都无法过滤掉任何行(也就是说查询会返回整个表),在这个情况下,MySQL 的优化器尝试的索引查询就变成了累赘……然而这种极端的数据在真实世界基本不会存在…… |
28
iOCZS 242 天前
论性能,据说还是微软的强。但是偶尔 CPU100%
|
29
haython 242 天前
看你对数据库的定义是什么,如果定义就是简单存取,推荐 MySQL
|
30
CoronaZero OP |
31
x86 242 天前
mysql 吧,先建立起来再说性能
PS:有些人建个 blog 个位数 ip 就考虑主机性能线路各种优化,/??/ |
32
horizon 242 天前
PostgreSQL
|
33
Mithril 242 天前
最近几年的趋势就是,当你不知道选什么的时候,就选 Postgres 。除非你有特定理由,要换 MySQL 或者其他的什么东西,不然直接无脑 pg 。
当然个人项目肯定优先 SQLite 。而且当你想拿出去打包卖拷贝的时候,MySQL 那 License 也是麻烦。 |
34
0o0O0o0O0o 242 天前
PostgreSQL
|
35
Mithril 242 天前
@CoronaZero 4 核心,单库 10GB 。
一般来说当你的个人项目超过这个数据量的时候,你也应该考虑付费了。 |
36
gimp 242 天前
PostgreSQL
|
37
Philippa 242 天前 1
简单实用 mysql 和 postgres 没区别,起个 k8s/k3s 环境(几分钟)然后安装任意一个数据库都是几分钟内解决了。这么一弄,sqlite 的便利性对比起来其实没啥优势。另外 mysql 和 postgres 有网络连接,比 sqlite 复制文件方便多了。如果真的上线,postgres 和 mysql 配置好直接用,sqlite 还得迁移回 mysql 和 postgres ,这些细细碎碎的杂活反倒比较花时间。
综合来说选 postgres 。 |
38
CoronaZero OP @Mithril #35
这倒是没错,不过上次看到别人一个项目把图片 Excel 表格 word 文档等等等等都直接用 MySQL 存储二进制... 感觉这样的话似乎很容易就会突破单库大小限制.(当然我肯定不会这么用数据库就是了) |
39
Mithril 242 天前
@CoronaZero 确实是有这种做法,优点就是你当你需要存文件的时候,不需要关心数据库记录和文件存储是否能对的上,是否需要做 hash 验证。同时只要能 commit ,那你这文件就算存上了。
但缺点也很明显,就是数据库文件本身会变得非常的大。但多数允许你把文件存进来的数据库,你存一堆文件也不会影响性能。 只要能搞定备份,那你直接把文件也存进去还是很方便的。 |
40
yekern 242 天前 1
个人项目 首先服务器资源就没有那么多, PG 比 MYSQL 资源占用要少,尤其是 MYSQL8.0 以后 是内存大户 ,而且两个使用起来也没啥太大差别 不管是 Docker 还是源安装也都很简单, 建议 PG
|
41
jeesk 241 天前
可能是我写 java 太多, 这种 数据层喜欢用接口来做,至于 数据源真的无所谓.
|
42
hello2090 241 天前
盈利 10 万以下 MySQL
10 万-1000 万 MariaDB 1000 万以上 PostgreSQL |
43
13240284671 241 天前
mysql
|
45
lujiaxing 241 天前
看你什么类型的项目. 个人项目也分类型, 你得说清楚你是做什么.
一般个人项目的规模你说有性能要求, 能有什么性能要求... 一天能有 100 个访问量么? 如果只是博客或者类似的比较简单简易的产品, MySQL / MariaDB 就足够了. 记得不要把表设计的太复杂. 越简单越好. 最好拿 MySQL 当硬盘版 Redis 用... 如果功能比较复杂, 比如进销存之类的系统, 或者电商, 推荐用 PostgreSQL. 如果你不想稍微复杂点的查询就要上 ES 的话, 就别用 MySQL / MariaDB. |
46
changdy 241 天前
想简单省事..直接用 mysql
毕竟什么样的 sql 都能执行.. 如果你有点追求..有点想法 .. 就用 pg.... 是在想不开 想拯救世界 就用 mariadb. |
47
asuraa 241 天前
个人项目统统 mysql 无他遇到问题各种文档可以快速修复好
|
48
adoal 241 天前
趁着你还是初学者,用 pg ,培养严谨的好习惯,养成技术品位。
|
49
Pierro 241 天前
H2 or Sqlite
|
50
wuwuta170 241 天前
我也是在用 sqlite 但发现更新代码的时候 把数据库都更新了。。
|
51
xiaocaiji111 241 天前
资料多的,烂大街的,用起来比较好
|
52
tyrad 241 天前
sqlite 0 成本迁移
|
53
kakki 241 天前
无脑 PG
|
54
Mogamigawa 241 天前 via Android
建议 sqlite ,就个人网站的那点访问量,sqlite 很轻松,
而且 sqlite 占用内存小,网站不想要了就带着一个 db 文件跑路. https://m.okjike.com/originalPosts/5d08f1c41089930018730223 |
55
forvvvv123 241 天前
sqlite
|
57
unclemcz 241 天前 via Android
个人项目的话首先考虑成本低的,自己搭建的话我会选 sqlite ,云上会选择 mysql ,纯粹是因为比较便宜,至于性能问题,碰到性能瓶颈的时候再考虑,而且大概率是自己的代码质量有问题,如果一个个人项目把主流数据库被用到性能瓶颈,我估计会每天梦中笑醒。
|
58
Mithril 241 天前
@key0323 个人体验。
前段时间在做选型调查的时候发现的。这俩数据库的历史都很长,你要是不限定时间,搜到的东西都非常多,而且大多都是过期的无效内容。 只看最近几年内容的话,问答类的比如 reddit, hn 的 comment 或者 so 上,推荐的比较多的都是 postgres 。包括我前面说的那句“不确定选啥就无脑 pg”也是之前在 reddit 上看的。 但数据库这东西你基本上不会换,比如创业就用 LAMP ,后续大概率也是 MySQL 。而且互联网企业用不着关心 GPL 的问题。但还有大量需要部署在客户那边的系统,这 License 就可能让法务合规找你麻烦。 另外还有个人倾向问题,之前看 hn 的帖子有人也说,他之所以推荐用 mysql ,就是因为 mysql 坑多。他自己有经验积累,知道怎么避坑。这样用的人越多,他就越不会失业。 当然这也只是那个人的理由,也不是每个推荐 MySQL 的都这么想。 总而言之,你可以搜一下最近几年的讨论,和十年前无脑推 MySQL 的差的还是很多的。 |
60
OliverDD 241 天前 via iPhone
就凭它一堆不遵守 sql 标准的怪语法,请避免使用
|
62
qviqvi 241 天前
会哪个用哪个,都不会则 postgre ,毕竟是三者中最受欢迎且性能最好且功能最强大的。其余两个会一个另一个也差不多会了,好像 mariadb 性能稍微好一点
|
63
Mogamigawa 241 天前 via Android
麻烦题主说说最后选了哪款数据库,谢谢
|
64
ericguo 241 天前
PG ,现在( 2024 年)还要考虑其他数据库? PG 通过插件化的体系结构,还有赶上 AI 的向量数据库,前几天 MariaDB 的高级开发人员都跑过来做 PG 的 MySQL 兼容模式了。
|
65
Lixiaobai233 241 天前
我会选 MySQL ,可能也是用惯了
|
66
FightPig 241 天前
用了好多年 pg
|
67
ihciah 241 天前
单机的话 sqlite 就行,通常你用的 sdk 会支持多种数据库实现,所以不够用了再迁移起来也蛮方便。
|
68
ShuWei 241 天前
单一节点项目,够用的情况下,sqlite 方便,优先考虑,其次考虑 pg
|
69
CoronaZero OP @Mogamigawa #63
postgreSQL 吧,感觉这个推荐的人很多? 会提这个问题是因为最近在维护一个用了 MySQL 数据库的项目,版本还挺老,所以就来 V 站提问一下,顺便方便我自己以后的技术方向选择. |
70
CoronaZero OP @ericguo #64 这倒是,不过老项目挺多用 MySQL 的...维护起来的话也要了解一些 MySQL 方面的知识
|
71
nm1st 241 天前
|
73
CoronaZero OP @nightsky #72 .net 的话,是用 EF core 嘛?我这阵子在学习 .net ,感觉是个很强大的平台
|
74
nightsky 240 天前
@CoronaZero #73 EF Core ,Freesql 之类的,基本都是可以无缝切换数据库
|
75
flmn 235 天前
PostgreSQL
|
76
likeman 228 天前 via Android 1
一步到位,直接 pg ,熟悉新特性,并且数据量没达到大数量的千万级,pg 自带的 memory 缓存都够了,不用上 redis
|
77
psyer 228 天前 via Android
跑个题,我司几千万级别的数据都在使用 MySQL😅 查询起来无敌慢,感觉从语句来讲没地方优化了,而且还是单一节点,经常出故障被客户投诉,不知道有的领导🧠怎么想的🤦♂️
|