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,反之亦然。
对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有时不是这么好设计。
九章算法,国内&硅谷一线工程师在线直播授课,已经帮助30000+人成功拿到心仪offer。
NoSQL和SQL怎么选用?的更多相关文章
- MongoDB 1: NoSQL 和 SQL的区别
导读:本篇博客,主要是结合自己在项目中的使用,简单的阐述一下NoSQL和SQL的区别.那么,根据自己的应用,NoSQL这边,选择的是MongoDB(Redis虽然也是,但属于内存存储,这里不予说明). ...
- 为什么使用Nosql:Nosql和SQL的区别
1.概念: SQL(Structured Query Language)数据库,指关系型数据库.主要代表:SQL Server.Oracle.MySQL.PostgreSQL. NoSQL(Not O ...
- 5G时代,为什么NoSQL和SQL存在短板?
01 介绍 当今的通信服务提供商(CSP)需要能够在处理海量复杂的数据的同时,不会下降或者减慢网路响应速度和可靠性.5G时代,设备和用户数量呈指数级增长,这对业务支持服务(BSS)提出了新需求,也成为 ...
- NoSQL还是SQL?这一篇讲清楚
https://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=2653550127&idx=1&sn=93f79e007d757a ...
- [No0000195]NoSQL还是SQL?这一篇讲清楚
随着大数据时代的到来,越来越多的网站.应用系统需要支撑海量数据存储,高并发.高可用.高可扩展性等特性要求. 传统的关系型数据库在应付这些已经显得力不从心,并暴露了许多难以克服的问题. 由此,各种各样的 ...
- 【转】Redis学习---NoSQL和SQL的区别及使用场景
什么是NoSQL NoSQL,指的是非关系型的数据库.NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称,它具有非关系型.分布式.不提供ACID的数 ...
- mySQL、mariaDB、noSQL、SQL server、redis之间是什么关系?
1.首先,从数据库类型上分类,mySQL.mariaDB.SQL server这3种属于关系型数据库. noSQL属于非关系型数据库,被视为数据库革命者. redis成为内存缓存数据库,而前面的两种类 ...
- 关于NoSQL与SQL的区别
简单说来:sql是关系型数据库的结构化查询语言,而nosql,一般代指菲关系型数据库,sql语句就不能用来,不过有些有leisql的查询语言,且nosql数据库没有统一的查询语言. 相关参考文章阅读: ...
- 举例说明:Hadoop vs. NoSql vs. Sql vs. NewSql
转自:http://blog.jobbole.com/86269/ 尽管层次数据库如今在大型机上依然被广泛使用,但关系数据库(RDBMS)(SQL)已经占领了数据库市场,并且表现的相当优异.我们存 ...
随机推荐
- Python3-算法-递归
递归 递归算法是指一般通过函数或子进程来实现,在函数或子进程的内部,直接或间接地调用自己的算法,说白了就是自己调自己 注: 1.在使用递归的时候,必须要有一个递归出口,即一个明确的结束条件,否则就是死 ...
- 在Ubuntu上实现人脸识别登录
安装Howdy: howdy项目地址 sudo add-apt-repository ppa:boltgolt/howdy sudo apt update sudo apt install howdy ...
- Java基础:变量、常量、作用域
JAVA基础:变量.常量.作用域 变量:可以变化的量.Java是强类型语言,每个变量都必须声明类型. Java变量是程序中最基本的存储单元,要素包括变量名,类型和作用域. //类变量 static s ...
- win中mysql安装
mysql安装: https://www.mysql.com/>官网 下载 [DOWNLOADS]----[MySQL Community Server]社区版---5.6---No thank ...
- C++ ACE 动态加载链接库
添加头文件 #include <ace/DLL.h> #include <ace/DLL_Manager.h> 定义函数接口 typedef long (*PFN_TEST)( ...
- HTTPS连接建立过程(单向&双向)
HTTPS连接建立过程(单向&双向) 什么是https SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Securit ...
- Apache DolphinScheduler(海豚调度) - 1.3 系列核心表结构剖析
Apache DolphinScheduler 是一个分布式去中心化,易扩展的可视化 DAG 工作流任务调度系统.致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用. 近日 ...
- 机器分配——线性dp输出路径
题目描述 总公司拥有高效设备M台, 准备分给下属的N个分公司.各分公司若获得这些设备,可以为国家提供一定的盈利.问:如何分配这M台设备才能使国家得到的盈利最大?求出最大盈利值.其中M <= 15 ...
- zabbix + grafana 展示
环境CentOS 7.5 一,grafana 安装. 1,配置yum源 cat > /etc/yum.repos.d/grafana.repo <<EOF [grafana] nam ...
- centos-pip不存在安装失败的解决办法
1.centos下安装pip失败 2.解决办法 需要先安装扩展源EPEL. EPEL(http://fedoraproject.org/wiki/EPEL) 是由 Fedora 社区打造,为 RHEL ...