[碎唸] 如果讓我再來一次,我會選 PostgreSQL。

這幾年都一直混在噗浪上,超級久沒寫部落格了,好不容易有個比較長的想法,就來灌個水一下。

話說去年夏秋交際的時候換了新工作,到了現在這間小公司來寫程式,詳細的就不提了。總而言之,現在這個工作要處理的資料量比在中研院的時候還多,大概每天會有一百萬筆的新資料,每一筆都必須處理最後成為線上分析用的報表。

因為是整個打掉重練的系統,所以一開始主管打算用這幾年很夯的 NodeJS 和 MongoDB 來做。

不過後來因為遇到一些 NodeJS 效能上的問題,發現同樣邏輯的程式碼(單純地從 RabbitMQ 撈資料經過運算後存到 MongoDB 裡),在 Scala 上就算以單執行緒的方式執行,兩者的效能也差了快十倍,在 Scala 可以處理到每秒六七百筆的時候,NodeJS 只能處理到每秒六七十筆,根本不可能處理每天一百多萬筆的資料。

後來測試的結果,似乎和 NodeJS 的 Callback 效能有關,每加一層 Callback 速度就會明顯下降,但實際原因不明。但很不幸的我們的程式必須使用 Callback 的方式讓他是循序執行的,必須保證執行的順序 ...