nosql起源,nosql介绍

数据挖掘中数据存储的重要性

随着互联网的蓬勃兴起,物联网,云计算,大数据,人工智能在大众视野出现的越来越频繁了。

创新互联建站成都企业网站建设服务,提供网站设计制作、成都网站制作网站开发,网站定制,建网站,网站搭建,网站设计,响应式网站设计,网页设计师打造企业风格网站,提供周到的售前咨询和贴心的售后服务。欢迎咨询做网站需要多少钱:028-86922220

云计算相当于人的大脑,是物联网的神经中枢。云计算是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。

大数据相当于人的大脑从小学到大学记忆和存储的海量知识,这些知识只有通过消化,吸收、再造才能创造出更大的价值。

人工智能打个比喻为一个人吸收了人类大量的知识(数据),不断的深度学习、进化成为一方高人。人工智能离不开大数据,更是基于云计算平台完成深度学习进化。

而物联网是互联网的应用拓展,类似以前的“互联网+”,也就是结合互联网的业务和应用,核心是以用户体验为核心的应用创新。

我们主要讲一下其中的“大数据”。

大数据的定义

在 2001 年左右,Gartner 就大数据提出了如下定义(目前仍是关于大数据的权威解释):大数据指高速 (Velocity) 涌现的大量 (Volume) 的多样化 (Variety) 数据。这一定义表明大数据具有 3V 特性。

简而言之,大数据指越来越庞大、越来越复杂的数据集,特别是来自全新数据源的数据集,其规模之大令传统数据处理软件束手无策,却能帮助我们解决以往非常棘手的业务难题。

大数据的价值和真实性

在过去几年里,大数据的定义又新增加了两个 "V":价值 (Value) 和 真实性 (Veracity)。

首先,数据固然蕴含着价值,但是如果不通过适当方法将其价值挖掘出来,数据就毫无用处。其次,只有真实、可靠的数据才有意义。

如今,大数据已成为一种资本,全球各个大型技术公司无不基于大数据工作原理,在各种大数据用例中通过持续分析数据提高运营效率,促进新产品研发,他们所创造的大部分价值无不来自于他们掌握的数据。

目前,众多前沿技术突破令数据存储和计算成本呈指数级下降。相比过去,企业能够以更低的经济投入更轻松地存储更多数据,而凭借经济、易于访问的海量大数据,您可以轻松做出更准确、更精准的业务决策。

然而,从大数据工作原理角度来讲,大数据价值挖掘是一个完整的探索过程而不仅仅是数据分析,它需要富有洞察力的分析师、业务用户和管理人员在大数据用例中有针对性地提出有效问题、识别数据模式、提出合理假设并准确开展行为预测。

大数据的历史

虽然大数据这个概念是最近才提出的,但大型数据集的起源却可追溯至 1960 - 70 年代。当时数据世界正处于萌芽阶段,全球第一批数据中心和首个关系数据库便是在那个时代出现的。

2005 年左右,人们开始意识到用户在使用 Facebook、YouTube 以及其他在线服务时生成了海量数据。同一年,专为存储和分析大型数据集而开发的开源框架 Hadoop 问世,NoSQL 也在同一时期开始慢慢普及开来。

Hadoop 及后来 Spark 等开源框架的问世对于大数据的发展具有重要意义,正是它们降低了数据存储成本,让大数据更易于使用。在随后几年里,大数据数量进一步呈爆炸式增长。时至今日,全世界的“用户”— 不仅有人,还有机器 — 仍在持续生成海量数据。

随着物联网 (IoT) 的兴起,如今越来越多的设备接入了互联网,它们大量收集客户的使用模式和产品性能数据,而机器学习的出现也进一步加速了数据量的增长。

然而,尽管已经出现了很长一段时间,人们对大数据的利用才刚刚开始。今天,云计算进一步释放了大数据的潜力,通过提供真正的弹性 / 可扩展性,它让开发人员能够轻松启动 Ad Hoc 集群来测试数据子集。

大数据和数据分析的优势:

1.大数据意味着更多信息,可为您提供更全面的洞察。

2.更全面的洞察意味着更高的可靠性,有助于您开发全新解决方案。

