SQL和NoSQL該怎么選挂脑?
其實(shí)如果是Single Machine, 一般NoSQL處理QPS水平更強(qiáng)
但是通過(guò)多臺(tái)機(jī)器的Sharding,SQL和NOSQL其實(shí)差不多。
所以主要看數(shù)據(jù)相關(guān)性。
如果沒(méi)什么關(guān)聯(lián)的就谜,Data非常不relational (require no join or few joins),這時(shí)用SQL 就有點(diǎn)浪費(fèi)里覆,可能會(huì)有不必要的overhead吁伺。【比如說(shuō)我們查找一個(gè)東西還要去join, 聯(lián)合多個(gè)表的查找是最慢的】
如果關(guān)聯(lián)性高:
這時(shí)用CF NoSQL可能要處理大量的de-normalization租谈,雖然disk便宜篮奄,但duplicated data太多的話可能也會(huì)爆容量。而且update時(shí)要處理de-norm data間consistency的問(wèn)題割去。
e.g. 一個(gè)data可能屬于(row_key_A, column_key_A)同時(shí)也屬于(row_key_B, column_key_B)窟却,這樣更新這data時(shí)就要同時(shí)更新這兩個(gè)row。感覺(jué)這種情況選用SQL會(huì)較佳呻逆。
NOSQL有一些可能會(huì)不支持ACID夸赫,但是SQL是支持的, 可以各種commit咖城, Rollback等等茬腿。所以SQL keep一大堆的commited versions/ migrations, 以便rollback呼奢。
深度分析幾款NOSQL的好帖
http://www.cnblogs.com/vajoy/p/5471308.html