欢迎转载,转载请注明出处,徽沪一郎。

由于近期手头的工作和数据库的选型相关,纠结于是否使用一款NoSQL数据库来替换已有的MySQL数据库。在这个过程中随着学习研究的深入,对于二者的异同有了一些初步的认识和想法,将这些想法暂时记录下来,权且作为进一步学习数据库领域知识的开端。

数据库要解决的主要问题

不管是RDBMS还是NoSQL,在大的方面他们都属于数据库这个范畴,这个范畴之内所要面临的一些共同问题有哪些呢。下面的图是一个大致的归纳。

从图中可以看出,一个数据库系统主要解决以下几个问题:

  1. 数据的存储,即要存入哪些数据到系统中,当然在data definition这一块,有schema和no schema两种,说白了就是数据格式和数据关系的定义问题
  2. 完成了data definition,那么接下来自然要发生的事情就是将数据真正的存储到系统之中,即针对数据的各种操作crud(create, read, update and delete)
  3. 数据存储进来之后,需要挖掘数据的意义或者利用已有的数据进行统计分析,data analytic当然也可以说是data retrieval,我个人倾向于data analytic这一说法
  4. 当然数据库系统还有一个非常重要的方面即data control,哪些人可以访问,哪些人不能访问,不同的人看到的内容不仅相同

结构化和非结构化

RDBMS的一大特点就是数据是严格结构化的,存入的数据必须属于预先定义好的某一数据结构,否则就不能存入,而NoSQL则放松了这一要求。

在不同的应用场景中,两者优缺点立显,比如银行系统,要存储的数据格式一般是事先可以预估,其改变的可能比较少,再比如税务之类的。

而在电商和互联网应用中,往往意味着经常进行数据格式的更改,如果采用RDBMS,schema改变带来的开发工作则会非常巨大。

数据的一致性

在数据的一致性方面,RDBMS通过外键约束或者trigger等方式在server侧来保证数据的约束。

从达到数据一致性的时间来看RDBMS是立即一致(immediately consistency)而NoSQL则是最终一致(eventual consistency),举个应用场景,对银行账户的任何修改都必须是即时一致的,约不参容忍不一致的出现。

Scalability

如果说到数据库的动态扩容,则NoSQL明显技胜一筹。

当然MySQL的NDB cluster在动态扩容方面,其能力也还是不错的。

数据分析或数据挖掘工作

从数据分析的层面来看,RDBMS和NoSQL之间的成熟度差距是巨大的。

RDBMS为数据分析提供了一个清晰的标准,那就是SQL。利用SQL有非常明确的标准来进行规范,利用这些规范可以对数据进行各种各样的查询,而且内置了许多函数,如average,sum,count之类,让在进行报表分析时,轻松异常。

NoSQL 中的No有人解释为not only的意思,但何尝又不是No SQL二字的缩写了即there is no sql interface in the database system. 当然像MongoDB是支持Sql like的查询语句的,但NoSQL确实没有一套标准规范对数据的查询和分析。

机会在哪里

正因为NoSQL中没有一个统一进行数据分析的标准,所以现在出现了很多实时数据处理分析的框架,最火的莫过于Spark,且Spark有最强大的hadoop发行厂商Cloudera的强劲支持,大有一统NoSQL数据分析框架之势,未来的发展势头将会异常迅猛。学会使用Spark有可能会是数据分析行业的一个基本的从业要求。

总结

个人以为NoSQL不是以传统RDBMS的终结者身份出现,而是对RDBMS的一种补充来填补RDBMS所不能胜任领域的技术实现。

NoSQL在发展的初期,其实是通过放弃RDBMS的多种约束来达到其两个主要目的,一是数据的海量存储二是数据的动态可扩。至于数据分析则实现手法各异,对实时性的要求不是太高,故MapReduce之类的离线分析能满足其需求。

在相当长的时间内会MySQL还是有饭吃的,当然需要同时花相当的精力来紧跟NoSQL的技术发展。

