暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

简述 NoSQL 和 SQL 怎么选择?

时代Java 2020-09-01
247
点击上面 时代Java关注我们,
关注新技术,学习新知识!

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

对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是差不多的。

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

这样看来,面试时若面临到CF NoSQL和SQL的选用时,感觉还是选SQL比较安稳点

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

--

知识分享,时代前行!

~~ 时代Java

还有更多好文章……

请查看历史文章和官网,

↓有分享,有收获~

文章转载自时代Java,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论