NoSQL恰逢其时

2024-03-01 18:30
文章标签 nosql 其时 恰逢

本文主要是介绍NoSQL恰逢其时,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

介绍

在过去的15年里互动应用有了惊人的变化。在90年代,伴随着在各方面的剧烈增长,大型互联网公司如雨后春笋一般崛起:

  1. 随着网络应用可以越来越方便地通过网络(以及后来的移动终端)访问,活跃用户呈井喷之势增长。
  2. 随着数据收集和处理的难度下降与价值提高,亟待收集分析的数据急剧增长。
  3. 非结构化和半结构化的数据不断增加且对于应用不可或缺。
继续使用关系型数据库的技术已经越来越难以处理上述问题,关键原因是关系型数据库必须以严格结构化的方式组织数据,而且在单机运行。

Google,Amazon,Facebook,和LinkedIn属于第一批发现关系型数据库的严格规范难以满足新型应用需求的公司却又找不到商业化的替代方案,因此他们自己创造了替代方案。他们的工作极为有益,因为他们面临的问题被越来越多的公司遇到。开源的NoSQL数据库项目正式建立以帮助志愿者們的工作,之后商业公司也马上跟进了这个项目。

今日NoSQL技术在互联网企业中引发了热潮。它被越来越多的企业作为关系型数据库的替代方案考虑,因为大家逐渐明白大规模通过集群实现更有效,而松散的数据模型对于处理结构和内容难以预测的数据也更适合。

什么原因驱使企业转投NoSQL阵营

四个相互关联的浪潮——大用户、大终端、大数据、云——驱使企业采用NoSQL技术。

大用户


图1.大用户:世界范围内以每个用户日均使用互联网使用时间为基准的互联网使用正在剧烈增长。而随着智能手机的普及,人们更是频繁地通过应用使用互联网。而在线应用的骤增也就意味着数据库压力的骤增,因此需要一种简易的方式完成数据库的扩展以应对不断增大的压力。

其实在稍早之前,对一款应用来说1000个稳定用户就很多了而10000个日均用户就是极端异常的案例了。但在今天,大多数应用直接放在云端并通过互联网使用,因此必须可以能够全年全天候服务全球的用户。世界范围内有超过二十亿人使用互联网——而且他们日均上网时间在不断增加——这使同时在线用户产生爆发性的增长。因此现在对于一款应用而言百万级别的用户数量并不值得奇怪。

支持大量同时在线用户很重要,但是现实中我们难以预测应用究竟会处在什么样的情况下,所以能动态支持数量不确定的在线用户也很重要:

  • 一个新上线的应用可能忽然间风靡全球,一夜之间就从无人问津变得
  • 既有稳定的活跃用户,也有偶然到访的突发用户。
  • 例如圣诞节或情人节这种周期性的节日会造成短时间内的访问高峰。
  • 新产品的面世或者说促销也会造成显著提高访问数量。

庞大的用户数量和不确定的使用场景带来了对易扩展的数据库技术的需求。许多应用开发者发现很难甚至不可能在关系型数据库技术中在保持用户所需性能的前提下实现简易且程度可控的扩展。于是他们向NoSQL技术寻求突破。

大终端

机器生成的数据随着数字遥感的普及而不断增加。现在有一百四十亿终端接入互联网。他们分布在工厂农田、医院和仓库,也分布在家里的各类应用、游戏终端等,还分布在手机和平板电脑上。它们从五百亿分传感器上接受环境、位置、运动、气温、气象信息等等信息。

  • 到2020年,将有320亿终端接入网络。
  • 到2020年,将有10%的数据产生在嵌入式系统上。
  • 到2020年,将有20%的目标富裕数据产生在嵌入式系统上。

具有变革精神的企业已经利用大终端来降低花费在营销上的时间和金钱并提高效率和客户满意度。达成这个目标的关键是获得全球范围的可用实时数据,利用这些数据可以做出灵活且考虑周全的决定,使商业行为更加灵活。

