热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RDBMSvs.NoSQL合作还是竞争

欢迎转载,转载请注明出处,徽沪一郎。由于近期手头的工作和数据库的选型相关,纠结于是否使用一款NoSQL数据库来替换已有的MySQL数据库。在这个过程中随着学习研究的深入,对于二者的

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

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

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

RDBMS vs. 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的技术发展。


推荐阅读
  • 《Spark核心技术与高级应用》——1.2节Spark的重要扩展
    本节书摘来自华章社区《Spark核心技术与高级应用》一书中的第1章,第1.2节Spark的重要扩展,作者于俊向海代其锋马海平,更多章节内容可以访问云栖社区“华章社区”公众号查看1. ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • Hadoop源码解析1Hadoop工程包架构解析
    1 Hadoop中各工程包依赖简述   Google的核心竞争技术是它的计算平台。Google的大牛们用了下面5篇文章,介绍了它们的计算设施。   GoogleCluster:ht ... [详细]
  • 概述本章主要写当慢查询文件很大的时候怎样在线生成一个新的慢查询文件。测试环境:mysql5.6.2 ... [详细]
  • 【转】腾讯分析系统架构解析
    TA(TencentAnalytics,腾讯分析)是一款面向第三方站长的免费网站分析系统,在数据稳定性、及时性方面广受站长好评,其秒级的实时数据更新频率也获得业界的认可。本文将从实 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  • 数据分析的组成部分及其商业价值
    本文介绍了数据分析的组成部分,包括数据采集、数据挖掘和数据可视化,并强调了数据挖掘的商业价值和数据可视化的重要性。数据分析是通过挖掘数据中的规律来指导业务的过程,而数据可视化则可以直观地呈现数据分析的结果。 ... [详细]
  • http头_http头部注入
    1、http头部注入分析1、原理 ... [详细]
  • mysql自动打开文件_让docker中的mysql启动时自动执行sql文件
    本文提要本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动My ... [详细]
  • 数据挖掘研讨课结束了,这门课的考核方法是每个同学根据班里面同学的课堂表现打分,然后老师再取截断平均值作为最后的分数。于是我就想,能否用p ... [详细]
author-avatar
mobiledu2502875483
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有