小白学数据之NoSQL数据库 进阶篇-程序员宅基地

技术标签: json  数据库  大数据  

0?wx_fmt=jpeg

写在前面


这篇是小白学数据系列的NoSQL数据库的第二篇:进阶篇。数据分析方向的从业人员可以从中获取数据仓库软件市场的现状和分析,以增加自己的知识储备,为可能的技术转型打基础。而工程师可以找到关于NoSQL主流产品的分析介绍以及选择数据库的一些准则。NoSQL不是万能药,采用技术最好不要跟风,选择适合自己数据和应用的才是最好的哟~没有看过NoSQL基础篇的读者可以在文末的历史文章回顾中找到。


◆ ◆ 


小白问:上次问了NoSQL,SQL的区别,好像有点忘了,我们可以温故而知新一下吗?

答:。。。好吧,上次我们说了他们主要有两个区别:第一就是数据建模的方式不同,SQL是采用表格的模型,虽然比较简洁整齐但是前期建模需要的投入比较大,并且之后如果想要更改这个模型是一件非常困难的事情;第二就是系统的可扩展性不同,NoSQL可以非常简单的加入新的机器进行分布式运行,而SQL数据库则需要进行复杂的分片过程,给使用数据库的应用增加复杂度。


小白问:这几天听说了一个叫做数据仓库的东西,这个和数据库有什么关系吗?

答:从技术上讲,数据仓库是数据库的一种。从功能上讲,数据库分成两种:一种是实时系统(也叫线上交易处理OLTP),另外一种就是数据仓库了(也叫线上分析处理OLAP)。


实时系统主要的功能是日常的操作处理。假设我们有一个卖煎饼的电子商务网站,那我们的电子商店应用连接的系统就是实时的OLTP系统,这个数据库中的信息永远是最新的,每次有人从我们的网站买煎饼,这个交易都要马上记录在数据库中可以进行发货客服等服务,关心和操作这些数据的人主要是公司的一线职工比如快递小哥以及一线的管理人员比如销售经理。这个系统单个的请求一般来说都比较简单,而由于买我们煎饼的人数很多,所以要保障这个系统的吞吐量。


然而公司的CEO和高层管理人员对数据有不同的诉求,他们希望可以通过分析数据来了解公司产品销售和财务的健康状况,进行分析和决策。有可能通过分析表明,煎饼中的薄脆会很快的售罄,那产品决策者可以增加薄脆原料的采购量。这个时候如果继续使用我们前面的实时OLTP系统就出现了两个问题。第一,由于实时系统中的数据建模是根据日常操作的需求来进行的,当需要大规模的复杂查询和计算的时候就比较捉急了。而数据仓库OLAP中的建模是专门为这个数据分析的需求而产生的,可以很快的进行聚集类的计算(比如平均日销售量,年销售总量等)。第二,由于实时系统对性能的要求很高,如果CEO需要的查询结果夺取了日常运营的资源,那就得不偿失了。数据仓库的解决方案就是定期将实时系统中新增的信息移到数据仓库中,也就是同样的一份信息用不同的方式存了两遍,这两个地方的数据模型并不相同,这样CEO和外卖小哥就不会互相影响了!


小白问:你说数据仓库中的信息是定时增加的,那就是说这里面的信息不是最全面的吗?

答:你说的对,数据仓库的信息会有些滞后,但是我们煎饼公司的决策人员想得到的是销售趋势而不是精细的信息,有个那么几天的延迟一般来说也没有什么关系。数据科学家的战场也是在数据仓库中哦!


小白问:那NoSQL数据库一般是作为实时的还是数据仓库呢?

答:在目前来说NoSQL更加常见的应用是实时的OLTP实时数据库,因为我们上次说了NoSQL的强项主要在于高度可扩展性和灵活的建模,这都是实时系统非常需要的东西,而对于进行聚集的查询所需要的计算能力还有待提高。新兴的大数据技术中最适合OLAP数据仓库的就是Hadoop相关的技术了,这里我们就不展开说了。


