SQL和NoSQL該怎么選?
其實(shí)如果是Single Machine, 一般NoSQL處理QPS水平更強(qiáng)
但是通過多臺(tái)機(jī)器的Sharding,SQL和NOSQL其實(shí)差不多。
所以主要看數(shù)據(jù)相關(guān)性。
如果沒什么關(guān)聯(lián)的,Data非常不relational (require no join or few joins),這時(shí)用SQL 就有點(diǎn)浪費(fèi),可能會(huì)有不必要的overhead。【比如說我們查找一個(gè)東西還要去join, 聯(lián)合多個(gè)表的查找是最慢的】
如果關(guān)聯(lián)性高:
這時(shí)用CF NoSQL可能要處理大量的de-normalization,雖然disk便宜,但duplicated data太多的話可能也會(huì)爆容量。而且update時(shí)要處理de-norm data間consistency的問題。
e.g. 一個(gè)data可能屬于(row_key_A, column_key_A)同時(shí)也屬于(row_key_B, column_key_B),這樣更新這data時(shí)就要同時(shí)更新這兩個(gè)row。感覺這種情況選用SQL會(huì)較佳。
NOSQL有一些可能會(huì)不支持ACID,但是SQL是支持的, 可以各種commit, Rollback等等。所以SQL keep一大堆的commited versions/ migrations, 以便rollback。

深度分析幾款NOSQL的好帖
http://www.cnblogs.com/vajoy/p/5471308.html
