十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
Web1.0的时代,数据访问量很有限,用一夫当关的高性能的单点服务器可以解决大部分问题。
网站建设、成都做网站,成都做网站公司-创新互联建站已向上1000家企业提供了,网站设计,网站制作,网络营销等服务!设计与技术结合,多年网站推广经验,合理的价格为您打造企业品质网站。
随着Web2.0的时代的到来,用户访问量大幅度提升,同时产生了大量的用户数据。加上后来的智能移动设备的普及,所有的互联网平台都面临了巨大的性能挑战。
NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。
NoSQL 不依赖业务逻辑方式存储,而以简单的key-value模式存储。因此大大的增加了数据库的扩展能力。
Memcache Memcache Redis Redis MongoDB MongoDB 列式数据库 列式数据库 Hbase Hbase
HBase是Hadoop项目中的数据库。它用于需要对大量的数据进行随机、实时的读写操作的场景中。
HBase的目标就是处理数据量非常庞大的表,可以用普通的计算机处理超过10亿行数据,还可处理有数百万列元素的数据表。
Cassandra Cassandra
Apache Cassandra是一款免费的开源NoSQL数据库,其设计目的在于管理由大量商用服务器构建起来的庞大集群上的海量数据集(数据量通常达到PB级别)。在众多显著特性当中,Cassandra最为卓越的长处是对写入及读取操作进行规模调整,而且其不强调主集群的设计思路能够以相对直观的方式简化各集群的创建与扩展流程。
主要应用:社会关系,公共交通网络,地图及网络拓谱(n*(n-1)/2)
一:传统数据库
(1)传统索引不适于海量数据
传统行存数据库索引需要手工设定,对应用不完全透明,随场景和需求的变化需要不断调整,人工维护成本很高。并且传统索引占用存储空间很大,甚至高于数据本身,造成查询效率的下降。
(2)数据装载速度慢
因为索引需要重新创建,加载性能会变的很糟糕。分析型架构系统要解决这些个问题,必须最大限度地减少磁盘 I/O ,提升查询效率,减小人工维护成本。南大通用分析型数据库GBase8a (以下简称GBase 8a)通过列存储模式、数据压缩、智能化的索引、并行处理、并发控制、高效的查询优化器等技术,使得上述问题得到有效解决。以下各节将描述 GBase 8a 的创新架构如何实现这些目标。
二:新型数据库
新型数据库采用分布式并行计算架构,部署于X86通用服务器,满足大数据实时交易需求,成本低、扩展性高,突破了传统数据库性能瓶颈。
分布式非关系型数据库技术创新
非关系型数据库即NoSQL,抛弃了关系数据库复杂的关系操作、事务处理等功能,仅提供简单的键值对(Key, Value)数据的存储与查询,换取高扩展性和高性能,满足论坛、博客、SNS、微博等互联网类应用场景下针对海量数据的简单操作需求。主要技术创新为:
(1) 简单的数据操作换取高效响应。NoSQL仅支持按照Key(关键字)来存储和查询Value(数据),不支持对非关键字数据列的高效查询;因数据操作简单、数据间一般不需要关联操作,故系统可支持高并发和较快的响应速度。
(2) 多种一致性策略满足业务需求。不同于传统关系型数据库仅支持强一致性策略,NoSQL还支持弱一致性和最终一致性等多种策略,可根据应用场景进行对应配置。例如,对写入操作频繁,但数据读取最新版本要求并不严格的应用,如互联网网页数据的存储和分析应用,可以采用最终一致性策略;而对订购关系存储的应用,则必须用强一致性策略,保证总是读取最新版本数据
本质是因为:随着互联网的进一步发展与各行业信息化建设进程加快、参与者的增多,人们对软件有了更多更新的要求,需要软件不仅能实现功能,而且要求保证许多人可以共同参与使用,因而软件所需承载的数据量和吞吐量必须达到相应的需求。而目前的关系型数据库在某些方面有一些缺点,导致不能满足需要。
具体则需要对比关系型数据库与Nosql之间的区别可以得出
关系型数据库
关系型数据库把所有的数据都通过行和列的二元表现形式表示出来。
关系型数据库的优势:
1. 保持数据的一致性(事务处理)
2.由于以标准化为前提,数据更新的开销很小(相同的字段基本上都只有一处)
3. 可以进行Join等复杂查询
其中能够保持数据的一致性是关系型数据库的最大优势。
关系型数据库的不足:
不擅长的处理
1. 大量数据的写入处理(这点尤为重要)
2. 为有数据更新的表做索引或表结构(schema)变更
3. 字段不固定时应用
4. 对简单查询需要快速返回结果的处理
--大量数据的写入处理
读写集中在一个数据库上让数据库不堪重负,大部分网站已使用主从复制技术实现读写分离,以提高读写性能和读库的可扩展性。
所以在进行大量数据操作时,会使用数据库主从模式。数据的写入由主数据库负责,数据的读入由从数据库负责,可以比较简单地通过增加从数据库来实现规模化,但是数据的写入却完全没有简单的方法来解决规模化问题。
第一,要想将数据的写入规模化,可以考虑把主数据库从一台增加到两台,作为互相关联复制的二元主数据库使用,确实这样可以把每台主数据库的负荷减少一半,但是更新处理会发生冲突,可能会造成数据的不一致,为了避免这样的问题,需要把对每个表的请求分别分配给合适的主数据库来处理。
第二,可以考虑把数据库分割开来,分别放在不同的数据库服务器上,比如将不同的表放在不同的数据库服务器上,数据库分割可以减少每台数据库服务器上的数据量,以便减少硬盘IO的输入、输出处理,实现内存上的高速处理。但是由于分别存储字不同服务器上的表之间无法进行Join处理,数据库分割的时候就需要预先考虑这些问题,数据库分割之后,如果一定要进行Join处理,就必须要在程序中进行关联,这是非常困难的。
--为有数据更新的表做索引或表结构变更
在使用关系型数据库时,为了加快查询速度需要创建索引,为了增加必要的字段就一定要改变表结构,为了进行这些处理,需要对表进行共享锁定,这期间数据变更、更新、插入、删除等都是无法进行的。如果需要进行一些耗时操作,例如为数据量比较大的表创建索引或是变更其表结构,就需要特别注意,长时间内数据可能无法进行更新。
--字段不固定时的应用
如果字段不固定,利用关系型数据库也是比较困难的,有人会说,需要的时候加个字段就可以了,这样的方法也不是不可以,但在实际运用中每次都进行反复的表结构变更是非常痛苦的。你也可以预先设定大量的预备字段,但这样的话,时间一长很容易弄不清除字段和数据的对应状态,即哪个字段保存有哪些数据。
--对简单查询需要快速返回结果的处理 (这里的“简单”指的是没有复杂的查询条件)
这一点称不上是缺点,但不管怎样,关系型数据库并不擅长对简单的查询快速返回结果,因为关系型数据库是使用专门的sql语言进行数据读取的,它需要对sql与越南进行解析,同时还有对表的锁定和解锁等这样的额外开销,这里并不是说关系型数据库的速度太慢,而只是想告诉大家若希望对简单查询进行高速处理,则没有必要非使用关系型数据库不可。
NoSQL数据库
关系型数据库应用广泛,能进行事务处理和表连接等复杂查询。相对地,NoSQL数据库只应用在特定领域,基本上不进行复杂的处理,但它恰恰弥补了之前所列举的关系型数据库的不足之处。
优点:
易于数据的分散
各个数据之间存在关联是关系型数据库得名的主要原因,为了进行join处理,关系型数据库不得不把数据存储在同一个服务器内,这不利于数据的分散,这也是关系型数据库并不擅长大数据量的写入处理的原因。相反NoSQL数据库原本就不支持Join处理,各个数据都是独立设计的,很容易把数据分散在多个服务器上,故减少了每个服务器上的数据量,即使要处理大量数据的写入,也变得更加容易,数据的读入操作当然也同样容易。
典型的NoSQL数据库
临时性键值存储(memcached、Redis)、永久性键值存储(ROMA、Redis)、面向文档的数据库(MongoDB、CouchDB)、面向列的数据库(Cassandra、HBase)
一、 键值存储
它的数据是以键值的形式存储的,虽然它的速度非常快,但基本上只能通过键的完全一致查询获取数据,根据数据的保存方式可以分为临时性、永久性和两者兼具 三种。
(1)临时性
所谓临时性就是数据有可能丢失,memcached把所有数据都保存在内存中,这样保存和读取的速度非常快,但是当memcached停止时,数据就不存在了。由于数据保存在内存中,所以无法操作超出内存容量的数据,旧数据会丢失。总结来说:
。在内存中保存数据
。可以进行非常快速的保存和读取处理
。数据有可能丢失
(2)永久性
所谓永久性就是数据不会丢失,这里的键值存储是把数据保存在硬盘上,与临时性比起来,由于必然要发生对硬盘的IO操作,所以性能上还是有差距的,但数据不会丢失是它最大的优势。总结来说:
。在硬盘上保存数据
。可以进行非常快速的保存和读取处理(但无法与memcached相比)
。数据不会丢失
(3) 两者兼备
Redis属于这种类型。Redis有些特殊,临时性和永久性兼具。Redis首先把数据保存在内存中,在满足特定条件(默认是 15分钟一次以上,5分钟内10个以上,1分钟内10000个以上的键发生变更)的时候将数据写入到硬盘中,这样既确保了内存中数据的处理速度,又可以通过写入硬盘来保证数据的永久性,这种类型的数据库特别适合处理数组类型的数据。总结来说:
。同时在内存和硬盘上保存数据
。可以进行非常快速的保存和读取处理
。保存在硬盘上的数据不会消失(可以恢复)
。适合于处理数组类型的数据
二、面向文档的数据库
MongoDB、CouchDB属于这种类型,它们属于NoSQL数据库,但与键值存储相异。
(1)不定义表结构
即使不定义表结构,也可以像定义了表结构一样使用,还省去了变更表结构的麻烦。
(2)可以使用复杂的查询条件
跟键值存储不同的是,面向文档的数据库可以通过复杂的查询条件来获取数据,虽然不具备事务处理和Join这些关系型数据库所具有的处理能力,但初次以外的其他处理基本上都能实现。
三、 面向列的数据库
Cassandra、HBae、HyperTable属于这种类型,由于近年来数据量出现爆发性增长,这种类型的NoSQL数据库尤其引入注目。
普通的关系型数据库都是以行为单位来存储数据的,擅长以行为单位的读入处理,比如特定条件数据的获取。因此,关系型数据库也被成为面向行的数据库。相反,面向列的数据库是以列为单位来存储数据的,擅长以列为单位读入数据。
面向列的数据库具有搞扩展性,即使数据增加也不会降低相应的处理速度(特别是写入速度),所以它主要应用于需要处理大量数据的情况。另外,把它作为批处理程序的存储器来对大量数据进行更新也是非常有用的。但由于面向列的数据库跟现行数据库存储的思维方式有很大不同,故应用起来十分困难。
总结:关系型数据库与NoSQL数据库并非对立而是互补的关系,即通常情况下使用关系型数据库,在适合使用NoSQL的时候使用NoSQL数据库,让NoSQL数据库对关系型数据库的不足进行弥补。
目前存储海量数据的技术主要包括NoSQL、分布式文件系统、和传统关系型数据库。随着互联网行业不断的发展,产生的数据量越来越多,并且这些数据的特点是半结构化和非结构化,数据很可能是不精确的,易变的。这样传统关系型数据库就无法发挥它的优势。因此,目前互联网行业偏向于使用NoSQL和分布式文件系统来存储海量数据。
下面介绍下常用的NoSQL和分布式文件系统。
NoSQL
互联网行业常用的NoSQL有:HBase、MongoDB、Couchbase、LevelDB。
HBase是Apache Hadoop的子项目,理论依据为Google论文 Bigtable: A Distributed Storage System for Structured Data开发的。HBase适合存储半结构化或非结构化的数据。HBase的数据模型是稀疏的、分布式的、持久稳固的多维map。HBase也有行和列的概念,这是与RDBMS相同的地方,但却又不同。HBase底层采用HDFS作为文件系统,具有高可靠性、高性能。
MongoDB是一种支持高性能数据存储的开源文档型数据库。支持嵌入式数据模型以减少对数据库系统的I/O、利用索引实现快速查询,并且嵌入式文档和集合也支持索引,它复制能力被称作复制集(replica set),提供了自动的故障迁移和数据冗余。MongoDB的分片策略将数据分布在服务器集群上。
Couchbase这种NoSQL有三个重要的组件:Couchbase服务器、Couchbase Gateway、Couchbase Lite。Couchbase服务器,支持横向扩展,面向文档的数据库,支持键值操作,类似于SQL查询和内置的全文搜索;Couchbase Gateway提供了用于RESTful和流式访问数据的应用层API。Couchbase Lite是一款面向移动设备和“边缘”系统的嵌入式数据库。Couchbase支持千万级海量数据存储
分布式文件系统
如果针对单个大文件,譬如超过100MB的文件,使用NoSQL存储就不适当了。使用分布式文件系统的优势在于,分布式文件系统隔离底层数据存储和分布的细节,展示给用户的是一个统一的逻辑视图。常用的分布式文件系统有Google File System、HDFS、MooseFS、Ceph、GlusterFS、Lustre等。
相比过去打电话、发短信、用彩铃的“老三样”,移动互联网的发展使得人们可以随时随地通过刷微博、看视频、微信聊天、浏览网页、地图导航、网上购物、外卖订餐等,这些业务的海量数据都构建在大规模网络云资源池之上。当14亿中国人把衣食住行搬上移动互联网的同时,也给网络云资源池带来巨大业务挑战。
首先,用户需求动态变化,传统业务流量主要是端到端模式,较为稳定;而互联网流量易受热点内容牵引,数据流量流向复杂和规模多变:比如双十一购物狂潮,电商平台订单创建峰值达到58.3万笔,要求通信网络提供高并发支持;又如优酷春节期间有超过23亿人次上网刷剧、抖音拜年短视频增长超10倍,需要通信网络能够灵活扩充带宽。面对用户动态多变的需求,通信网络需要具备快速洞察和响应用户需求的能力,提供高效、弹性、智能的数据服务。
“随着通信网络管道十倍百倍加粗、节点数从千万级逐渐跃升至百亿千亿级,如何‘接得住、存得下’海量数据,成为网络云资源池建设面临的巨大考验”,李辉表示。一直以来,作为新数据存储首倡者和引领者,浪潮存储携手通信行业用户,不断 探索 提速通信网络云基础设施的各种姿势。
早在2018年,浪潮存储就参与了通信行业基础设施建设,四年内累计交付约5000套存储产品,涵盖全闪存储、高端存储、分布式存储等明星产品。其中在网络云建设中,浪潮存储已连续两年两次中标全球最大的NFV网络云项目,其中在网络云二期建设中,浪潮存储提供数千节点,为上层网元、应用提供高效数据服务。在最新的NFV三期项目中,浪潮存储也已中标。
能够与通信用户在网络云建设中多次握手,背后是浪潮存储的持续技术投入与创新。浪潮存储6年内投入超30亿研发经费,开发了业界首个“多合一”极简架构的浪潮并行融合存储系统。此存储系统能够统筹管理数千个节点,实现性能、容量线性扩展;同时基于浪潮iTurbo智能加速引擎的智能IO均衡、智能资源调度、智能元数据管理等功能,与自研NVMe SSD闪存盘进行系统级别联调优化,让百万级IO均衡落盘且路径更短,将存储系统性能发挥到极致。
“为了确保全球最大规模的网络云正常上线运行,我们联合用户对存储集群展开了长达数月的魔鬼测试”,浪潮存储工程师表示。网络云的IO以虚拟机数据和上层应用数据为主,浪潮按照每个存储集群支持15000台虚机进行配置,分别对单卷随机读写、顺序写、混合读写以及全系统随机读写的IO、带宽、时延等指标进行了360无死角测试,达到了通信用户提出的单卷、系统性能不低于4万和12万IOPS、时延小于3ms的要求,产品成熟度得到了验证。
以通信行业为例,2020年全国移动互联网接入流量1656亿GB,相当于中国14亿人每人消耗118GB数据;其中春节期间,移动互联网更是创下7天消耗36亿GB数据流量的记录,还“捎带”打了548亿分钟电话、发送212亿条短信……海量实时数据洪流,在网络云资源池(NFV)支撑下收放自如,其中分布式存储平台发挥了作用。如此样板工程,其巨大示范及拉动作用不言而喻。
NoSQL,是not only sql,是非关系数据库,不同于oracle等关系数据库。hadoop,是分布式解决方案,即为Mapreduce(计算的)和HDFS(文件系统),使用Hadoop和NoSQL可以构造海量数据解决方案。
什么是NoSQL数据库?从名称“非SQL”或“非关系型”衍生而来,这些数据库不使用类似SQL的查询语言,通常称为结构化存储。这些数据库自1960年就已经存在,但是直到现在一些大公司(例如Google和Facebook)开始使用它们时,这些数据库才流行起来。该数据库最明显的优势是摆脱了一组固定的列、连接和类似SQL的查询语言的限制。有时,NoSQL这个名称也可能表示“不仅仅SQL”,来确保它们可能支持SQL。 NoSQL数据库使用诸如键值、宽列、图形或文档之类的数据结构,并且可以如JSON之类的不同格式存储。