白话大数据 | 从红楼梦看NoSQL数据库

Posted 爆炸吧知识

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了白话大数据 | 从红楼梦看NoSQL数据库相关的知识,希望对你有一定的参考价值。

好吧,相信大家通过我上一篇关于Hadoop的文章,也都大概知道Hadoop是个什么鬼了 (白话大数据|Hadoop究竟是什么鬼)。那么小编这次就给大家挖一挖著名的大数据核心技术之一:NoSQL数据库吧!  

就像衣服要放进衣柜一样,数据就要放进数据库,数据库是管理数据的工具,人类对数据的管理真可谓是历史悠久~ 从古人用竹子记录到如今存入电脑,这些都是对数据的管理,在电视剧《琅琊榜》中,就展现了古人精密的数据分类储存系统。
白话大数据 | 从红楼梦看NoSQL数据库

但是小编认为,在数据库诞生以前,数据的管理都还处于较为低级的阶段,直到数据库系统的出现。
数据库的诞生
数据库其实也挺年轻的,也就60多岁吧。初生的事物总是有较快的发展,从最原始的数据库诞生到早期数据库系统的建立,不过短短十年而已。早期的数据库系统以IBM公司开发的IMS层次性数据库最为著名 (下图够不够有层次啊~ 感觉眼泪都要出来了)
白话大数据 | 从红楼梦看NoSQL数据库
该数据系统结构简单但不能准确反映数据之间的关系,实际操作起来又很复杂,因而这个数据库系统最终消逝在历史长流之中,小编就不对其多讲了。
当今使用最多数据库——关系型数据库
关系型数据库组起源于IBM的研究院E.F.Codd提出的关系模型的概念,这也成为了关系型数据库的基础。关系模型由关系和关系模式组成,关系模式是型,关系是它的值。其实所谓关系模型其实就是一张表!

个例子:
白话大数据 | 从红楼梦看NoSQL数据库
红楼梦里的人物关系如果用数据库来存储的话,是这样的:
白话大数据 | 从红楼梦看NoSQL数据库
简单地说关系型数据库就是能做好多好多张表 (配偶表、父子(女)表、母子(女)表......),把表放在一起构成一个数据库。

再配合简单易懂的操作语句(SQL),用于对数据的查找、添加、删除和改动,这些就构成了关系型数据库~ 关系型数据库总体说来,操作简单,理论基础非常扎实。
查询:贾政的配偶是谁?
数据库回答:王夫人

贾政生完探春以后又生了宝玉怎么办?
数据库回答:添加一行呗
上面那一堆表示新手建的。老手会这样建立表格:
白话大数据 | 从红楼梦看NoSQL数据库
是不是更加清楚了?
虽然关系型数据库很好用,但它一切都是建立在关系之上的。如果关系变多了,比如除了上述父亲、母亲等等属性外,还需要增加一条大女儿的属性,那么程序猿哥哥就会觉得你好讨厌呀,为什么不早点说啦。。。
表都建好了,牵一发而动千钧
又或者除了存储这些文字描述外,你还要存一张贾政的照片,以及修过图的照片......
程序猿哥哥说:咱做不了,洗洗睡吧
白话大数据 | 从红楼梦看NoSQL数据库
后起之秀——NoSQL数据库
 
NoSQL是泛指非关系型数据库,全名叫Not Only SQL(不仅仅是SQL),所以说NoSQL是一场数据库的革命性运动,旨在打破关系型数据库统治的格局,解决关系型数据库所解决不了的问题。
1.NoSQL是一类数据库的统称,不同的NoSQL是为了解决不同问题而开发的。著名的NoSQL数据库有MongDB, HBase。其中Facebook是HBase的最大 用户。
 2.NoSQL有一个共同的特点,就是能 储存海量的数据,当然还是用我们熟知的分布式的思想。
(戳这里回忆什么是分布式)
NoSQL没有复杂的关系模式,表示可以拆分的,关系型数据库是无法拆分的,因为拆分会破坏关系模式。
3.在数据如此之多的今天,我们都把数据存进表中,那么查询效率太低了。像红楼梦里面人物数量是比较少的,实际数据库中上亿条数据,查起来太慢啦。
于是有些NoSQL(例如HBase等)为这种问题想出的方法就是KV 储存
4. 对数据的储存类型没有要求,什么都能往里面塞,这也是NoSQL可以储存图像等复杂文件的原因。其中有专业图储存的Neo4J,文档储存比较占优势的MongoDB,其他的还有Cassandra等。

