NoSQL领衔大数据时代的新技术

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介:

本文讲的是NoSQL领衔大数据时代的新技术,大数据应用到数据集,其大小超出了常用软件工具所能捕捉、管理和在可承受的时间内处理数据的能力。Big Data的规模在不断变化,单一数据集的规模从几十个TB涨到多个PB。

  IDC估计到2011年数据约达到1.8ZB。

  ZB有多大?答案是10亿个TB。目前世界人口有7亿——也就是说,如果给每个人250G硬盘——存储空间仍然是不够用的。

  这次的数据洪流有诸多来源:

  1. 纽约证券交易所每天产生1TB的新交易数据;

  2. Facebook主机存储100亿张照片会占用1PB空间;

  3. Ancestry.com,家谱网,存储约2.5PB数据;

  4. 互联网档案馆存储约2PB数据,并以每月约20TB的速度增长;

  5. Geneva附近的Large Harden Colider每年将产生15PB的数据;

  6. 人们每天从传感器、移动设备、网上交易和社交网络创造相当于2.5万亿字节的数据。

  Facebook、Yahoo和Google发现他们以空前的规模汇集数据。他们是第一批从上百万用户中汇集数据的大公司。

  这些数据迅速淹没了传统的例如Oracle和MySQL等的数据系统。即便是最好的、最昂贵的供应商使用最大规模的硬件也只能勉强跟上,无法给他们有力的工具来分析数据的涌入。

  在2000年初,开发诸如MapReduce、BigTable、Google File System的新技术来处理大数据。最初,这些技术是专有的。但随后人们注意到公开的概念会更有利-因为越来越多的人会有助于此,并且他们雇佣的毕业生在加入他们之前对此也会有一个良好的理解。

  在2004-2005年度,Facebook、Yahoo和Google开始共享描述他们大数据技术的研究论文。

  2004年,Google发表题为“MapReduce:在大型集群上简化数据处理(MapReduce: Simplified Data Processing on Large Clusters)”的论文。

  MapReduce是一个编程模型,同时也是一个处理和生成大型数据的工具。用户指定映射函数来处理一对key-value以生成一个中间key-value的集合,指定reduce函数合并相同的中间键关联的所有的中间值。正如这篇文章所写,现实世界的许多工作都可以在这个模型中得以表达。

  以此功能所编写的程序自动并行,而且能在商品机大型集群上执行。系统处理分割输入数据的细节,跨机器调度程序执行,处理机器故障,管理所需的机器间的通讯。这样使得没有任何操作并行和分布式系统经验的程序员同样可以轻松地利用大型分布式系统的资源。Google基于MapReduce实现在大型集群的商品机上运行并且这是高度可伸缩的。

  一个典型的MapReduce在成百上千台机器上处理大量的数据。设计器和系统是很容易使用的。数以百计的MapReduce程序已经实施并且每天有超过一千的MapReduce工作在Google集群执行。

  Nutch是一个开源的搜索技术,现在由Apache Software Foundation管理,而为其工作的Doug Cutting阅读了由Google发表的此文和由Google分布式文件系统[GFS]发表的另一篇文章,指出GFS可以解决他们的存储要求,MapReduce也会解决Nuth和实施MapReduce及GFS的缩放问题。他们把为Nutch实施的GFS命名为Nutch Distributed Filesystem[NDFS]。

  NDFS和Nutch的MapReduce的实现超出了搜索领域,并于2006年2月迁移出Nutch构建成一个名为Hadoop和NDFS的独立的Lucene子项目,成为HDFS[Hadoop分布式文件系统],这是一个GFS的实现。与此同时,Yahoo延长了他们对Hadoop的支持并雇佣了Doug Cutting。

  在HDFS的工作层面,有一个300MB的文件[Hadoop的PB级和TB级文件非常好]。HDFS所需做的第一件事就是将它分割为若干块。HDFS上的默认块的大小为128MB。一旦把他们分割成块,我们将得到分别为128MB和44MB的两个部分。现在,HDFS将‘n’[‘n’即是配置]作为每个块的拷贝/副本的一部分。HDFS将这些副本存储在集群的不同数据节点上。我们也有单一的保持着副本和数据节点路径的数据NameNode。NameNode清楚副本在什么位置-每当它检测到有副本损坏[DataNode一直在副本上进行校验]或者相应的HDFS变为down,它将会寻找集群中该副本的其他副本,并告诉其他节点复制该副本的‘n’。NameNode是一个单点故障-两个点就会避免出现这种情况,我们会有与主要NameNode同步的次要NameNode-当主的变为down-从的将会起控制作用。Hadoop项目目前工作在分布式的NameNodes上。


  Google在2006年又发表了一篇名为“Bigtable:一个结构化数据的分布式存储系统(Bigtable: A Distributed Storage System for Structured Data)”的文章。

  Bigtable是一个管理结构化数据的分布式存储系统,它的设计扩展到一个非常大的规模,跨越了成千上万服务器的PB级数据。Google许多项目的数据都存储在Bigtable中,其中包括网页索引、Google Earth和Google Finance。这些在Bigtable中的应用有不同的需求,不仅是在数据大小方面(从网页地址到卫星图像)还有在延迟要求方面(从后台数据处理到实时数据服务)。尽管这些需求不同,Bigtable为Google的产品提供了一个柔性的、高性能的解决方案。本文介绍了Bigtable中提供的简单的数据模型,Bigtable使得客户可以对数据的布局和格式进行动态控制,并且描述了Bigtable的设计和实施。

  Bigtable映射任意两个字符串值(行值和列值)和时间戳(三维映射)关联的任意字节数组。这并不是个关系型数据库,更应该定义为sparse,分布式多维分类映射。

  Bigtable基本上讨论了怎样在GFS上建立分布式数据存储。

  由Hadoop所生成的HBase是一个BigTable的实现。HBase是一个分布式、列导向的、利用HDFS为其底层存储同时支持使用MapReduce和点查询的批量计算的数据库。

  Amazon,在2007年出版了“Dynamo:亚马逊高度可用Key-value存储(Dynamo: Amazon’s Highly Available Key-value Store)”的文章。

  Dynamo是一个高度可用的Key-value存储系统,Amazon的核心服务提供一个“always-on”的技巧。Apache Cassandra——汇集了Dynamo的完全分布式设计和BigTable的数据模型,用Java进行编写,由Facebook发布的开源系统。这是个NoSQL的解决方案,最初由Facebook开发,直到2010年底,增强他们的收件箱搜索功能。事实上,Cassandra最初的开发工作是由两个由Facebook从Amazon招募的Dynamo工程师进行的。但是在2010年底当Facebook建立了基于HBase的信息平台后便放弃了Cassandra。

  此外,除了使用BigTable的建模方法,它具有类似于最终一致性的属性,Gossip协议,master-master方式的读服务和Amazon Dynamo产生的写请求。最终一致性是其中一个重要的属性,意味着在一段足够长的时间内没有发送更改信息,所有的更新都可以预期,最终系统和所有副本也将保持一致。

  再说到Cassandra时,使用了“NoSQL”一词。NoSQL(有时候解释为not only SQL)是数据库管理系统的一个宽泛类,在一些重大方面,它不同于典型的关系型数据库管理系统(RDBMS)。这些数据存储不需要固定的表模式,通常能够避免连接操作,可以进行横向扩展。

  “NoSQL”这个名字最初是由Carlo Strozzi在1998年提出的,作为由他开发的基于文件的数据库的名称。具有讽刺意味的是,它仅仅是个没有SQL接口的关系型数据库而已。当Eric Evans在2009年用它来命名非关系型数据库的流冲击(current surge)的时候,这个名字重新复出水面。

  NoSQL数据库有四个类别:

  1. Key-value stores:基于Amazon的Dynamo文件;

  2. ColumnFamily / BigTable clones:例如HBase、Cassandra;

  3. Document Databases:例如CouchDB、MongoDB;

  4. Graph Database:例如AllegroGrapgh、Neo4j。

  正如Marin Dimitrov所言,以下是NoSQL数据库的使用场合,换句话说,是关系型数据库不适合执行的情况。

  1. 庞大的数据量;

  2. 极端的查询量;

  3. 模式演化。

  我们从NoSQL上可以得到高可扩展性、高可用性、低成本(与同等规模的解决方案相比)、可预见的弹性和架构灵活性的优势。

  对于应用程序来说关系型数据库和Cassandra的主要区别在于基于BigTable的数据模型。Cassandra数据模型是专为大规模的分布式数据所设计的。在性能、可用性和运算管理遵从惯有的优势。

