2010-12-09 113 views
32

我忙着將一些MySQL特定的代碼移植到Postgresql中,以便在Heroku中使用它。想知道Heroku爲什麼會在PostgreSQL上使用MySQL嗎?性能,架構等?爲什麼Heroku使用Postgresql?

UPDATE:從Heroku的blog post

在Heroku的,我們相信的PostgreSQL提供的 強大的功能,數據完整性,速度,標準的符合性,以及任何SQL數據庫的 開放源代碼的最佳組合在這個星球上。

+1

其中一個強大的功能可能是PostgreSQL的PostGIS擴展,提供了非常強大的空間功能。我們將它用作輔助DBMS,並將MongoDB作爲我們的主鍵值存儲。 – wulfgarpro 2012-12-07 04:24:26

回答

25

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

+1

感謝您的鏈接。我認爲,儘管大多數初創公司都選擇使用PostgreSQL,但這並不是真的。我在一家使用MySQL(和cassandra和mnesia)的初創公司工作。許多大玩家(如雅虎和亞馬遜)也使用MySQL。 – markquezada 2010-12-09 03:03:57

+0

是的,這是不正確的。即使在早期,Facebook和Twitter也使用MySQL。 – 2010-12-09 03:07:01

5

那麼,Postgres的性能通常對於複雜查詢更好,就像ORM生成的類型一樣。另外,postgres往往更「堅實」。這是ancedotal,但我管理的postgres服務器一直比mysql更麻煩,它喜歡偶爾隨機崩潰,偶爾會損壞表格。

+0

我聽說過(有趣的是)postgres也更加堅固。我想知道他們的決定依據的是什麼。 – markquezada 2010-12-09 02:51:45

+3

是的,這正是我所說的:堅實。整個系統,包括文檔,只是對實體工程的反應,而MySQL總是更「呃,這對網絡來說足夠好」。 – 2010-12-09 02:54:05

6

一般來說,我覺得pgsql的適合於24/7操作比MySQL更好。而且,它的腳氣似乎更少。我認爲如果你更熟悉這個或那個,那麼這比其他任何事情更可能影響你的決定。

0

不違背上述任何意見,但如果由於某種原因,你真的想要或需要堅持使用MySQL的,我最近發現的Heroku現在提供一個免費的MySQL插件,叫做ClearDB:

https://addons.heroku.com/cleardb

沒有使用它,所以我不能擔保。 Heroku聲稱免費版本的正常運行時間爲99.95%(相對於任何付費版本聲明的100%正常運行時間),並且免費版本宣稱「生產就緒」。他們聲稱ClearDB是「本地的,未經修改的MySQL」。

0

我正在將我的客戶端的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的工作原理,當我無法對列重新排序時,我的生活變得更加困難。