【问题标题】:New app -- does PostgreSQL offer benefits over MySQL for my use case?新应用程序——对于我的用例,PostgreSQL 是否提供优于 MySQL 的优势?
【发布时间】:2012-03-06 17:18:39
【问题描述】:

在过去的 7 年里,我使用了很多 MySQL,我的经验通常是,“忽略存储过程并将任何类型的逻辑放入数据库中。将业务逻辑保留在代码中,并将数据库保留为哑数据存储。”

我正在构建一个新项目,目前使用 Python + Flask + MySQL。 MySQL 数据库主要处理读取。有一个主表——要在 Web 应用程序上显示的项目列表。在最初创建它们之后,我从未改变过该表中的行。这个要显示的项目列表每天通过一个抓取客户端数据馈送的 cron 脚本更新一次。

在这种情况下,PostgreSQL 会比 MySQL 提供一些好处吗? (大量读取,写入限制为每天一批)

我目前正在使用 ClearDB for MySQL 将它托管在 Heroku 上,如果这有什么不同的话。

【问题讨论】:

  • 当我必须使用 MySQL 时,我总是感到“受限”,因为 MySQL 对我施加的所有 SQL 限制。但是您的项目听起来好像没有利用现代 DBMS 可以为您提供的任何优势,因此您使用什么可能并不重要。

标签: mysql postgresql heroku


【解决方案1】:

使用 PostgreSQL 优于 MySQL 有很多优点,使用 MySQL 优于 PostgreSQL 也有很多优点。您选择哪一个完全取决于您要实现的目标以及您对项目的要求。

在您的情况下,如果数据库只是一个“哑数据存储”,那么 MySQL 与 PostgreSQL 的行为方式根本不应该有任何区别。 “坚持你所知道的”有很多话要说,所以如果你更熟悉 MySQL 而不是 PostgreSQL……请使用 MySQL。

此外,使用适当的数据库抽象层也不是一个坏主意,这样如果您将来需要更改数据库平台,就不必重写所有数据库代码。

【讨论】:

  • 我想我只是对何时想使用 PostgreSQL 而不是 MySQL 感到困惑。我一直认为将逻辑、代码和完整性限制(例如外键检查)放入 DBMS 是不好的做法。至少这是我学到的——如果您知道所有业务逻辑都在代码中而不是在代码和数据库之间拆分,那么检查代码中的这些约束通常更容易,并且更容易维护。我参与过的任何决定使用数据库完整性约束、存储过程等的项目都很快变质了。
  • @ashgromnies,业务逻辑的位置是一个无法在评论中充分讨论的话题。但是,我有义务说您对它的假设是错误的——人们普遍认为数据库应该尽可能智能。问题是大多数开发人员不知道如何正确处理这一点,也不知道在哪里划清数据逻辑和 UI 逻辑之间的界限。我强烈建议你在这方面做更多的研究,而不是采取一揽子的方法来完全避免完整性限制和 SPROC。例如,stackoverflow.com/questions/119540。
【解决方案2】:

我通常使用 MySQL,我最怀念 PostreSQL 的一件事是 window functions 的强大和简单。当然,我知道仅选择一个 DBMS 是不够的 :) 但您可以在 link 或 other link 中阅读更多相关信息,并更详细地分析哪个 DBMS 更适合您的问题。

【讨论】:

    【解决方案3】:

    您的应用设计非常适合 MySQL。如果您担心可能的扩展问题,我建议您使用 NoSQL 解决方案而不是 PostgreSQL。并不是说 PostgreSQL 有什么问题(远非如此!),但对于您的用例,高速分布式数据存储将是一个不错的选择,并且大多数 NoSQL 解决方案比尝试设置更容易设置和开始工作一个 DBMS 集群。

    【讨论】:

      【解决方案4】:

      “在过去的七年里,我经常使用 MySQL”

      这就是你的答案。如果没有令人信服的理由,请不要切换。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-13
        • 1970-01-01
        • 2012-04-20
        • 2011-03-27
        相关资源
        最近更新 更多