作者: 孙耀堃

来源: IT168

原文标题:NoSQL领衔大数据时代的新技术

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
6月前
|
SQL 存储 NoSQL
SQL vs. NoSQL:如何根据大数据需求选择合适数据库
【4月更文挑战第8天】本文对比分析了SQL与NoSQL数据库在大数据项目中的应用。SQL数据库适合结构化数据、强一致性和复杂事务处理,如金融系统,而NoSQL则适用于半结构化和非结构化数据、高并发及大数据场景,如社交网络。选择时应考虑业务需求、技术栈、团队经验和成本效益,以找到最佳解决方案。随着技术发展,NewSQL和Multi-model数据库也提供了更多选择。
380 0
|
SQL NoSQL Java
Redis学习---大数据技术之Redis(NoSQL简介、Redis简介、Redis安装、五大数据类型、相关配置、持久化)
Redis学习---大数据技术之Redis(NoSQL简介、Redis简介、Redis安装、五大数据类型、相关配置、持久化)
|
5月前
|
存储 NoSQL 大数据
NoSQL数据库在大数据处理场景下如何评估其性能?
【6月更文挑战第10天】NoSQL数据库在大数据处理场景下如何评估其性能?
106 2
|
6月前
|
存储 NoSQL 分布式数据库
大数据存储技术(4)—— NoSQL数据库
大数据存储技术(4)—— NoSQL数据库
747 1
|
6月前
|
NoSQL 大数据 分布式数据库
【云计算与大数据技术】分布式数据库NoSQL中KV、列式、图、文档数据库的讲解(图文解释 超详细)
【云计算与大数据技术】分布式数据库NoSQL中KV、列式、图、文档数据库的讲解(图文解释 超详细)
205 0
|
存储 分布式计算 Kubernetes
“后 Hadoop 时代”,大数据从业者如何应对新技术趋势带来的挑战?
对于大数据从业者们来说,开源大数据项目热力迁徙背后的技术发展逻辑及如何应对新技术趋势带来的挑战?刘京娟、贾扬清、王峰在此解读。
“后 Hadoop 时代”,大数据从业者如何应对新技术趋势带来的挑战?
|
机器学习/深度学习 人工智能 算法
全国首发!周志华教授领衔撰写《大数据分析研究进展》
全国首发!周志华教授领衔撰写《大数据分析研究进展》
207 0
|
机器学习/深度学习 数据采集 人工智能
浅谈数字经济新技术间的关系——云计算、物联网、大数据、区块链、人工智能、元宇宙
1、什么是数字经济数字经济是继农业经济、工业经济之后的主要经济形态,是以数据资源为关键要素,以现代信息网络为主要载体,以信息通信技术融合应用、全要素数字化转型为重要推动力,促进公平与效率更加统一的新经济形态。——摘自《国务院 “十四五”数字经济发展规划 2021年12月12日》北京2022年1月12日 - 中国国务院周三发布“十四五”数字经济发展规划,提出到2025年,数字经济核心产业增加...
1271 16
|
存储 NoSQL 安全
NoSQL 之Redis的5大数据类型
Redis的五大数据类型也称五大数据对象;了解过6大数据结构,Redis并没有直接使用这些结构来实现键值对数据库,而是使用这些结构构建了一个对象系统redisObject; 这个对象系统包含了五大数据对象:字符串对象(string)、列表对象(list)、哈希对象(hash)、集合(set)对象和有序集合对象(zset); 而这五大对象的底层数据编码可以用命令OBJECT ENCODING来进行查看。
婺亿信息边秀武:气象行业最缺新技术,AI和大数据是行业发展加速器
未来5年时间内,气象AI服务行业将会迎来一次小爆发。
724 0