其次,大数据还具有大量、高速、多样化、密度低四大特性。

大量性:大数据与传统数据最大的差异在于资料量,资料量远大于传统数据,例如抖音数据流、百度点击流,面对的是海量低密度的数据,大数据的数据量通常高达数十PB。也因为资料量大,无法以传统的方式储存处理,因此衍生出大数据这一新兴科学。

高速性:大数据与传统数据最大的不同点,就是生成速度快。由于网际网路兴起与资讯设备普及,以用户突破20亿人的脸书为例,如果每个用户每天发一条消息,就会有20亿笔资料。每一个人随时随地都可以创造数据,数据生成的速度已非过去可比拟。

多样性:多样化是指可用的数据类型众多,随着大数据的兴起,文本、音频和视频等数据类型不断涌现,它们需要经过额外的预处理操作才能真正提供洞察和支持性元数据。由于形式多元复杂,大数据储存也需要不同于传统数据的储存技术。

密度低:数据价值密度相对较低,随着互联网以及物联网的广泛应用,信息感知无处不在,信息海量,但价值密度较低。以视频为例,一小时的视频,在不间断的监控过程中,可能有用的数据仅仅只有一两秒。

大数据的挑战

1.安全挑战

尽管大数据由于应用范围广泛,已成为各领域的发展趋势,但数据的公布有时会伴随使用者隐私的曝光,比如FaceBook资料外泄、Google+个人外泄风波等因数据外泄而引发隐私问题的事件层出不穷。用户的哪些数据是可以获取、哪些是不允许读取,始终存在侵犯用户隐私的法律风险。

2..技术创新

大数据需要从底层芯片到基础软件再到应用分析软件等信息产业全产业链的支撑,无论是新型计算平台、分布式计算架构,还是大数据处理、分析和呈现方面与国外均存在较大差距,对开源技术和相关生态系统的影响力仍然较弱,总体上难以满足各行各业大数据应用需求。

3.成本过高

运营商需要处理的数据量巨大,基本都是以PB为单位,处理这些数据需要巨大的投入。

4.实时性

具有实时性的数据才有价值,存储的数据数据时间越长,数据的价值就越低。在如今这个快节奏的社会,每一天的市场都瞬息万变,品牌商通过大数据分析用户的需求,如果得到的用户数据太过陈旧,参考这些数据来规划产品的方向,可能会对企业的发展造成毁灭性的打击。

无论哪个行业,想要在当今的形势下取得成功,都必须能够不断地从数据中挖掘业务价值,因此数据的保护离不开存储器,当下市面上用于大数据的存储器主要有固态硬盘,混合硬盘,传统硬盘。

固态硬盘(SSD),由控制单元和存储单元,组成。固态硬盘的接口规格、定义、功能和用途与普通硬盘相同,形状和尺寸也与普通硬盘相同。广泛应用于军事、车辆、工业控制、视频监控、网络监控、网络终端、电力、医疗、航空、导航设备等领域。

优点:读写速度快;震动;低功耗。无噪音;工作温度范围广;缺点:容量小;寿命有限;价格高。

混合硬盘是一种由传统硬盘和闪存模块组成的大容量存储设备。闪存处理存储器中最常写入或恢复的数据。许多公司都在提供不同的技术,他们希望这些技术能在高端系统中流行起来,特别是笔记本电脑和掌上电脑。

与传统硬盘相比,混合硬盘具有许多优势:更快的数据存储和恢复应用程序,如文字处理器;缩短系统启动时间;降低功耗;减少热量产生;延长硬盘寿命;笔记本电脑和笔记本电脑电池寿命;降低噪音水平:

传统硬盘指的是机械硬盘(HDD),电脑最基本的内存,我们常说电脑硬盘C盘,D盘是磁盘分区,属于硬盘。目前普通硬盘的容量有80G、128g、160g、256g、320g、500g、750g、1TB、2TB等,按容量可分为3.5英寸、2.5英寸、1.8英寸、5400rpm/7200rpm/10000rpm等。