下面这个图是来自于高德纳咨询公司(Gartner,全球最具权威的IT研究公司)在2015年2月发布的对数据仓库OLAP的市场分析。我们可以看到,在领导者(Leaders)的这个象限中仍然只有传统的大型公司,比如大家都熟悉的甲骨文(Oracle),微软(Microsoft)和IBM。而新兴的技术进入这个名单的只有寥寥不多的几家,其中包括:亚马逊云服务 (Amazon Web Services)提供的数据分析服务,提供Hadoop相关软件的Cloudera和MapR公司以及提供文档型NoSQL数据库的MarkLogic公司。等会我们会看到,在高德纳公司提供的实时数据库的分析报告中则是百花齐放和群雄争霸的一个场面。而在数据仓库这个方面,还是传统公司占据主要的市场份额,而新兴的大数据分析系统还有待进一步的成熟。


0?wx_fmt=png

图注:高德纳2015OLAP数据仓库系统市场分析


◆ ◆ 

深入聊聊


小白问:NoSQL的数据建模方式有哪几种呢?我记得上次提到文档和图,还有别的吗?

答:记性不错!主要有下面的四种:

1.键值型(Key-Value) 

2.列存储型 (Wide-Column)

3.文档型 

4.图型


下面我就简单介绍一下这四种数据库的建模方式,你可以参照下面高德纳的实时系统OLTP报告来对号入座,我会给一些这个图中的例子,给他们分到不同的类别中:

 0?wx_fmt=png

图注:高德纳2015OLTP实时数据库系统市场分析


1.键值型数据库


这是NoSQL中数据模型中最简单的一个了,主要就是用哈希表,通过对于键(Key)的查找来找到特定的数据。键值型数据库最大的优势其实就是它非常简单,很容易部署在应用中。而缺点就是这个模型过于简单,对于数据没有任何结构化的认知,只是知道返回了一坨数据,里面是什么完全没有概念。这种NoSQL数据库最典型的应用就是作为缓存,用来增加查询的性能,其实已经不能算作一个数据库了。可以在上面图中的领导象限看到Redis Lab,这个公司提供的产品Redis已经是风靡一时的缓存产品了,各大公司都用它!

 0?wx_fmt=png

2.列存储型数据库


这个数据模型其实和SQL的数据模型很像,都是存储在一个表格形状中的,但是有几个很重要的不同点。首先,在将数据放入列存储NoSQL数据库之前是不需要知道有那些列和列的具体信息的,而SQL是必须要这些信息才可以用的。另外每一行并不是在每一列都是有数据的,这是一个非常稀疏的表格。这种产品的可扩展性都很不错,上面表中就有在领导象限中DataStax公司所提供的产品Cassandra。

 0?wx_fmt=png

3.文档型数据库


我们上一篇文章中用JSON的例子就是文档型数据库,这些产品的优势在于数据建模非常的灵活,而且可以对数据的结构有所了解进行更加精确的查询。但是目前由于没有统一的查询语法,不同的产品的查询语言非常不一样。这个类型中的代表性产品有:MongoDB和MarkLogic,这两个公司都已经成为了市场的领导者之一。


 0?wx_fmt=png

4.图型数据库


图型数据库可以实用灵活的模型,对于社交网络方向的要求非常适合,只要是图结构的应用都是图型数据库的强项。这个类型的代表产品是Neo科技公司的Neo4j。

 

0?wx_fmt=png

小白问:这么多不一样的NoSQL数据库我都晕了,我有选择障碍症啊,求问怎么选数据库?

答:这个当然是方方面面的了,需要考虑和公司已有的人才和技术资源的兼容性,以及产品价格和拥有产品后的支出,即使采用的是开源的产品也要考虑公司花大钱请来的程序员在这维护和建立系统方面花的时间,计算拥有系统的总支出。


如果从技术方面考虑的话就更多了,最主要就是要理解需求,下面有几个关键的点:

1. 如果你需要的是一个分析系统,而建模不需要太灵活的话,SQL数据库仍然是最好的选择。

2. 如果需要灵活的建模以及分析大规模的数据的话,可以考虑Hadoop或者Spark的解决方案。

3. 如果你需要的是一个实时系统,要考虑对已经拥有的数据,怎样建模最适合(文档,图型还是稀疏表格)。

