为什么Heroku使用Postgresql?
我忙着将一些MySQL特定的代码移植到Postgresql中,以便在Heroku中使用它。想知道Heroku为什么会在PostgreSQL上使用MySQL吗?性能,架构等?为什么Heroku使用Postgresql?
UPDATE:从Heroku的blog post:
在Heroku的,我们相信的PostgreSQL提供的 强大的功能,数据完整性,速度,标准的符合性,以及任何SQL数据库的 开放源代码的最佳组合在这个星球上。
Postgres比many ways中的mysql要好。您可以阅读这些关于从MySQL迁移rails应用程序到postgres的文章。虽然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
感谢您的链接。我认为,尽管大多数初创公司都选择使用PostgreSQL,但这并不是真的。我在一家使用MySQL(和cassandra和mnesia)的初创公司工作。许多大玩家(如雅虎和亚马逊)也使用MySQL。 – markquezada 2010-12-09 03:03:57
是的,这是不正确的。即使在早期,Facebook和Twitter也使用MySQL。 – 2010-12-09 03:07:01
那么,Postgres的性能通常对于复杂查询更好,就像ORM生成的类型一样。另外,postgres往往更“坚实”。这是ancedotal,但我管理的postgres服务器一直比mysql更麻烦,它喜欢偶尔随机崩溃,偶尔会损坏表格。
我听说过(有趣的是)postgres也更加坚固。我想知道他们的决定依据的是什么。 – markquezada 2010-12-09 02:51:45
是的,这正是我所说的:坚实。整个系统,包括文档,只是对实体工程的反应,而MySQL总是更“呃,这对网络来说足够好”。 – 2010-12-09 02:54:05
一般来说,我觉得pgsql的适合于24/7操作比MySQL更好。而且,它的脚气似乎更少。我认为如果你更熟悉这个或那个,那么这比其他任何事情更可能影响你的决定。
不违背上述任何意见,但如果由于某种原因,你真的想要或需要坚持使用MySQL的,我最近发现的Heroku现在提供一个免费的MySQL插件,叫做ClearDB:
https://addons.heroku.com/cleardb
没有使用它,所以我不能担保。 Heroku声称免费版本的正常运行时间为99.95%(相对于任何付费版本声明的100%正常运行时间),并且免费版本宣称“生产就绪”。他们声称ClearDB是“本地的,未经修改的MySQL”。
我正在将我的客户端的Rails应用程序之一从Heroku Postgresql移动到Mysql(ClearDB插件)。 PostgreSQL在很多方面都是更严格和更“正确”的数据库服务,这似乎是Heroku认可它的原因。但是,我发现Rails框架或多或少地平衡了差异,并且大部分Rails应用程序不会变得足够大以至于Mysql的性能问题变得不成问题。
在另一方面,PostgreSQL的(特别是Heroku的发行)有一个启动的应用程序一对夫妇的锐利缺点:
- 价格。为了避免在使用Heroku Postgres时每周“数据库连接丢失”错误,您必须剔除$ 200 /月。在ClearDB上,您将获得100%的正常运行时间(我们还没有机会评估此声明),因为该计划的$ 10 /月计划也提供了1 GB的空间 - 这比我们需要的还要多。
-
列排序。在进行Rails开发时,我每5分钟引用
schema.rb
数据库模式文件,为了保持这个文件的整洁和可读性,我发现能够指定应该添加什么顺序列是至关重要的。MySQL支持指定列的顺序; PostgreSQL不会。在很多情况下,这个特性并不重要,但是由于Rails/ActiveRecord的工作原理,当我无法对列重新排序时,我的生活变得更加困难。
其中一个强大的功能可能是PostgreSQL的PostGIS扩展,提供了非常强大的空间功能。我们将它用作辅助DBMS,并将MongoDB作为我们的主键值存储。 – wulfgarpro 2012-12-07 04:24:26