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

由于近期手头的工作和数据库的选型相关,纠结于是否使用一款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. Girls and Boys(poj 1466)

    题目描述: 给出一系列男女配对意愿信息.求一个集合中的最大人数,满足这个集合中两两的人不能配对. /* 二分图的最大独立集 因为没有给出具体的男生和女生,所以可以将数据扩大一倍,即n个男生,n个女生, ...

  2. CSS选择器以及优先级与匹配原理

    最常用的五类CSS选择器 准确而简洁的运用CSS选择器会达到非常好的效果.我们不必通篇给每一个元素定义类(class)或ID,通过合适的组织,可以用最简单的方法实现同样的效果.在实际工作中,最常用的选 ...

  3. PHP站内搜索:多关键字、加亮显示

    一.SQL语句中的模糊查找        主要通过LIKE(不区分大小写)关键字实现模糊查找.LIKE条件一般用在指定搜索某字段的时候, 通过"%"或者" _" ...

  4. .net winform软件自动更新

    转载自 http://dotnet.chinaitlab.com/DotNetFramework/914178.html 关于.NET windows软件实现自动更新,本人今天写了一个DEMO,供大家 ...

  5. 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情(三)码农网

    12. 安装 Apache Tomcat Tomcat 是由 Apache 设计的用来运行 Java HTTP web 服务器的 servlet 容器.按照下面的方法安装 tomcat,但需要指出的是 ...

  6. 关于Strut2内置Json插件的使用

    配置注意点: 在原有Struts2框架jar包的引入下,需要额外多加一个Json的插件包(struts2-json-plugin-2.3.7.jar) 在struts.xml配置文件中,包需要继承js ...

  7. WebView的写法

    public class MainActivity extends Activity { private WebView wv; @Override protected void onCreate(B ...

  8. SU sugethw命令学习

  9. Xamarin.iOS模拟器调试找不到资源文件

    Xamarin.iOS模拟器调试找不到资源文件 在Visual Studio 2015中,运行Xamarin.iOS项目,出现找不到资源文件的错误.错误信息:System.IO.FileNotFoun ...

  10. Prim POJ 2031 Building a Space Station

    题目传送门 题意:给出n个三维空间的球体,球体是以圆心坐标+半径来表示的,要求在球面上建桥使所有的球联通,求联通所建桥的最小长度. 分析:若两点距离大于两半径和的长度,那么距离就是两点距离 - 半径和 ...