RDBMS vs. NoSQL 合作还是竞争的更多相关文章

  1. 数据库基础 RDBMS、NoSQL

  2. 关系型数据库管理系统(RDBMS)与非关系型数据库(NoSQL)之间的区别

    简介 关系型数据库管理系统(RDBMS)是建立在关系模型基础上的数据库,主要代表有:Microsoft SQL Server,Oracle,MySQL(开源). 非关系型数据库(NoSQL),主要代表 ...

  3. NoSQL入门概述

    入门概述 1 NoSQL是什么? NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL",泛指非关系型的数据库.随着互联网web2.0网站的兴起,传统的关 ...

  4. NoSQL 简介及什么是AICD

    NoSQL 简介 NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL". 在现代的计算系统上每天网络上都会产生庞大的数据量. 这些数据有很大一部分是由关 ...

  5. 10 things you should know about NoSQL databases

    For a quarter of a century, the relational database (RDBMS) has been the dominant model for database ...

  6. 关于Hadoop结合RDBMS应用的一些思考

    最近一段时间一直在从事和hadoop相关的工作,主要是技术内容学习.安装配置优化以及一些框架结构的设计.在此期间,我对于RDBMS和Hadoop的结合应用有了一些自己的看法,写出来大家共同探讨一下. ...

  7. NoSql数据库简介及Redis学习

    NO-Sql数据库:Not Only不仅仅是SQL 定义:非关系型数据库:NoSQL用于超大规模数据的存储.(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据).这些类型的数据存储不需要固 ...

  8. NoSQL是什么?

    导读 NoSQL(not only sql,不仅仅是SQL),是一项全新的数据库革命性运动,泛指非关系型数据库,对于NoSQL这个新兴的名词,每个人的理解都不同.其实NoSQL一词最早出现于1998年 ...

  9. MongoDB 教程(一):了解 NoSQL

    概述: MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品, ...

随机推荐

  1. Linux命令行下创建纳入版本控制下的新目录

    [root@ok 资料库]# svn mkdir test A test [root@ok 资料库]# svn ci -m "mkdir test" Adding 资料库/test ...

  2. zabbix 二 zabbix agent 客户端

    [root@zabbix_agent src]# cd zabbix-3.0.3 [root@zabbix_agent zabbix-3.0.3]# ls aclocal.m4 bin ChangeL ...

  3. LeetCode之LRU Cache 最近最少使用算法 缓存设计

    设计并实现最近最久未使用(Least Recently Used)缓存. 题目描述: Design and implement a data structure for Least Recently ...

  4. php变量的几种写法

    一.最简单的 $str = 'Hello World!'; 二.来个变种 $str = 'good'; $good = 'test'; $test = 'Hello World!'; echo $$$ ...

  5. aidl 中通过RemoteCallbackList 运用到的回调机制: service回调activity的方法

    说明:我没有写实例代码,直接拿项目中的代码,有点懒了,这里我省略贴出两个aidl文件. TtsService extends Service private final RemoteCallbackL ...

  6. 记VS2013并行编译导致出错的解决过程

    接前一篇,电脑换了新的,系统是64bit的win8系统,先安装了SQLServer2012,再安装VS2010旗舰版,Stop!为什么还是2010?因为2010太经典了,以至于公司的项目还在用它写项目 ...

  7. hdu 1011 树形dp

    题意:是有n个洞组成一棵树,你有m个士兵,你从1号房间开始攻打,每个洞有a个"bugs"和b的价值.你的一个士兵可以打20 个"bugs",为了拿到这个洞的价值 ...

  8. hdu 4640(状压dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4640 思路:f[i][j]表示一个人状态i下走到j的最小花费,dp[i][j]表示i个人在状态j下的最 ...

  9. [MySQL]导入导出

    [MySQL]导入导出 一 导入文本数据 1)mysql->load data infile 数据文件c:/mytable.txt 如下:(每一行为一条记录,记录的字段间用tab隔开,最后一个字 ...

  10. HTML-web storage

    cookie:是一个在服务区和客户端间来回传送文本值的内置机制: 大小受限:一般4KB: 只要涉及cookie,它就会自动在服务器和浏览器之间传送:  //会存在安全问题:多消耗网络宽带: 操作:de ...