well, 訂便當管理系統1,我之前開發的 side project,已經用 postgresql 七、八年了吧。pg 的效能和功能我都非常滿意,所以網站的速度也不錯。
這張是今天 訂便當系統 pg 的讀取圖2 ,藍色的是從 cache 讀出,綠色的是從 disk 讀出。綠色的幾乎都看不到了,cache hit 超高,實在是很爽。
另一張是一整年的圖3 ,這張在去年十月時,有個很大的 drop,這是因為我從 pg 8.4 升到 9.3,整個讀取的量掉下了一大半,這表示 pg 新版的 query 更有效率了。
對了,訂便當系統是用 Java Hibernate,我們知道它會產生很難看的 SQL 的,不過 pg 還是給它吞下去,效能依舊不錯。
postgresql最猛的是,可以用sql查詢json.. 這點mongodb就不太友善。而且每個系統最少都要有一個RDBMS,所以感覺mongodb會被邊緣化。比scale比不上cassandra/hbase,比通用比不上postgresql,mysql。
另外9.3提出的json跟9.4提出的jsonb.. 前者存字串,後者存類似bson。剛好前者應用適合寫,後者適合讀。可以根據情境來選擇適合的存法,這點mongodb也是沒有的。
postgresql唯一我覺得比較可能比不上的是似乎沒有shard的方案? 不過RDBMS本來就不適合shard,不過不知道mysql fabric的shard怎麼做到的,效能不知道如何..
撇開玩笑話
有人可以分享 postgresql shard 或是 replication 的做法嗎?replication 看到要用 pgpool 這種 middle ware 就倒彈了,多了一個 single point of failure。
沒玩過所以效能不知道怎樣,但之前 這篇1 和 JCConf 時這篇2 我覺得介紹 fabric 還算蠻清楚的。Backing Store 部分就好奇還要準備一份給他存就比較...可能不算是 mysql 本身功能?不然理想中也丟給那群 node 去處理,就像 cassandra 一樣。