本文侧重于大数据下的NoSQL数据库特点,在介绍NoSQL数据库之前,需要简单介绍下数据库种类的发展史,有因有果的逻辑才能被大家所认可嘛。

计算机刚刚兴起的年代,是没有专门存储数据的库的,基本上所有的数据信息都是以文件的形式存取,也就是无库,所以当时计算机也是比较冷的行业,毕竟刚刚起步嘛,没有系统的标准来规范这些业务标准。后来渐渐有了层次状数据库、网状数据库,但这些数据库还是不能被大规模的商业化,只有极个别有实力的公司可能会采用这种数据库方式存储企业内部的相关信息,而且维护起来相当麻烦,归根结底还是标准的问题,比如对数据库读写的标准等等,这些标准就不一一细说,造成了很大的企业成本开销。基于标准这一缘故,直到上世纪80年代,关系型数据库统一了规范,很快发展成了主流的数据库存储模式。数据库的具体发展可参考此网址:http://www.cbdio.com/BigData/2016-02/24/content_4651751.htm

关系型数据库具有的优势直到现在也是无可替代的,例如关系型数据库擅长小量数据的读写存储、擅长复杂的SQL操作、支持事务机制等等,所以到现在出现了很多的关系型数据库,比如MySQL、SQL Server、Oracle、DB2、SyBase、Informix、PostgreSQL以及Access数据等等,各有优缺点。

但是到了大数据时代,人们更多的数据和物联网加入的数据已经超出了关系数据库的承载范围。刚开始解决大数据时代的高并发的访问请求一般都是采用的集群同步数据的方式处理,什么意思呢?就是将数据库分成了很多的小库,每个数据库的数据内容是不变的,都是保存了源数据库的数据副本,通过同步或者异步方式保证数据的一致性,每个库设定特定的读写方式,比如数据库a负责查询,数据库b负责增加等等以此类推,将业务在物理层面上进行了分离,但是这种方式依旧存在一定的负载压力的问题,企业公司的数据在不断的扩增中,后面就采用分库分表的方式解决,对读写负载进行分离,但是这种实现依旧存在不足,有如下几点:

1.底层的集群创建相当的复杂;

2.数据库一般采用的异步方式复制数据,当主库压力较大时会带来较大的延迟,使得主备切换可能会丢失一部分更新的数据,这种情况就需要人工介入恢复,代价高昂;

3.扩容问题,当需要增加集群时,一般会对整个集群重新分区,对数据重新划分,比较复杂,容易出错;

4.数据动态迁移的问题。意思就是在配置集群之前,很多企业不能预测后面的集群分布情况,可能会导致有的库负载重有的反而轻,在运营的过程中可能会对集群进行修改,这个过程也是人工介入,对每个节点进行重新分配。

过度阶段的人们根据经验总结发展出了NoSQL(Not Only SQL)数据库。NoSQL数据库是大数据下数据库的统一简称,和关系型数据库一样,只是一个象征性意义的词汇,本身并不是数据库,英文解释为“Not Only SQL”(不仅仅是SQL),意思就是在SQL上衍生出来的,相当于SQL的补充,但为了做区别故称为NoSQL数据库。NoSQL数据可以大致分为4种类型:列族数据库(BigTable、HBase、Cassandra、Amazon SimpleDB、HadoopDB等等)、键值数据库(Redis、SimpleDB、Scalaris、Memcached等等)、文档数据库(MongoDB、CouchDB、Perservere、Terrastore、RavenDB等等)、图数据库(Neo4J、InfoGrid、OrientDB、GraphDB)。

但现在很多大企业在运营时,并不是仅仅只使用一种数据库,而是多种数据库一起混合协调,将整个系统达到最优,也因此产生了NewSQL数据库,其实就是混合型数据库架构的统一叫法,它是为了将关键业务和非关键业务进行一统管理。关系型数据库、NoSQL和NewSQL数据库的大致关系如下图(注:OldSQL是指传统的关系型数据库):

好了说了这么多,一张图便可以将目前市场主流的数据库类型的关系表达清楚,如图:

总结:关系型数据库和NoSQL数据库各有优缺点,彼此之间无法取代。在应用场景上,关系型数据库适用于电信、银行等关键性业务系统,保证强事务一致性,而NoSQL数据库适用于互联网企业、传统企业等的非关键性业务(例如数据分析)。

