NoSQL和SQL怎么选用?

NoSQL 有分许多种,其中key-value NoSQL (Redis, MemcacheD, etc) 的选用相对对照清楚些,大多是当后端Data storage的cache层来用。这篇主要想讨教Column Family NoSQL (e.g. Cassandra, Hbase) 和SQL之间的选用。其中包罗一些小我私家的明白,若有错误的地方烦请不吝指教!

我明白上,Column Family NoSQL的schema和SQL schema大多能够相互作逻辑转换。也就是说,给一个DB,内里有许多table,table里有许多column,然后跟你说我query的型态会长怎样 (等同告诉你app layer的join要怎么做)。我们多数能把这些DB schema转成CF NoSQL的schema,反之亦然。

 

NoSQL和SQL怎么选用?

 

对single box(单一机械)来说,CF NoSQL能蒙受的qps比SQL要高;不外在multiple machines的情形下,可对SQL去作sharding & replicas来增添其performace和availability/reliability。这边甚至可混用cosistent hashing的架构来作SQL sharding/replication。也就是说:

在多台机械可用的环境下,CF NoSQL 和 SQL 的效能,是可以做到差不多的。

1、Data相关性极低

Data异常不relational (require no join or few joins),这时用SQL 就有点虚耗,可能会有不必要的overhead。

2、Data相关性极高

这时用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会较佳。

3、Data相关性一样平常

去除以上两个极端cases,通常data是介于中心。这时候感受:

用 CF NoSQL 和 SQL是差不多的。

Winform开发中的困境及解决方案,在Winform系统界面中对进展阶段的动态展示和处理

用SQL的话,developer要自己处置sharding/replication。不外相对而言SQL expert的数目远大于Cassandra/Hbase expert, SQL communities也相对成熟许多。

这样看来,面试时若面临到CF NoSQL和SQL的选用时,感受照样选SQL对照平稳点。

 

NoSQL和SQL怎么选用?

 

 

用CF NoSQL感受会被质疑的点对照多,而且其schema有时不是这么好设计。

 

 

 

九章算法,海内&硅谷一线工程师在线直播授课,已经辅助30000+人乐成拿到心仪offer。 

原创文章,作者:28qn新闻网,如若转载,请注明出处:https://www.28qn.com/archives/25253.html