4. 实时系统要考虑对事务的需求。所谓事务就是有一系列的数据库操作,这些操作要么都做要么都不做。比如你给小灰支付宝转账10块钱,最后要么成功了:你少10块,小灰多10块;要么你余额不足失败了,这时候两个人的余额都不变。不能出现别的可能性。SQL数据库是支持事务的,但是很遗憾很多的NoSQL是不支持事务的(比如MongoDB)。如果应用对这些方面有要求,注意选择有相关功能的数据库。

5.除此之外还要考虑如果集群中有机器宕机了会发生什么,备份是怎样进行的,如何检测系统的性能并调式性能等等等等......

俗话说的好,欲善其事必先利其器。选好了数据库系统可以让你的应用开发和数据分析事半功倍哟!


小白问:NoSQL是一个新兴的科技,你觉得在未来的一段时间会朝怎样的方向发展呢?

答:这个问题好,我觉得这几个发展方向是值得关注的:

1.对于数据仓库的应用会出现性能更加好的解决方案,毕竟是CEO时常需要的东西呢。比如和BI工具的连接也会加强的。

2.目前采用NoSQL系统的企业主要分布在金融和电信等行业,应该会出现针对于这些行业特定应用(比如CRM和金融中的风控)的整体解决方案打包产品。

3.技术方面更加成熟,更多的产品会支持事务等其他企业需要的功能。


◆ ◆ 


这是小白学数据系列第一次写进阶篇的文章,意在给读过基础篇并对NoSQL有进一步兴趣的读者提供更多的信息。其他的话题,我们的设想也是基础篇+进阶篇的结构。便于我们更好地给读者提供有帮助的文章,请帮我们填写一下。谢谢!


原文发布时间为:2016-05-03

本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34270606/article/details/90565787

智能推荐

软件测试流程包括哪些内容?测试方法有哪些?_测试过程管理中包含哪些过程-程序员宅基地

文章浏览阅读2.9k次,点赞8次,收藏14次。测试主要做什么?这完全都体现在测试流程中,同时测试流程是面试问题中出现频率最高的,这不仅是因为测试流程很重要,而是在面试过程中这短短的半小时到一个小时的时间,通过测试流程就可以判断出应聘者是否合适,故在测试流程中包含了测试工作的核心内容,例如需求分析,测试用例的设计,测试执行,缺陷等重要的过程。..._测试过程管理中包含哪些过程

政府数字化政务的人工智能与机器学习应用:如何提高政府工作效率-程序员宅基地

文章浏览阅读870次,点赞16次,收藏19次。1.背景介绍政府数字化政务是指政府利用数字技术、互联网、大数据、人工智能等新技术手段,对政府政务进行数字化改革,提高政府工作效率,提升政府服务质量的过程。随着人工智能(AI)和机器学习(ML)技术的快速发展,政府数字化政务中的人工智能与机器学习应用也逐渐成为政府改革的重要内容。政府数字化政务的人工智能与机器学习应用涉及多个领域,包括政策决策、政府服务、公共安全、社会治理等。在这些领域,人工...

ssm+mysql+微信小程序考研刷题平台_mysql刷题软件-程序员宅基地

文章浏览阅读219次,点赞2次,收藏4次。系统主要的用户为用户、管理员,他们的具体权限如下:用户:用户登录后可以对管理员上传的学习视频进行学习。用户可以选择题型进行练习。用户选择小程序提供的考研科目进行相关训练。用户可以进行水平测试,并且查看相关成绩用户可以进行错题集的整理管理员:管理员登录后可管理个人基本信息管理员登录后可管理个人基本信息管理员可以上传、发布考研的相关例题及其分析,并对题型进行管理管理员可以进行查看、搜索考研题目及错题情况。_mysql刷题软件

根据java代码描绘uml类图_Myeclipse8.5下JAVA代码导成UML类图-程序员宅基地