通过物联网产生、收集海量的数据存储于云平台,再通过大数据分析,甚至更高形式的人工智能为人类的生产活动,生活所需提供更好的服务,这一切所产生的数据承载者——存储器,在第四次工业革命进化的方向中,存储行业也将是一颗亮眼的星。

大数据时代发展历程是什么?

大数据技术发展史:大数据的前世今生

今天我们常说的大数据技术,其实起源于Google在2004年前后发表的三篇论文,也就是我们经常听到的“三驾马车”,分别是分布式文件系统GFS、大数据分布式计算框架MapReduce和NoSQL数据库系统BigTable。

你知道,搜索引擎主要就做两件事情,一个是网页抓取,一个是索引构建,而在这个过程中,有大量的数据需要存储和计算。这“三驾马车”其实就是用来解决这个问题的,你从介绍中也能看出来,一个文件系统、一个计算框架、一个数据库系统。

现在你听到分布式、大数据之类的词,肯定一点儿也不陌生。但你要知道,在2004年那会儿,整个互联网还处于懵懂时代,Google发布的论文实在是让业界为之一振,大家恍然大悟,原来还可以这么玩。

因为那个时间段,大多数公司的关注点其实还是聚焦在单机上,在思考如何提升单机的性能,寻找更贵更好的服务器。而Google的思路是部署一个大规模的服务器集群,通过分布式的方式将海量数据存储在这个集群上,然后利用集群上的所有机器进行数据计算。 这样,Google其实不需要买很多很贵的服务器,它只要把这些普通的机器组织到一起,就非常厉害了。

当时的天才程序员,也是Lucene开源项目的创始人Doug Cutting正在开发开源搜索引擎Nutch,阅读了Google的论文后,他非常兴奋,紧接着就根据论文原理初步实现了类似GFS和MapReduce的功能。

两年后的2006年,Doug Cutting将这些大数据相关的功能从Nutch中分离了出来,然后启动了一个独立的项目专门开发维护大数据技术,这就是后来赫赫有名的Hadoop,主要包括Hadoop分布式文件系统HDFS和大数据计算引擎MapReduce。

当我们回顾软件开发的历史,包括我们自己开发的软件,你会发现,有的软件在开发出来以后无人问津或者寥寥数人使用,这样的软件其实在所有开发出来的软件中占大多数。而有的软件则可能会开创一个行业,每年创造数百亿美元的价值,创造百万计的就业岗位,这些软件曾经是Windows、Linux、Java,而现在这个名单要加上Hadoop的名字。

如果有时间,你可以简单浏览下Hadoop的代码,这个纯用Java编写的软件其实并没有什么高深的技术难点,使用的也都是一些最基础的编程技巧,也没有什么出奇之处,但是它却给社会带来巨大的影响,甚至带动一场深刻的科技革命,推动了人工智能的发展与进步。

我觉得,我们在做软件开发的时候,也可以多思考一下,我们所开发软件的价值点在哪里?真正需要使用软件实现价值的地方在哪里?你应该关注业务、理解业务,有价值导向,用自己的技术为公司创造真正的价值,进而实现自己的人生价值。而不是整天埋头在需求说明文档里,做一个没有思考的代码机器人。

Hadoop发布之后,Yahoo很快就用了起来。大概又过了一年到了2007年,百度和阿里巴巴也开始使用Hadoop进行大数据存储与计算。

2008年,Hadoop正式成为Apache的顶级项目,后来Doug Cutting本人也成为了Apache基金会的主席。自此,Hadoop作为软件开发领域的一颗明星冉冉升起。

同年,专门运营Hadoop的商业公司Cloudera成立,Hadoop得到进一步的商业支持。

这个时候,Yahoo的一些人觉得用MapReduce进行大数据编程太麻烦了,于是便开发了Pig。Pig是一种脚本语言,使用类SQL的语法,开发者可以用Pig脚本描述要对大数据集上进行的操作,Pig经过编译后会生成MapReduce程序,然后在Hadoop上运行。

编写Pig脚本虽然比直接MapReduce编程容易,但是依然需要学习新的脚本语法。于是Facebook又发布了Hive。Hive支持使用SQL语法来进行大数据计算,比如说你可以写个Select语句进行数据查询,然后Hive会把SQL语句转化成MapReduce的计算程序。

