我正忙于将一些MySQL特定的代码移植到Postgresql以便与Heroku一起使用。只想知道Heroku是否有通过MySQL与Postgresql结合使用的特定原因?性能,架构等?
更新:从heroku blog post:
在Heroku,我们认为PostgreSQL提供了以下方面的最佳组合:强大的功能,数据完整性,速度,标准合规性以及地球上任何SQL数据库的开放源代码。
Postgres在many ways中比mysql好。您可以阅读有关从mysql到postgres迁移rails应用程序的这些文章。虽然mysql比postgres more popular好,但是instagram is using postgres可能是由于these原因。我觉得postgres比mysql更成熟和强大。而mysql更易于使用。
Migrating MySQL to PostgreSQL in Rails « m i n d l e v
Converting Rails application data from MySQL to PostgreSQL
对于数据迁移,一个方便的小脚本:Rake task to transfer a Rails database, say from MySQL to Postgres and back again
将MySQL gotchas的列表长度与postgresql gotchas的列表长度进行比较。 MySQL更有可能使您困惑。
通常来说,我发现pgsql比mysql更适合进行24/7操作。而且,似乎内置的脚枪更少了。我认为,如果您更熟悉彼此之间的决定,那么比其他任何因素都更有可能影响您的决定。
嗯,对于复杂的查询,例如ORM生成的那种查询,Postgres的性能通常更好。另外,postgres往往更“扎实”。这是祖传,但我所管理的postgres服务器一直比mysql麻烦得多,mysql喜欢偶尔偶尔崩溃,偶尔会在崩溃时损坏表。
目前,我正在将客户的Rails应用程序之一从Heroku Postgresql移至Mysql(ClearDB插件)。 PostgreSQL在许多方面都是更严格,更“正确”的数据库服务,这似乎就是Heroku认可它的原因。但是,我发现Rails框架或多或少地解决了差异,并且大多数Rails应用程序的增长都不够大,无法使Mysql的性能问题成为大问题。
另一方面,PostgreSQL(特别是Heroku的产品)对于启动应用程序有两个明显的劣势:
schema.rb
数据库模式文件,并且为了使文件整洁易读,我发现至关重要的是能够指定应该排序的列MySQL支持指定列的顺序。 PostgreSQL没有。在许多情况下,此功能并不重要,但是由于Rails / ActiveRecord的工作方式,当我无法对列进行重新排序时,我的生活变得更加艰难。与上述建议没有矛盾,但是如果出于某些原因您确实想要或需要坚持使用MySQL,我最近注意到Heroku现在提供了一个免费的MySQL插件,名为ClearDB:
https://addons.heroku.com/cleardb
没有用过,所以我不能担保。 Heroku声称免费版本的正常运行时间为99.95%(而任何付费版本的正常运行时间均为100%),并且他们否认免费版本为“生产就绪”。他们声称ClearDB是“本地未修改的MySQL”。