数据库种类发展史和大数据下的数据库(NoSQL)相关推荐

  1. 从曾经的一家独大到现在的群雄逐鹿,大数据时代的数据库圈为啥如此之乱?

    前言 最近家里事情比较多,逃了很久的更.终于找到了点时间继续写一写,好不容易坚持下来的写东西的习惯可不能半途而废了. 上一篇文章吐槽了下技术快速发展对技术人员带来的各种深远影响,但是主要是从总体上来说 ...

  2. 【合集】云栖大会珍贵技术资料:20+覆盖容器技术、智能工业、大数据、开源数据库等(下)...

    2019独角兽企业重金招聘Python工程师标准>>> 云栖社区从几百位讲师中精挑细选了若干精华,其中涵盖了智能物流.大数据.开源数据库.智能工业.容器技术以及智能应用实践等. 作为 ...

  3. 大数据下机械智能诊断的机遇与挑战,阅读文献系列(一)

    阅读文献系列一 论文题目:大数据下机械智能诊断的机遇与挑战 1.大数据时代下的故障诊断的挑战: 2.机械大数据的特性: 3.应该怎么做: 4.现有工作: 5.故障诊断三方面研究: 5.1 信号获取 5 ...

  4. 云计算&大数据 “下一幕”智能变革之力

    2019独角兽企业重金招聘Python工程师标准>>> 2016年的互联网科技领域,云计算.大数据.人工智能成为最热词汇.阿里云"为了无法估算的价值"将中国的计算 ...

  5. 【阿里云产品公测】大数据下精确快速搜索OpenSearch

    2019独角兽企业重金招聘Python工程师标准>>> [阿里云产品公测]大数据下精确快速搜索OpenSearch 作者:阿里云用户小柒2012 相信做过一两个项目的人都会遇到上级要 ...

  6. 大数据下的BI新特性

    大数据下的BI新特性 大数据BI的新需求包括大量化(多个大数据集并行分析).多样化(结构化.半结构化.非结构化).快速化(Velocity)和价值(易用性).而计算分层(流计算.块计算.全局计算).快 ...

  7. DBA观点分享:大数据对传统数据库的影响

    文章讲的是 DBA观点分享:大数据对传统数据库的影响, 大数据趋势在2012年开始变得明显,Hadoop.NoSQL等技术的兴起,令传统数据库稳固的江山开始动摇."以不变应万变"不 ...

  8. 大数据的分布式数据库相关知识

    现如今,大数据的发展得到了越来越多人的关注,当然,很多企业也开始关注大数据,通过大数据可以从数据中挖掘出有价值的数据,从而找出隐藏的商机,而大数据的分布式数据库是一个十分重要的内容.我们在这篇文章中就 ...

  9. 【云周刊】第135期:云栖大会珍贵技术资料:20+覆盖容器技术、智能工业、大数据、开源数据库

    摘要: 云栖大会珍贵技术资料合集:覆盖容器技术.智能工业.大数据.开源数据库等,阿里公开内部超大规模分布式机器学习平台,机器学习能为你的业务做什么?有些事情你肯定猜不到!...更多精彩技术资讯,尽在云 ...

最新文章

  1. 命令行创建React项目
  2. Cocos2dx小技巧 单例
  3. [Android]使用Kotlin开发Android(二)
  4. 用 Python 读写 Excel 表格,就是这么的简单粗暴且乏味
  5. 【最详细的分析】1061 Dating (20 分)
  6. 内蒙古计算机专修学院单招,内蒙古电子信息职业技术学院单招多少分能上?
  7. iOS手势操作简介(五)
  8. @ControllerAdvice全局异常处理不起作用原因及解决办法
  9. centos7 ifconfig命令找不到_在vbox中创建Centos7服务器集群(1)-- Linux服务器安装
  10. nodepad++通过正则表达式,删除带有特殊字符的某一行
  11. 面向对象的三大特性和五大原则
  12. 天勤数据结构代码——树基本操作
  13. 利用公式求sinx近似值(x:弧度)
  14. 作业中关于H5中动画的实现——animation
  15. Scrapy第三(②)篇:创建scrapy项目
  16. 前端练习——弹窗、判断语句 (星座测试)
  17. This beta version of Typora is expired,please download and install a newe..解决方案
  18. 百度文库的wenku前边加wap就能复制,优酷播放页youku后加xia就能直接下载视频
  19. 二级应用计算机 单选题,湖南计算机二级考试计算机应用单选题.doc
  20. 百度指数-批量查询器。收费!!!?还是自己来吧。

热门文章

  1. Linux命令基础操作字典
  2. 迷宫最短路径问题(数据结构4.4.3 拓展)
  3. 【用例设计】接口用例设计
  4. linux系统怎么设置为中午_Linux修改系统时间与时区
  5. linux c++ 文件修改时间,linux下C获取系统时间的方法
  6. http post 415错误
  7. Windows 下PowerShell 美化之旅(极其简单)
  8. java ip 获取了两个_用Java获取本地的多个IP地址
  9. 解决 ArchLinux 下中文 Chinese 不能输入 couldnt input 的问题
  10. 清除node_modules 缓存