这样,熟悉数据库的数据分析师和工程师便可以无门槛地使用大数据进行数据分析和处理了。Hive出现后极大程度地降低了Hadoop的使用难度,迅速得到开发者和企业的追捧。据说,2011年的时候,Facebook大数据平台上运行的作业90%都来源于Hive。

随后,众多Hadoop周边产品开始出现,大数据生态体系逐渐形成,其中包括:专门将关系数据库中的数据导入导出到Hadoop平台的Sqoop;针对大规模日志进行分布式收集、聚合和传输的Flume;MapReduce工作流调度引擎Oozie等。

在Hadoop早期,MapReduce既是一个执行引擎,又是一个资源调度框架,服务器集群的资源调度管理由MapReduce自己完成。但是这样不利于资源复用,也使得MapReduce非常臃肿。于是一个新项目启动了,将MapReduce执行引擎和资源调度分离开来,这就是Yarn。2012年,Yarn成为一个独立的项目开始运营,随后被各类大数据产品支持,成为大数据平台上最主流的资源调度系统。

同样是在2012年,UC伯克利AMP实验室(Algorithms、Machine和People的缩写)开发的Spark开始崭露头角。当时AMP实验室的马铁博士发现使用MapReduce进行机器学习计算的时候性能非常差,因为机器学习算法通常需要进行很多次的迭代计算,而MapReduce每执行一次Map和Reduce计算都需要重新启动一次作业,带来大量的无谓消耗。还有一点就是MapReduce主要使用磁盘作为存储介质,而2012年的时候,内存已经突破容量和成本限制,成为数据运行过程中主要的存储介质。Spark一经推出,立即受到业界的追捧,并逐步替代MapReduce在企业应用中的地位。

一般说来,像MapReduce、Spark这类计算框架处理的业务场景都被称作批处理计算,因为它们通常针对以“天”为单位产生的数据进行一次计算,然后得到需要的结果,这中间计算需要花费的时间大概是几十分钟甚至更长的时间。因为计算的数据是非在线得到的实时数据,而是历史数据,所以这类计算也被称为大数据离线计算。

而在大数据领域,还有另外一类应用场景,它们需要对实时产生的大量数据进行即时计算,比如对于遍布城市的监控摄像头进行人脸识别和嫌犯追踪。这类计算称为大数据流计算,相应地,有Storm、Flink、Spark Streaming等流计算框架来满足此类大数据应用的场景。 流式计算要处理的数据是实时在线产生的数据,所以这类计算也被称为大数据实时计算。

在典型的大数据的业务场景下,数据业务最通用的做法是,采用批处理的技术处理历史全量数据,采用流式计算处理实时新增数据。而像Flink这样的计算引擎,可以同时支持流式计算和批处理计算。

除了大数据批处理和流处理,NoSQL系统处理的主要也是大规模海量数据的存储与访问,所以也被归为大数据技术。 NoSQL曾经在2011年左右非常火爆,涌现出HBase、Cassandra等许多优秀的产品,其中HBase是从Hadoop中分离出来的、基于HDFS的NoSQL系统。

我们回顾软件发展的历史会发现,差不多类似功能的软件,它们出现的时间都非常接近,比如Linux和Windows都是在90年代初出现,Java开发中的各类MVC框架也基本都是同期出现,Android和iOS也是前脚后脚问世。2011年前后,各种NoSQL数据库也是层出不群,我也是在那个时候参与开发了阿里巴巴自己的NoSQL系统。

事物发展有自己的潮流和规律,当你身处潮流之中的时候,要紧紧抓住潮流的机会,想办法脱颖而出,即使没有成功,也会更加洞悉时代的脉搏,收获珍贵的知识和经验。而如果潮流已经退去,这个时候再去往这个方向上努力,只会收获迷茫与压抑,对时代、对自己都没有什么帮助。

但是时代的浪潮犹如海滩上的浪花,总是一浪接着一浪,只要你站在海边,身处这个行业之中,下一个浪潮很快又会到来。你需要敏感而又深刻地去观察,略去那些浮躁的泡沫,抓住真正潮流的机会,奋力一搏,不管成败,都不会遗憾。