文章浏览阅读1.4k次。myelipse里有UML1和UML2两种方式,UML2功能更强大,但是两者生成过程差别不大1.建立Test工程,如下图,uml包存放uml类图package com.zz.domain;public class User {private int id;private String name;public int getId() {return id;}public void setId(int..._根据以下java代码画出类图

Flume自定义拦截器-程序员宅基地

文章浏览阅读174次。需求:一个topic包含很多个表信息,需要自动根据json字符串中的字段来写入到hive不同的表对应的路径中。发送到Kafka中的数据原本最外层原本没有pkDay和project,只有data和name。因为担心data里面会空值,所以根同事商量,让他们在最外层添加了project和pkDay字段。pkDay字段用于表的自动分区,proejct和name合起来用于自动拼接hive表的名称为 ..._flume拦截器自定义开发 kafka

java同时输入不同类型数据,Java Spring中同时访问多种不同数据库-程序员宅基地

文章浏览阅读380次。原标题:Java Spring中同时访问多种不同数据库 多样的工作要求,可以使用不同的工作方法,只要能获得结果,就不会徒劳。开发企业应用时我们常常遇到要同时访问多种不同数据库的问题,有时是必须把数据归档到某种数据仓库中,有时是要把数据变更推送到第三方数据库中。使用Spring框架时,使用单一数据库是非常容易的,但如果要同时访问多个数据库的话事件就变得复杂多了。本文以在Spring框架下开发一个Sp..._根据输入的不同连接不同的数据库

随便推点

EFT试验复位案例分析_eft电路图-程序员宅基地

文章浏览阅读3.6k次,点赞9次,收藏25次。本案例描述了晶振屏蔽以及开关电源变压器屏蔽对系统稳定工作的影响, 硬件设计时应考虑。_eft电路图

MR21更改价格_mr21 对于物料 zba89121 存在一个当前或未来标准价格-程序员宅基地

文章浏览阅读1.1k次。对于物料价格的更改,可以采取不同的手段:首先,我们来介绍MR21的方式。 需要说明的是,如果要对某一产品进行价格修改,必须满足的前提条件是: ■ 1、必须对价格生效的物料期间与对应会计期间进行开启; ■ 2、该产品在该物料期间未发生物料移动。执行MR21,例如更改物料1180051689的价格为20000元,系统提示“对于物料1180051689 存在一个当前或未来标准价格”,这是因为已经对该..._mr21 对于物料 zba89121 存在一个当前或未来标准价格

联想启天m420刷bios_联想启天M420台式机怎么装win7系统(完美解决usb)-程序员宅基地

文章浏览阅读7.4k次,点赞3次,收藏13次。[文章导读]联想启天M420是一款商用台式电脑,预装的是win10系统,用户还是喜欢win7系统,该台式机采用的intel 8代i5 8500CPU,在安装安装win7时有很多问题,在安装win7时要在BIOS中“关闭安全启动”和“开启兼容模式”,并且安装过程中usb不能使用,要采用联想win7新机型安装,且默认采用的uefi+gpt模式,要改成legacy+mbr引导,那么联想启天M420台式电..._启天m420刷bios

冗余数据一致性,到底如何保证?-程序员宅基地

文章浏览阅读2.7k次,点赞2次,收藏9次。一,为什么要冗余数据互联网数据量很大的业务场景,往往数据库需要进行水平切分来降低单库数据量。水平切分会有一个patition key,通过patition key的查询能..._保证冗余性

java 打包插件-程序员宅基地

文章浏览阅读88次。是时候闭环Java应用了 原创 2016-08-16 张开涛 你曾经因为部署/上线而痛苦吗?你曾经因为要去运维那改配置而烦恼吗?在我接触过的一些部署/上线方式中,曾碰到过以下一些问题:1、程序代码和依赖都是人工上传到服务器,不是通过工具进行部署和发布;2、目录结构没有规范,jar启动时通过-classpath任意指定;3、fat jar,把程序代码、配置文件和依赖jar都打包到一个jar中,改配置..._那么需要把上面的defaultjavatyperesolver类打包到插件中

VS2015,Microsoft Visual Studio 2005,SourceInsight4.0使用经验,Visual AssistX番茄助手的安装与基本使用9_番茄助手颜色-程序员宅基地

文章浏览阅读909次。1.得下载一个番茄插件,按alt+g才可以有函数跳转功能。2.不安装番茄插件,按F12也可以有跳转功能。3.进公司的VS工程是D:\sync\build\win路径,.sln才是打开工程的方式,一个是VS2005打开的,一个是VS2013打开的。4.公司库里的线程接口,在CmThreadManager.h 里,这个里面是我们的线程库,可以直接拿来用。CreateUserTaskThre..._番茄助手颜色

推荐文章

热门文章

相关标签