28 March 2010

今早看了一篇文章:

I can't wait for NoSql to die

有感而發所以又來嘴炮一下:

NoSQL 大致分為兩個族系,其一是 document database, 其二是 key-value store。這兩個族系只是因為都不是 relational 所以一起被炒熱。兩者的背景和運用都不同,未來的命運也會不一樣,只差在死的方式而已。

document db 跟 RoR / Django 這一些社群走的比較近,所以命運會和 RoR 那些差不多 ==> 多半只是為了求新求 cool 而已,看了 document db 老半天,我覺得沒什麼迫切的理由要用。所以我猜之後會和 RoR 一樣被邊緣化,被一些更新更夯的東西取代吧。

object db 跟 document db 很像,不是嗎?前者也是有一陣大熱潮啊,但後來就消失了。Object 在 db 端消失了,但在語言端卻更為壯大,到後來甚至為了跟 relational 橋接,而有了 ORM 的全盛時期,Hibernate 是當時的領頭羊。如果 document db 消失了,而 web 服務還是很需要 document 的方式存取資料,也許之後會有 DRM (Document-Relational-Mapping) 的全盛時期。

至於第二個族系 key-value clusters 則是另外一回事了,這些東西都是超大的站在用 (google, amazon, facebook, digg, twitter) 而且已經好幾年了。現在開發者會趁熱找機會摸一摸,不過大概都沒什麼機會發揮。因為大部份的服務 scale 都太小了。等到 NoSQL 熱潮過之後,就會只剩原來的那些大型服務繼續開發和使用,再也無人問津。(這裡的 "大型服務" 是指公司的 "某一服務" 需要 50 台以上的 server)

當然我個人不希望 key-value store 沒人炒就沒下聞了。之前在某篇文章看到:

...NoSQL is an attempt to solve 3 technical problems that every big company faces: Transparent automation of sharding, replication and failover...

我想他說的 NoSQL 是專指 key-value store 這個族系。我本身為一個 server-side-guy,"sharding,replication 和 failover" 這三件事一直不斷的遇到,而且真的很煩很頭痛,如果有什麼解決方法可以讓痛苦少一點,我是不管怎麼樣都要先跳下去試一下不可。Cassandra 是目前看到的一道曙光,希望它能讓痛苦少一點。

至於無痛 scale up 則是一種迷思,最具代表性的就是 vertical scale-up -- 有個傢伙說什麼買個 128GB ram + SSD raid,這樣就搞定 digg scale 的問題。但這能一直加上去嗎?終究只是暫時的止痛劑而已。

成長永遠都是伴隨著痛苦!

最後,對於非網路公司,尤其是那些金融的,他們還是會繼續花大錢買 RDBMS,買爆力的機器,金融業重視 consistency,重視 ACID 是沒錯的,大企業需要強大的RDBMS,oracle / ibm / ms 這些公司就會生給他們,但是,oracle 這些公司特別的將高硬體規格的 db licence 費用調好幾倍貴,反正客戶付得起嘛,不搶白不搶啊!


回響

可以用 Tag <I>、<B>,程式碼請用 <PRE>