SQL和NoSQL该怎么选?
其实如果是Single Machine, 一般NoSQL处理QPS水平更强
但是通过多台机器的Sharding,SQL和NOSQL其实差不多。
所以主要看数据相关性。
如果没什么关联的,Data非常不relational (require no join or few joins),这时用SQL 就有点浪费,可能会有不必要的overhead。【比如说我们查找一个东西还要去join, 联合多个表的查找是最慢的】
如果关联性高:
这时用CF NoSQL可能要处理大量的de-normalization,虽然disk便宜,但duplicated data太多的话可能也会爆容量。而且update时要处理de-norm data间consistency的问题。
e.g. 一个data可能属于(row_key_A, column_key_A)同时也属于(row_key_B, column_key_B),这样更新这data时就要同时更新这两个row。感觉这种情况选用SQL会较佳。
NOSQL有一些可能会不支持ACID,但是SQL是支持的, 可以各种commit, Rollback等等。所以SQL keep一大堆的commited versions/ migrations, 以便rollback。
深度分析几款NOSQL的好帖
http://www.cnblogs.com/vajoy/p/5471308.html