MySQL与PostgreSQL的Web应用程序

时间:2008-08-26 05:05:36

标签: mysql postgresql

我正在使用Python(Django)开发一个Web应用程序,并且想知道在部署生产时MySQL或PostgreSQL是否更适合。

在一个podcast中Joel说他在使用MySQL方面存在一些问题并且数据不一致。

我想知道是否有人有这样的问题。还有可以轻松调整的性能?

11 个答案:

答案 0 :(得分:125)

给未来读者的信息:下面的文字最后一次编辑是在2008年8月。这是近5年前的编辑。软件可以在不同版本之间快速变化,因此在根据以下建议选择DBMS之前,请先进行一些研究,看看它是否仍然准确。


更好?

网络主机更常提供MySQL。

PostgreSQL是一个更成熟的产品。

this discussion addressing your "better" question

显然,根据this web page,当并发访问级别较低时,并且当读取次数多于写入次数时,MySQL会很快。另一方面,它随着负载和写/读比的增加而表现出低可扩展性。 PostgreSQL在低并发级别时相对较慢,但随着负载级别的增加而很好地扩展,同时在并发访问之间提供足够的隔离以避免在高写入/读取比率下的速度减慢。它继续链接到许多性能比较,因为这些事情对条件非常敏感。

因此,如果你的决定因素是“哪个更快?”那么答案是“它取决于。如果它真的很重要,请根据两者测试你的申请。”如果你真的非常关心,你会加入两个DBA(一个专门研究每个数据库的人)并让他们调整数据库中的垃圾,然后选择。令人惊讶的是好的 DBA是多么昂贵;并且他们值得每一分钱

什么时候重要。

它可能没有,所以只需选择你喜欢的数据库,然后选择它;更好的性能可以用更多的内存和CPU来购买,更合适的数据库设计,以及巧妙的存储过程技巧等等 - 所有这些对于随机网站X来说比在选择,MySQL或PostgreSQL更痛苦和更容易,以及来自昂贵的DBA的专家调整。

<小时/> 乔尔还在该播客中说,评论会回来咬他,因为人们会说MySQL是一块废话 - 乔尔无法获得count行。轶事的复数不是数据。 He said

  

MySQL是我职业生涯中唯一一个遇到过数据完整性问题的数据库,你在那里进行查询并得到无意义的回答,这是不正确的。

他还说:

  

这只是一个轶事。实际上,这是令我感到沮丧的事情之一,关于博客或一般的互联网。 [...]只有一种奇怪的倾向,才能将轶事变成真理,而我实际上作为一名博客,我开始对此感到有点内疚

答案 1 :(得分:26)

有人说MySQL简单快捷。

快 - 好吧如果你使用默认的MyIsam存储引擎,它很快。它几乎没有严重的数据库功能,但速度很快。如果我是讽刺的话,我会说平面文件上的grep也很快。有趣的是,它与MyIsam存储数据的方式并不相差甚远。所以不要指望任何关系数据库功能。甚至不参考完整性约束。

简单 - 现在假设你想要一个真实数据库功能的公平子集。一些东西,如完整性约束,触发器,事务隔离,功能索引可能?所以显然你必须让MyIsam引擎离开,并从其他三个主要存储引擎中选择一个。谁是由不同供应商开发的,每个供应商都有特定的配置/行为。

查看an overview of the storage engines,如果您没有头疼,我同意MySql从您的角度来看很简单。

从这些事实来看,我会让你想到那些说MySql快速而简单的人。

如果你想扩展更多,节省时间,寻找更少的奇怪错误,拥有更简单的应用程序代码,花更多时间优化业务,而不是与数据库作斗争,那么选择的开源解决方案是Postgresql。 / p>

答案 2 :(得分:12)

我没有使用过Django,但我使用过MySQL和PostgreSQL。如果你只将你的数据库用作Django的后端,那么这并不重要,因为它将抽象掉大多数差异。 PostgreSQL的可扩展性更高一些(与数据大小/客户端数量增加相比,它不像MySQL那么快。)

如果您正在使用新系统,真正的区别在于。然后我推荐使用PostgreSQL,因为它有更多的功能可以使您的数据库层更加可定制,以便您可以根据您的任何要求对其进行微调。

答案 3 :(得分:12)

几个月后才开始吵闹。

两个数据库的地理能力非常不同。 PostgreSQL具有卓越的PostGIS扩展。相比之下,MySQL的地理功能几乎为零。

如果您的网络服务有位置组件,请选择PostgreSQL。

答案 4 :(得分:6)

虽然它有点过时,但值得阅读MySQL Gotchas页面。据我所知,那里列出的许多物品仍然是真实的。

我使用PostgreSQL。

答案 5 :(得分:6)

我广泛使用。我对特定项目的选择归结为:

  • 许可 - 您打算发布您的应用程序(IANAL)
  • 现有基础设施和知识库
  • 你必须拥有的任何特别酱

通过特殊酱汁我喜欢这样的事情:

  • 简单/廉价复制= MySQL
  • 小结果的巨大数据集问题= PostgreSQL。使用语言扩展,并具有非常有效的数据操作。 (PL / Python,PL / TCL,PL / Perl等)
  • 与R统计库的接口= PostgreSQL PL/R 在debian / ubuntu中提供

答案 6 :(得分:1)

好吧,我认为你不应该在开发过程中使用不同的数据库品牌(构建,升级,生产),因为这会让你感到厌烦。

从我的理解来看,PostgreSQL是一个更“正确”的数据库实现,而mySQl不太正确(不太合规)但更快。

因此,如果您正在编写CRUD应用程序,那么mySQL就是您的选择。如果你需要数据库之外的某些功能(如果你不确定那么你没有)那么你可能想要研究postgreSQL。

答案 7 :(得分:0)

如果您正在编写一个可能在不同服务器上分布很多的应用程序,那么由于可移植性,MySQL对PostgreSQL的影响很大。 PostgreSQL很难在不太令人满意的网络主机上找到,albet有一些。在大多数情况下,PostgreSQL比MySQL慢,特别是在最终进行微调时。总而言之,我会说给PostgreSQL一个短暂的拍摄时间,这样你就不会完全避开它,然后做出判断。

答案 8 :(得分:0)

谢谢。我已经使用Django和MySQL,它很好。选择您需要的功能的数据库。很难比较MySQL和Postgres。最好将Postgress与SQl Server进行比较。

答案 9 :(得分:0)

@WolfmanDragon

PostgreSQL对对象有微小的支持,但它本质上是一个关系数据库。来自about page

  

PostgreSQL是一个功能强大的开源关系型数据库系统。

答案 10 :(得分:-1)

MySQL是relational database management system,而PostgreSQL是object-relational database management system。 PostgreSQL非常适合C ++或Java开发人员,因为它使我们能够更好地控制查询的编写方式。 ORDBMS还为我们提供了对象和用户定义的类型。 SQL查询本身比MySQL更接近ISO标准 您需要ORDBMS还是RDBMS?这将更好地回答你的问题。