适用于Web应用程序的MySQL与PostgreSQL
我正在使用Python(Django)开发Web应用程序,并且想知道在进行生产部署时,MySQL还是PostgreSQL更合适。
乔尔(Joel)在一个播客中说,他在使用MySQL时遇到了一些问题,并且数据不一致。
我想知道有人是否有这样的问题。此外,在性能方面可以轻松调整的内容吗?
解决方案
回答
好吧,我认为我们不应该在过去的开发(构建,暂存,生产)中使用任何其他数据库品牌,因为这会再次困扰我们。
据我了解,PostgreSQL是一种更"正确"的数据库实现,而mySQl的正确性较差(合规性较差),但速度更快。
因此,如果我们几乎要编写CRUD应用程序,那我们就要走mySQL了。如果我们需要数据库中的某些功能(如果不确定,则不需要),则可能需要研究postgreSQL。
回答
致将来的读者请注意:以下文本的最后编辑时间为2008年8月。截止本次编辑将近5年前。软件的版本可能会迅速变化,因此,在根据以下建议选择DBMS之前,请进行一些研究以查看其是否仍然正确。
更好的?
Web主机通常提供MySQL。
PostgreSQL是更成熟的产品。
此讨论旨在解决"更好"问题
显然,根据此网页,当并发访问级别低且读取数多于写入数时,MySQL速度很快。另一方面,随着负载和写入/读取比的增加,它的可伸缩性较低。 PostgreSQL在低并发级别时相对较慢,但是在增加负载级别时可以很好地扩展,同时在并发访问之间提供足够的隔离度,以避免在高写入/读取比率下的速度降低。它继续链接到许多性能比较,因为这些因素对条件非常敏感。
因此,如果决定因素是"哪个更快?"然后答案是"这取决于。如果真的很重要,请针对这两个应用程序进行测试。"而且,如果我们真的很在乎,我们会得到两个DBA(一个专门研究每个数据库),并让他们从数据库中调出废话,然后选择。好的DBA多么昂贵,这令人惊讶。他们值得每一分。
当它重要时。
它可能不会,所以只要选择我们喜欢的声音中的任何一个数据库,然后进行选择即可;可以使用更多的RAM和CPU,更合适的数据库设计以及巧妙的存储过程技巧等来获得更好的性能,而对于random-website-X而言,这比烦恼MySQL或者PostgreSQL的选择更便宜,更容易,以及从昂贵的DBA进行专业调优。
乔尔还在那个播客中说,评论会再次被他咬住,因为人们会说MySQL是一堆废话乔尔无法获得"数"行的返回。轶事的复数形式不是数据。他说:
MySQL is the only database I've ever programmed against in my career that has had data integrity problems, where you do queries and you get nonsense answers back, that are incorrect.
他还说:
It's just an anecdote. And that's one of the things that frustrates me, actually, about blogging or just the Internet in general. [...] There's just a weird tendency to make anecdotes into truths and I actually as a blogger I'm starting to feel a little bit guilty about this
回答
如果我们正在编写一个可能在不同服务器上大量分发的应用程序,则由于可移植性,MySQL在PostgreSQL上具有很大的分量。 PostgreSQL在不理想的Web主机上很难找到,尽管有一些。在大多数方面,PostgreSQL比MySQL慢,特别是在最终进行微调时。总而言之,我想给PostgreSQL一个短时间的机会,那样我们就不会完全避免它,然后做出判断。
回答
我没有使用过Django,但是我同时使用了MySQL和PostgreSQL。如果我们仅将数据库用作Django的后端,则没关系,因为它将抽象出大多数差异。 PostgreSQL更具可扩展性(随着数据大小/客户端数量的增加,它没有像MySQL那样快撞墙)。
如果我们使用的是新系统,那么真正的区别就来了。然后,我建议使用PostgreSQL,因为它具有许多功能,这些功能使数据库层更具可定制性,因此我们可以将其微调到可能具有的任何要求。
回答
谢谢你。我已经将Django与MySQL配合使用,这很好。在所需功能上选择数据库。很难比较MySQL和Postgres。最好将Postgress与SQl Server进行比较。
回答
尽管有些过时了,但值得阅读MySQL Gotchas页面。据我所知,这里列出的许多项目仍然是真实的。
我使用PostgreSQL。
回答
MySQL是一个关系数据库管理系统,而PostgreSQL是一个对象关系数据库管理系统。 PostgreSQL非常适合C ++或者Java开发人员,因为它使我们可以更好地控制查询的编写方式。 ORDBMS还为我们提供了对象和用户定义类型。 SQL查询本身比MySQL更接近ISO标准。
我们需要ORDBMS还是RDBMS?那会更好地回答问题。
回答
@WolfmanDragon
PostgreSQL对对象有微小的支持,但是从本质上来说,它是一个关系数据库。从其关于页面:
PostgreSQL is a powerful, open source relational database system.
回答
有人说MySQL简单而快速。
快速如果我们使用默认的MyIsam存储引擎,则速度很快。它具有接近零的严重数据库功能,但速度很快。如果我很讽刺,我会说平面文件上的grep也很快。有趣的是,离MyIsam存储数据的距离并不远。因此,不要期望那里有任何关系数据库功能。甚至没有引用完整性约束。
简单现在让我们说我们想要真实数据库功能的相当一部分。诸如完整性约束,触发器,事务隔离,功能索引之类的东西可能吗?因此,显然,我们必须让MyIsam引擎离开,并从其他3种主要存储引擎之一中进行选择。谁是由不同的供应商开发的,每个供应商都有特定的配置/行为。
查看存储引擎的概述,如果我们不头痛,我同意从角度来看MySql很简单。
基于这些事实,我将让我们对那些说MySql既快速又简单的人有所了解。
如果我们想扩大规模,节省时间,寻找更少的怪异错误,拥有更多简单的应用程序代码,花费更多时间优化业务,不与数据库打架,那么选择的开源解决方案就是Postgresql。
回答
我都广泛使用。我对特定项目的选择归结为:
- 许可-我们要分发应用吗(IANAL)
- 现有基础架构和知识库
- 我们必须有任何特殊的调味料。
通过特殊的调味料,我喜欢:
- 轻松/廉价的复制= MySQL
- 巨大的数据集问题和小结果= PostgreSQL。使用语言扩展,并具有非常有效的数据操作。 (PL / Python,PL / TCL,PL / Perl等)
- 与R统计库的接口= debian / ubuntu中可用的PostgreSQL PL / R
回答
几个月后才开始鸣叫。
这两个数据库的地理能力非常非常不同。 PostgreSQL具有卓越的PostGIS扩展。相比之下,MySQL的地理功能几乎为零。
如果Web服务具有位置组件,请选择PostgreSQL。