正所谓在历史前进的逻辑中前进,在时代发展的潮流中发展。通俗的说,就是要在风口中飞翔。

上面我讲的这些基本上都可以归类为大数据引擎或者大数据框架。而大数据处理的主要应用场景包括数据分析、数据挖掘与机器学习。数据分析主要使用Hive、Spark SQL等SQL引擎完成;数据挖掘与机器学习则有专门的机器学习框架TensorFlow、Mahout以及MLlib等,内置了主要的机器学习和数据挖掘算法。

此外,大数据要存入分布式文件系统(HDFS),要有序调度MapReduce和Spark作业执行,并能把执行结果写入到各个应用系统的数据库中,还需要有一个大数据平台整合所有这些大数据组件和企业应用系统。

图中的所有这些框架、平台以及相关的算法共同构成了大数据的技术体系,我将会在专栏后面逐个分析,帮你能够对大数据技术原理和应用算法构建起完整的知识体系,进可以专职从事大数据开发,退可以在自己的应用开发中更好地和大数据集成,掌控自己的项目。

希望对您有所帮助!~

B树和二叉排序树,B树和B+树的区别

一、B树的起源

B树,最早是由德国计算机科学家Rudolf Bayer等人于1972年在论文 《Organization and Maintenance of Large Ordered Indexes》提出的,不过我去看了看原文,发现作者也没有解释为什么就叫B-trees了,所以把B树的B,简单地解释为Balanced或者Binary都不是特别严谨,也许作者就是取其名字Bayer的首字母命名的也说不定啊……

二、B树长啥样

还是直接看图比较清楚,图中所示,B树事实上是一种平衡的多叉查找树,也就是说最多可以开m个叉(m=2),我们称之为m阶b树,为了体现本博客的良心之处,不同于其他地方都能看到2阶B树,这里特意画了一棵5阶B树 。

总的来说,m阶B树满足以下条件:

每个节点至多可以拥有m棵子树

根节点,只有至少有2个节点(要么极端情况,就是一棵树就一个根节点,单细胞生物,即是根,也是叶,也是树)

非根非叶的节点至少有的Ceil(m/2)个子树(Ceil表示向上取整,图中5阶B树,每个节点至少有3个子树,也就是至少有3个叉)

非叶节点中的信息包括[n,A0,K1,A1,K2,A2,…,Kn,An],,其中n表示该节点中保存的关键字个数,K为关键字且KiKi+1,A为指向子树根节点的指针

从根到叶子的每一条路径都有相同的长度,也就是说,叶子节在相同的层,并且这些节点不带信息,实际上这些节点就表示找不到指定的值,也就是指向这些节点的指针为空

B树的查询过程和二叉排序树比较类似,从根节点依次比较每个结点,因为每个节点中的关键字和左右子树都是有序的,所以只要比较节点中的关键字,或者沿着指针就能很快地找到指定的关键字,如果查找失败,则会返回叶子节点,即空指针

例如查询图中字母表中的K

从根节点P开始,K的位置在P之前,进入左侧指针

左子树中,依次比较C、F、J、M,发现K在J和M之间

沿着J和M之间的指针,继续访问子树,并依次进行比较,发现第一个关键字K即为指定查找的值

三、Plus版——B+树

作为B树的加强版,B+树与B树的差异在于:

有n棵子树的节点含有n个关键字(也有认为是n-1个关键字)

所有的叶子节点包含了全部的关键字,及指向含这些关键字记录的指针,且叶子节点本身根据关键字自小而大顺序连接

非叶子节点可以看成索引部分,节点中仅含有其子树(根节点)中的最大(或最小)关键字

请点击输入图片描述

B+树的查找过程,与B树类似,只不过查找时,如果在非叶子节点上的关键字等于给定值,并不终止,而是继续沿着指针直到叶子节点位置。因此在B+树,不管查找成功与否,每次查找都是走了一条从根到叶子节点的路径


分享文章:nosql起源,nosql介绍
文章链接:http://scyanting.com/article/hoegoe.html