不过遥感数据是碎片化、半结构化和连续的。这对要求严格schema和结构化数据的关系型数据库来说是个挑战,对于要求离散的非结构化数据的分布式数据库也是挑战。为了解决这个难题,用于创新的企业采取NoSQL来实现上百万个终端的数据访问,数十亿数据的存储并满足关键底层结构和操作的性能要求。

大数据

图2.大数据:数据总量急剧上升,而且数据的性质也随着开发者出于需求新加入的数据类型(大多数是非结构化的)而改变。

现在数据可以很容易地通过第三方(比如Facebook,Dun和Bradstreet)获取。可以获得的数据在不断增多,包括但不局限于用户个人信息,地理位置信息,社交关系,用户自己的创作,机器的日志数据,传感器的数据。开发人员可以利用现有的数据来优化现有的应用甚至直接做个更好的新应用。对数据的深度使用在改变社交、购物、营销、娱乐和关系管理的存在方式。无法妥善利用数据信息的应用将很快被淘汰。

对信息的获取和使用需要一种新型的具有弹性的数据库,一种可以让开发者轻松安排自己所需结构的数据且不会被第三方对数据结构的改动而影响的数据库。绝大多数新数据都会是非结构化或半结构化的数据,所以开发者也要求数据库能够有效地储存这些数据。不幸的是传统关系型数据库不能满足这些需求,基于预定义结构和schema的关系型数据库难以快速适应新的数据类型,也无法妥善处理非结构化和半结构化的数据。

在开发者越来越认识到数据处理的重要性后,基于面向对象思想编写的应用和基于schema的关系型数据库之间的“阻抗失配”也让他们越来越蛋疼。NoSQL提供的数据模型更匹配应用对数据的组织方式,同时也简化了应用和数据库的交互操作,因此代码量、debug和维护的工作量都得以降低。


图3.三层互联网架构:如今的应用越来越多地基于云,采用一种三层互联网架构,并以面向成千上万消费者不同需求的SaaS商业模型为基准来开发。这种开发方式需要一种具有良好水平扩展性能,也就是无论是用户数量还是应用使用的数据都可以通过水平扩展解决数量增长带来的压力。

在并不是那么遥远的过去,大多数个人应用和商业应用都只是在本地PC上运行单用户应用。大多数多用户、数据秘密集的商业应用采用双层结构,也即client-server结构,在防火墙内执行应用并支持一定数量的用户。今天,大多数新应用(个人或商业)采用三层互联网架构,应用在一个公有或私有云上运行并支持大量的用户。与软件架构改革一同开始流行的是诸如SaaS和基于广告的新型商业模型。

在三层结构中,用户通过网络浏览器或移动端的APP访问应用。在云端,一个负载均衡装置把到达的访问流量分流到基于集群的处理web/app业务逻辑的服务器层。在web/app层以集群的方式处理工作表现良好。每10000个(或者根据实际场景是个别的什么数量)并发用户,你只需要简单地往web/app层添加另一个服务器也就解决了额外的负荷。

在数据库层,关系型数据库曾经是最流行的选择。但是因为关系型数据库是基于中心化和share-everyting的技术,相比水平扩展它采用的是垂直扩展,而这是个很大的问题。这让关系型数据库难以支持需求能简单进行高效扩展的应用。NoSQL就是在分布式水平扩展的技术基础上诞生的,因此也更适合三层互联网架构天生的高度分布特性。

(未完待续)





这篇关于NoSQL恰逢其时的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/763397

相关文章

NoSQL数据库的35个应用场景

现在我们站在各个用例的角度上来考虑那种系统适合于这些用例。   你的意见是?   首先,我们要纵览各种数据模型。这些模型的分类方法来自于Emil Eifrem和NoSQL databases。   文档数据库   源起:受Lotus Notes启发。   数据模型:包含了key-value的文档集合   例子:CouchDB, MongoDB   优点:数据模型自然,编

nosql之mongodb初接触(一)