知道这段你们又不想看了,还是举个栗子吧,依旧以上面红楼梦为例
白话大数据 | 从红楼梦看NoSQL数据库

这张表是我们原先的存储模式,这里面的种种问题刚才也讲了。那么NoSQL是怎么解决的呢?

HBase中存储是key-value存储。Key的组成包括了rowkey+属性列名+数据写入时间戳,也就是上图的黄色+蓝色+数据写入时间戳。Value则是中间对应的白色框的值。

例如贾赦的信息,是这样一条一条存好的......

白话大数据 | 从红楼梦看NoSQL数据库

(实际写入时间戳不仅仅是7月21日,而是会精确到毫秒)

然后开始存贾政的....
白话大数据 | 从红楼梦看NoSQL数据库
存完了以后发现,哎呀,原来贾政还有女儿啊.....如果再关系型数据库里,就很麻烦,但是在HBase中,太简单啦,直接加一条进去就好啦。
不管你有几个女儿,几个儿子,想生就生,想加就加
给宝玉再生个弟弟妹妹把!!
白话大数据 | 从红楼梦看NoSQL数据库
又过了一天发现,哎呀,贾政生了那么多子女,怎么会只有40岁呢?再去检查看看,噢,原来是45岁啦。程序猿哥哥拍着胸脯说,这好办,就交给我吧!!
刷刷刷,一条带有新的时间戳的记录就这样加进去了。下次查询贾政年龄的时候,系统只会读取最近插入的那条记录,也就是45岁。
白话大数据 | 从红楼梦看NoSQL数据库
在大数据中,所有的数据是这样一条一条存储在Hbase数据库中哒!
但是
开源HBase中,只能对Key这一列进行查找,也就是只能以“贾政”或者“贾赦”进行查询。如果想以“贾代善”为关键词进行查询,那就会需要很长时间。
环环:贾政他爹是谁?
HBase:贾代善

环环:贾代善是谁的父亲?
HBase:让我查一下
........
........
........
........
........
环环:查到了吗?
HBase:正在为您查询,请稍等
........
........
........
........
环环:到底有没有查到啊?
HBase:正在为您查询,请稍等

另外,因为数据库采用了KV存储,为了充分利用大数据技术,程序猿哥哥不仅要适应新的存储方式,还需要把旧的数据库转变使用方式,这是一项非常非常非常非常非常浩大的工程。
白话大数据 | 从红楼梦看NoSQL数据库
星环的程序猿小哥们发挥了聪明的才智,他们做了几件事情,分分钟把广大程序猿从水深火热中解救出来

1. 利用星环Hyperbase,程序猿哥哥完全可以按照传统数据库方式进行代码编写,Hyperbase提供JDBC/ODBC接口,支持SQL直接操作。 对于非常急需大数据存储技术的程序猿哥哥,犹如40度的天气下送来了一台中央空调。
白话大数据 | 从红楼梦看NoSQL数据库
2. 无论是从key,还是从属性列,都可以快速查询。
环环:贾政他爹是谁?
HyperBase:贾代善

环环:贾代善是谁的父亲?
HyperBase:贾赦、贾政
白话大数据 | 从红楼梦看NoSQL数据库

今天的故事讲完了,咱们下期见咯~~



(此处开始播放毛阿敏《掌声响起来》......)





回复关键字,获取更多资讯




简介 | 产品 |  技术  | 案例集 | 评测  培训 
投资 |  新手上路 | Holodesk | TED视频
金融 | 电力 | 视频监控 | 运营商 | 交通
税务 | 电商 | 医疗  | 快递








以上是关于白话大数据 | 从红楼梦看NoSQL数据库的主要内容,如果未能解决你的问题,请参考以下文章

架构师必知必会常见的NoSQL数据库种类以及使用场景

SQL or NoSQL?从存储的架构演进看数据库选型

SQL or NoSQL? 从存储的架构演进看数据库选型

从MySQL和MongoDB的对比,看SQL与NoSQL的较量

小白学数据:一文看懂NoSQL数据库

MySQL 数据库服务