为什么我更青睐PostgreSQL而不是MariaDB
译者注:作者将PostgreSQL与MariaDB和MySQL启动对比,在数据类型处置,数据结构和NULL处置三方面表现出PostgreSQL的优势,同时协助开发者更好地选用适宜自己的数据库。
以下为译文:
多年来,MySQL和PostgreSQL是相互竞争的数据库,但这些数据库是针对不同的用户。在我看来PostgreSQL服务于专业用户,而MySQL在Web开发人员中很受欢迎。但是,在Oracle接手MySQL之后,我觉得MySQL的明星色调曾经有点褪色了。
自从MariaDB推出以来,我团体觉得这项技术还没有真正成功,但用户照旧会经常使用MySQL/MariaDB,并且很有兴味地将PostgreSQL与这些技术启动比拟。许多人对“PostgreSQLis justbetter”(PostgreSQL更胜一筹)这样的话示意不赞同。这样的争执往往是不理智的,但PostgreSQL社区确实能够做得更好。所以应该提出一些想法,为什么经常使用PostgreSQL比MySQL/MariaDB更适宜。
这篇文章的目标是罗列一些例子,来说明在技术层面上为什么你或许更应该经常使用PostgreSQL。但要留意:这个帖子只是说明一些“最好的”特点,并不是一个完整的列表,但是,这些应该足以让人们做出决策。
PostgreSQL与MySQL / MariaDB:数据类型处置
在这里看到的是PostgreSQL失误,由于试图放入表中的数据并不合乎列的数据类型,而MySQL /MariaDB则会轻轻地更改你的数据。是的,MySQL/MariaDB确实收回了正告,但过了一段期间后,表中的数据就不是最后的数据了。
为什么这很关键?假定你中了一百万的彩票,但你最终只获取9999.99,只由于数据变动极少,所以可怜的是基本没有人留意到。你会怄气吗?我会的。在这个例子中,PostgreSQL所显示的操作是正确的,要素有很多:
阅历总结:PostgreSQL十分注重数据结构。
PostgreSQL vs MySQL / MariaDB:审慎看待现有数据
再强调一遍,MySQL /MariaDB是会更改你的数据的。请留意,拔出到表中的原始值为1234.5678,但如今获取9.99。所以你会开局关注纤细的差异了吗?假设这是你的银行账户?你会在乎吗?假设这个数据库只是为了坚持运转而不处置疑问——那么你还会继续置信它吗,兴许是时刻须要找到一个替代品了。假设你的生存依赖于数据,你会接受一张数据表悄无声响的扭转吗?兴许我太激进了,所以我不会接受。
PostgreSQL到达了我团体对数据库的希冀。它会报出失误,并通知咱们数据是不能被更改的,由于数据是须要被包全的。假设你想要更改表中的数据(以防新规定被违犯),你必定明白地通知PostgreSQL你想要什么:
在这种状况下,咱们会告知PostgreSQL如何启动处置数据。PostgreSQL并没有很默认(也不像MySQL /MariaDB这样的失败),它不会去尝试做一些幽默的事件——它只是做你想做的事件,以及做一些对你的数据无好处的事件。
PostgreSQL与MySQL / MariaDB:NULL处置很关键
你还记得“id”列上有一个非空解放吗?MySQL /MariaDB并不关心这个,只是将值设为0。但是,0和NULL相对不是一回事。NULL的意思是“未定义”或“咱们不知道的值”。这其实很有情理:假设你不知道你口袋里有价格,那也不象征着你的口袋是空的。假设你不知道你喝了多少啤酒,这也并不象征着你的血液里有“零”酒精——你实践上或许刚刚从椅子上摔上去。
PostgreSQL细心辨别了0、空字符串和NULL。这些都是不一样的,PostgreSQL总是会注重你的解放条件。
选用数据库
我在PostgreSQL和MySQL/MariaDB之间的选用是毫无不懂的,关于我团体来说,MySQL不会是我的选用。但是,这是一个自在的环球,人们可以自己做选择,宿愿你们能做出理智的选择。