官网下载地址:(https://www.mongodb.com/download-center?jmp=nav#community)作为一个nosql的产品,mongodb和redis可谓旗鼓相当.下载介绍一下在ubuntu16.04版本下mongodb的使用版本:mongndb3.2.7 百度下载 http://pan.baidu.com/s/1eSfnIZg 下载解压

如何进行不同数据库的集群操作?--从部署谈起,今天来看MySQL和NoSql数据库Redis的集群

篇幅较长,主要分为mysql和Redis两部分。找想要的部分可见目录食用。。 目录 什么是集群?为什么要集群? 1.1 数据库主要分为两大类:关系型数据库与 NoSQL 数据库 1.2 为什么还要用 NoSQL 数据库呢?                       -------------------华丽分割线-------------- 一、关系型数据库MySQL 1.部署

软件综合实习——基于NoSQL数据库的空间数据存储

前言:在“软件综合实习”这门实践课中选择了一个题目《基于NoSQL数据库的空间数据存储》,基于HBase的空间数据存储和查询。此博客是这次课程设计过程中的简单记录。 GitHub项目源代码 简介 RDBM在处理中小规模数据的时候没有压力,拥有严格的数学背景支撑,擅长处理事务。然而新千年之后进入互联网时代,此时数据量极速变大,RDBM在一些大数据场景开始力不从心,世界需要新的变革,等待新的

阅读笔记(四)NoSQL的选择指引《NoSQL database systems: a survey and decision guidance》

一. 前言   《NoSQL database systems: a survey and decision guidance》是一篇很好的综述类论文,详细的论述了NoSQL的特点和各种不同NoSQL数据库的选择依据。   传统的关系型数据库(relational database management systems ,RDBMSs)可以在保证一致性、可靠性、稳定性的前提下提供强有力的数据存储

主流NoSQL及应用场景详解

点击上方“朱小厮的博客”,选择“设为星标” 后台回复"书",获取 来源:r6d.cn/r4P7      对比传统关系型数据库,NoSQL有着更为复杂的分类——键值、面向文档、列存储以及图数据库。这里就带你一览NoSQL各种类型的适用场景及一些知名公司的方案选择。      在过去几年,关系型数据库一直是数据持久化的唯一选择,数据工作者考虑的也只是在这些传统数据库中做筛选,比如SQL Se

大数据-NoSQL数据库-HBase操作框架:Phoenix【Java写的基于JDBC API的操作HBase数据库的SQL引擎框架;低延迟、事务性、可使用sql语句、提供JDBC接口】

一、Phoenix概述 1、Phoenix 定义 Phoenix 最早是 saleforce 的一个开源项目,后来成为 Apache 的顶级项目。Phoenix 构建在 HBase 之上的开源 SQL 层. 能够让我们使用标准的 JDBC API 去建表, 插入数据和查询 HBase 中的数据, 从而可以避免使用 HBase 的客户端 API.在我们的应用和 HBase 之间添加了 Phoen

NoSQL浅谈

如今我们需要处理的数据越来越多,必须以商用的服务器集群来构建大型的硬件平台。NoSQL就应运而生了。它主张使用无模式的数据,可以运行在集群中。 NoSQL优点 应用程序的开发效率:以前我们需要花很大一部分的精力在内存数据结构和关系型数据的映射。NoSQL简化了数据交互。大规模的数据:NoSQL为集群设计。 NoSQL发展迅速的原因 由于需要处理的数据越来越多,所以大型机的扩展方式,由原来单

redis作为单线程NoSQL为何快到不敢相信

纯内存数据库,如果只是简单的 key-value,内存不是瓶颈。一般情况下,hash 查找可以达到每秒数百万次的数量级。 瓶颈在于网络 IO 上。 根据你测的的 10000/s 来看,客户端和 redis 应该是部署在两台不同的机器,并且是使用同步的方式请求 redis. 每次请求需要通过网络把请求发送到 redis 所在的机器,然后等待 redis 返回数据。时间大部分消耗在网络传输中。 如果

数据库系统 第27节 NoSQL 数据库 案例分析

由于NoSQL数据库的种类繁多,我将以MongoDB(文档数据库)和Redis(键值存储)为例,提供一些简单的代码示例来展示如何使用这些数据库。 MongoDB(文档数据库) 假设我们使用Node.js和Mongoose(一个MongoDB对象模型工具)来操作MongoDB。 安装Mongoose: npm install mongoose 连接MongoDB: const mong