分布式存储技术及应用
分布式存储技术及应用介绍

根据did you know(/)的数据,目前互联网上可访问的信息数量接近1秭= 1百万亿亿 (1024)。
毫无疑问,各个大型网站也都存储着海量的数据,这些海量的数据如何有效存储,是每个大型网站的架构师必须要解决的问题。
分布式存储技术就是为了解决这个问题而发展起来的技术,下面让将会详细介绍这个技术及应用。
分布式存储概念与目前常见的集中式存储技术不同,分布式存储技术并不是将数据存储在某个或多个特定的节点上,而是通过网络使用企业中的每台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散的存储在企业的各个角落。
具体技术及应用:海量的数据按照结构化程度来分,可以大致分为结构化数据,非结构化数据,半结构化数据。
本文接下来将会分别介绍这三种数据如何分布式存储。
结构化数据的存储及应用所谓结构化数据是一种用户定义的数据类型,它包含了一系列的属性,每一个属性都有一个数据类型,存储在关系数据库里,可以用二维表结构来表达实现的数据。
大多数系统都有大量的结构化数据,一般存储在Oracle或MySQL的等的关系型数据库中,当系统规模大到单一节点的数据库无法支撑时,一般有两种方法:垂直扩展与水平扩展。
∙垂直扩展:垂直扩展比较好理解,简单来说就是按照功能切分数据库,将不同功能的数据,存储在不同的数据库中,这样一个大数据库就被切分成多个小数据库,从而达到了数据库的扩展。
一个架构设计良好的应用系统,其总体功能一般肯定是由很多个松耦合的功能模块所组成的,而每一个功能模块所需要的数据对应到数据库中就是一张或多张表。
各个功能模块之间交互越少,越统一,系统的耦合度越低,这样的系统就越容易实现垂直切分。
∙水平扩展:简单来说,可以将数据的水平切分理解为按照数据行来切分,就是将表中的某些行切分到一个数据库中,而另外的某些行又切分到其他的数据库中。
为了能够比较容易地判断各行数据切分到了哪个数据库中,切分总是需要按照某种特定的规则来进行的,如按照某个数字字段的范围,某个时间类型字段的范围,或者某个字段的hash值。
分布式存储及应用场景研究

分布式存储及应用场景研究随着互联网技术的不断发展,大量的数据不断涌入人们的视野,这些数据需求储存与处理,传统的储存与计算方式已经无法满足大数据的需求。
因此,出现了一种新的技术——分布式存储技术。
一、分布式存储技术介绍分布式存储技术,是指将数据分别存储于多个物理节点上,并通过网络连接起来,形成一个虚拟的跨网络存储集群。
由于数据分存于多个节点上,相对传统的存储方式,分布式存储技术能大大提高储存资源的效率,同时还能为用户提供更可靠、灵活的存储服务。
与传统的集中式数据存储方式比较,分布式存储技术有以下优点:1. 高效可靠。
分布式存储技术采用的是多节点的存储方式,即使某一个节点损坏或出现故障,仍然可以保证数据的完整性和可用性。
2. 灵活性强。
分布式存储可以根据实际需求动态调整存储的空间大小,在存储空间不足的情况下,还可以扩展存储节点。
3. 易扩展。
在传统的集中式存储系统中,增加存储容量需要增加物理存储设备,增加存储节点比较麻烦。
而分布式存储系统则可以通过添加节点来实现存储容量的扩展。
二、分布式存储的应用场景1. 大型分布式应用程序分布式存储技术在大型分布式应用程序中得到广泛应用,尤其是在互联网技术领域。
例如,搜索引擎页面缓存、大量数据的在线分析和处理、电商网站的日志记录等。
2. 云计算分布式存储技术是云计算的核心技术之一,它可以用于云存储和云计算平台的实现。
目前,云存储和云计算已成为互联网的主流趋势,尤其是在数据的存储、备份和恢复、以及数据处理等方面。
3. 大数据场景随着大数据技术的不断发展,分布式存储技术也越来越得到广泛的应用。
目前,大数据技术已应用于几乎所有行业中,例如科研、金融、医疗、教育等。
在大数据场景中,需要处理的数据量非常庞大,并且需要快速高效的处理,分布式存储技术能够在较短的时间内完成数据的读写操作,大大提高了数据的处理效率。
三、分布式存储的挑战1. 网络传输带宽要求高。
分布式存储系统需要采用高速的网络传输技术,保证节点之间的数据传输速度比较快,这对网络传输带宽提出了较高要求。
分布式存储技术及其应用

分布式存储技术及其应用一、引言分布式存储技术在当今互联网时代得到了广泛的应用,最初应用于大型网站、互联网公司及数据中心等领域。
它是一种新型的存储技术,相比于传统的集中式存储技术有着很大的优势。
本文将分别从分布式存储技术的概念,技术特点,分类以及应用领域等方面进行深入浅出的介绍。
二、分布式存储技术的概念分布式存储技术是将数据分散存储在多个节点上的一种技术。
与传统的集中式存储技术相比,它的优势在于可以实现数据的高可用性、高可靠性以及横向扩展等功能。
当其中某个节点崩溃后,系统仍然可以继续运行,这种弹性不仅可以提高数据存储的可靠性,还能够大大提高系统的性能与可扩展性。
三、分布式存储技术的技术特点1. 高可用性:分布式存储技术可以实现数据的镜像备份,即将数据同时存储在多个节点上,一旦其中某一个节点发生故障,系统也可以从其他节点上恢复数据存储。
2. 高可靠性:分布式存储技术可以利用多个节点进行数据的存储和备份,从而实现数据的冗余存储,一旦其中某一个节点出现故障,系统可以从其他节点上恢复数据,从而保证数据的完整性和安全性。
3. 弹性扩展:随着数据量的不断增加,分布式存储技术可以根据实际情况增加节点数,实现数据的“横向扩展”,从而提高系统的可扩展性。
4. 高数据处理能力:分布式存储技术可以将数据分散存储在多个节点上,每个节点都具有数据处理的能力,可以通过负载均衡技术,将数据均匀分配到各个节点上并行处理,从而提高系统的处理能力。
四、分布式存储技术的分类1. 文件系统:Infiniband、Interconnect、GPFS等,具有高效率、可扩展性强等优点。
2. 分布式对象存储:Ceph、Swift、HDFS等,多用于云存储和大规模数据中心。
3. 分布式块存储:Gluster、DRBD等,常见于虚拟化环境中。
五、分布式存储技术的应用领域1. 互联网公司:分布式存储技术可以为互联网公司提供海量的数据存储,快速响应和高可靠性的服务支持;2. 科研领域:分布式存储技术可以为科研领域提供高效的分布式计算服务,支持海量数据分析和处理;3. 视频监控领域:分布式存储技术可以为视频监控领域提供高可靠性的数据存储和备份支持,以及快速的数据检索和回放服务。
大数据的分布式存储和计算技术

大数据的分布式存储和计算技术在信息时代,数据被视为一种新的资源,具有巨大的商业价值和战略意义,尤其是互联网时代的数据爆炸,让大数据成为了此时此刻最为热门的话题。
面对海量数据,如何存储和分析这些数据一直是个难题,直到分布式存储和计算技术的出现。
本文将阐述大数据的分布式存储和计算技术的重要性,相关技术原理及应用场景。
一、分布式存储技术分布式存储技术(Distributed Storage)是指利用计算机网络将数据存储在多个独立的节点上,使得多个节点具有相互协同的能力,形成数据存储系统。
这样的存储系统不仅能够保证数据的容错性和可用性,还能够提高系统的可扩展性和吞吐量,使得大量数据能够得以存储和处理。
分布式存储技术是众多大数据技术中的重要一环,它可以有效地解决大规模数据存储和管理问题。
目前常见的分布式存储系统有HDFS、Ceph、GlusterFS等,其中HDFS是Apache Hadoop项目中的分布式文件系统,是目前使用最为广泛的分布式存储技术之一。
在HDFS中,文件会被拆分成若干个小文件块,然后存储在不同的节点上。
每个文件块都会有多个副本进行备份,以保证数据的可靠性。
通过这种方式,HDFS不仅可以解决大规模存储的问题,还能够提供高可用、高并发和数据安全等保障措施。
二、分布式计算技术分布式计算技术(Distributed Computing)是指将整个计算任务分布到多个节点上进行处理,从而实现对海量数据的高速计算和分析。
分布式计算技术还分为两种方式:1.基于网络通信的分布式计算,如Map Reduce、Spark等;2.基于共享内存的分布式计算,如MPI等。
基于网络通信的分布式计算技术可以分布式地执行计算任务,提升计算效率和数据处理能力。
目前最流行的两个分布式计算框架是Apache Hadoop和Apache Spark,两者之间各有优点。
Hadoop基于Map-Reduce框架,可以高效地处理大量的数据切片,具有良好的数据处理性能。
分布式存储 面试 八股文

分布式存储面试八股文引言概述:分布式存储是当今互联网技术领域的热门话题之一,它通过将数据分散存储在多个节点上,提高了数据的可靠性和可扩展性。
在分布式存储领域,面试官通常会问到一些八股文问题,本文将从五个大点出发,详细阐述这些问题的答案。
正文内容:1. 分布式存储的概念和原理1.1 分布式存储的定义:分布式存储是一种将数据分散存储在多个节点上的技术,通过将数据切分成多个片段存储在不同节点上,提高了数据的可靠性和可扩展性。
1.2 分布式存储的原理:分布式存储系统通常由多个节点组成,每个节点都有自己的存储空间。
数据被切分成多个片段,并分别存储在不同的节点上。
通过数据的冗余备份和数据分片的方式,保证了数据的可靠性和可用性。
2. 分布式存储的优势和挑战2.1 优势:2.1.1 可靠性:由于数据被冗余备份,即使某个节点发生故障,数据仍然可用。
2.1.2 可扩展性:分布式存储系统可以根据需要增加节点,以满足不断增长的存储需求。
2.1.3 高性能:分布式存储系统可以通过并行处理和负载均衡来提高读写性能。
2.2 挑战:2.2.1 一致性:由于数据分布在多个节点上,如何保证数据的一致性是一个挑战。
2.2.2 数据迁移:当节点需要增加或减少时,如何进行数据的迁移也是一个挑战。
2.2.3 安全性:分布式存储系统需要保护数据的安全性,防止数据泄露或被篡改。
3. 分布式存储的常见技术和应用3.1 常见技术:3.1.1 分布式文件系统:如Hadoop的HDFS,可以将大文件切分成多个块,并分散存储在集群中的不同节点上。
3.1.2 分布式数据库:如Google的Bigtable,可以将数据切分成多个表,并分别存储在不同的节点上。
3.2 应用:3.2.1 云存储:将数据存储在云端,用户可以通过网络随时访问和管理数据。
3.2.2 大数据分析:分布式存储系统可以支持大规模数据的存储和分析,提供高效的数据处理能力。
4. 分布式存储的一致性和容错机制4.1 一致性模型:分布式存储系统通常采用弱一致性模型,如最终一致性,以提高系统的性能和可用性。
云计算——分布式存储

THANKS
感谢观看
云计算——分布式存储
汇报人: 2023-12-14
目录
• 分布式存储概述 • 分布式存储技术原理 • 分布式存储系统架构 • 分布式存储应用场景 • 分布式存储性能优化策略 • 分布式存储安全问题及解决方案
01
分布式存储概述
定义与特点
定义
分布式存储是一种数据存储技术,它通过将数据分散到多个独立的节点上,以 实现数据的分布式存储和访问。
云计算平台建设
01
02
03
云存储服务
分布式存储作为云计算平 台的核心组件,提供高效 、可扩展的存储服务。
云服务集成
与其他云服务(如计算、 网络、安全等)紧密集成 ,形成完整的云计算解决 方案。
自动化运维与管理
通过自动化工具实现分布 式存储系统的运维和管理 ,提高效率。
物联网数据存储与处理
实时数据采集
现状
目前,分布式存储技术已经成为了云计算领域的重要组成部 分,各大云服务提供商都提供了基于分布式存储的云存储服 务。同时,随着技术的不断发展,分布式存储的性能和稳定 性也在不断提高。
优势与挑战
优势
分布式存储具有高性能、高可用性、安全性、容错性和可维护性等优势,它可以 提供更加高效、灵活和可靠的数据存储服务,同时还可以提供更加灵活的扩展能 力,以满足不断增长的数据存储需求。
支持物联网设备实时采集 数据,并存储在分布式存 储系统中。
数据处理与分析
对物联网数据进行处理和 分析,提取有价值的信息 。
智能决策与控制
基于物联网数据分析结果 ,实现智能决策和控制, 提高生产效率。
05
分布式存储性能优化策略
数据压缩与解压缩技术
dds使用场景

dds使用场景DDS(分布式数据存储)使用场景DDS(Distributed Data Storage)是一种分布式数据存储技术,广泛应用于各种场景中。
本文将介绍DDS的使用场景,包括金融领域、物联网、大数据分析等。
一、金融领域在金融领域,DDS被广泛应用于交易数据的存储和分析。
金融市场的交易数据量庞大,对实时性和可靠性要求极高。
DDS通过将数据分布式存储在多个节点上,提供高速的读写能力和高可用性,保证了交易数据的安全性和一致性。
同时,DDS还能够对交易数据进行实时分析,帮助金融机构进行风险控制和决策支持。
二、物联网在物联网应用中,DDS被用来存储和管理海量的传感器数据。
物联网设备通常分布在不同的地理位置,产生的数据量巨大且具有高实时性要求。
DDS通过将数据分布式存储在边缘节点上,实现了数据的高效采集、存储和传输。
同时,DDS还支持多种通信协议,能够与各种物联网设备进行无缝集成,提供灵活的数据存储和访问能力。
三、大数据分析在大数据分析场景中,DDS被用来存储和处理海量的结构化和非结构化数据。
大数据分析需要处理不同来源、不同格式的数据,而DDS能够提供高度可扩展的存储能力和强大的数据处理能力。
DDS 支持多种查询语言和分布式计算框架,能够快速地进行数据查询和分析,帮助企业发现潜在的商业机会和优化业务流程。
四、医疗健康在医疗健康领域,DDS被广泛应用于医疗数据的存储和共享。
医疗数据通常包括患者的病历、影像数据、实时监测数据等。
DDS通过将医疗数据分布式存储在多个医疗机构之间,实现了数据的安全共享和远程访问。
同时,DDS还支持数据的实时更新和同步,保证了医疗数据的准确性和一致性,提高了医疗诊断和治疗的效率。
五、智能交通在智能交通领域,DDS被用来存储和传输交通数据。
智能交通系统需要实时采集和处理交通流量、车辆位置等数据,以提供实时的路况信息和交通管理。
DDS通过将交通数据分布式存储在不同的交通节点上,实现了数据的高效采集和传输。
区块链知识:区块链中的分布式存储技术与应用

区块链知识:区块链中的分布式存储技术与应用区块链技术中的分布式存储技术是其中的关键要素之一,区块链的分布式存储技术可以帮助实现去中心化网络存储,提高数据安全性和可靠性,同时也为区块链提供了广泛的应用场景.一、区块链分布式存储技术概念分布式存储是指将大量数据均匀的分散存储在不同的节点上,节点之间互相备份,以此来提高数据的可靠性和安全性。
区块链中的分布式存储技术是指将区块链数据分散存储在网络中的全节点上,每个节点都有完整的数据备份、验证和更新,以此来实现去中心化和去信任中心化的数据共享。
在传统的中心化数据存储架构中,用户需要将数据存储在云服务器或数据中心这样的中心节点上,但是中心节点是数据安全和可靠性的瓶颈,一旦中心节点被攻击或者故障,所有数据都会面临失去或损坏的风险。
而在区块链的分布式存储架构中,数据是分布在网络中的多个节点上,只要其中的一个节点存在,就能读取到数据,这种去中心化的分布式存储架构能够大大提高数据的安全性和可靠性。
二、区块链分布式存储技术的特点1.去中心化的存储结构:区块链存储在整个网络的节点上,每个节点都有完整的数据备份、验证和更新。
去中心化的存储结构可以有效地避免因为中心节点故障、数据丢失或损坏的问题。
2.数据的公开透明:区块链的公开透明性是其最重要的特点之一,用户只需要通过网络就能查看和验证区块链中的数据,这也就是为什么区块链技术被广泛用于交易、投票结果等领域的原因之一。
3.安全性高:区块链中的数据是使用非对称加密技术加密的,只有私钥相关联的公钥才能够解密数据,这样的设计可以大大提高区块链数据在传输和存储过程中的安全性。
4.数据不可篡改:区块链中的数据是被记录在不可篡改的区块链中,每个区块都与前面的区块链接在一起,每个区块都有一个特定的哈希值,这个哈希值代表了整个区块中数据的唯一性,在数据连续的情况下,区块链上的数据不可篡改。
三、区块链分布式存储技术的应用场景1.金融、交易领域:区块链技术可以用于交易和金融领域的去中心化数字货币,比如比特币、以太币等数字货币,最近出现的一些囊括区块链和金融的应用也在尝试利用区块链的分布式存储技术来构建更为可靠和安全的金融交易系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分布式存储技术及应用根据did you know()的数据,目前互联网上可访问的信息数量接近1秭= 1百万亿亿(1024)。
毫无疑问,各个大型网站也都存储着海量的数据,这些海量的数据如何有效存储,是每个大型网站的架构师必须要解决的问题。
分布式存储技术就是为了解决这个问题而发展起来的技术,下面让将会详细介绍这个技术及应用。
分布式存储概念与目前常见的集中式存储技术不同,分布式存储技术并不是将数据存储在某个或多个特定的节点上,而是通过网络使用企业中的每台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散的存储在企业的各个角落。
具体技术及应用:海量的数据按照结构化程度来分,可以大致分为结构化数据,非结构化数据,半结构化数据。
本文接下来将会分别介绍这三种数据如何分布式存储。
结构化数据的存储及应用所谓结构化数据是一种用户定义的数据类型,它包含了一系列的属性,每一个属性都有一个数据类型,存储在关系数据库里,可以用二维表结构来表达实现的数据。
大多数系统都有大量的结构化数据,一般存储在Oracle或MySQL的等的关系型数据库中,当系统规模大到单一节点的数据库无法支撑时,一般有两种方法:垂直扩展与水平扩展。
•垂直扩展:垂直扩展比较好理解,简单来说就是按照功能切分数据库,将不同功能的数据,存储在不同的数据库中,这样一个大数据库就被切分成多个小数据库,从而达到了数据库的扩展。
一个架构设计良好的应用系统,其总体功能一般肯定是由很多个松耦合的功能模块所组成的,而每一个功能模块所需要的数据对应到数据库中就是一张或多张表。
各个功能模块之间交互越少,越统一,系统的耦合度越低,这样的系统就越容易实现垂直切分。
•水平扩展:简单来说,可以将数据的水平切分理解为按照数据行来切分,就是将表中的某些行切分到一个数据库中,而另外的某些行又切分到其他的数据库中。
为了能够比较容易地判断各行数据切分到了哪个数据库中,切分总是需要按照某种特定的规则来进行的,如按照某个数字字段的范围,某个时间类型字段的范围,或者某个字段的hash值。
垂直扩展与水平扩展各有优缺点,一般一个大型系统会将水平与垂直扩展结合使用。
实际应用:图1是为核高基项目设计的结构化数据分布式存储的架构图。
图1可水平&垂直切分扩展的数据访问框架•采用了独立的分布式数据访问层,后端分布式数据库集群对前端应用透明。
•集成了Memcached集群,减少对后端数据库的访问,提高数据的查询效率。
•同时支持垂直及水平两种扩展方式。
•基于全局唯一性主键范围的切分方式,减轻了后续维护的工作量。
•全局唯一性主键的生成采用DRBD+Heartbeat技术保证了可靠性。
•利用MySQL Replication技术实现高可用的架构。
注:以上的数据切分方案并不是唯一扩展MySql的方法,有兴趣的读者可以关注一下”云计算时代的MySQL-Clustrix Sierra分布式数据库系统”。
非结构化数据的存储及应用相对于结构化数据而言,不方便用数据库二维逻辑表来表现的数据即称为非结构化数据,包括所有格式的办公文档、文本、图片、XML、HTML、各类报表、图像和音频/视频信息等等。
分布式文件系统是实现非结构化数据存储的主要技术,说到分布式文件系统就不得不提GFS (全称为"Google "),GFS的系统架构图如下图所示。
图2 Google-架构图图3 Google-架构图(详细)GFS将整个系统分为三类角色:Client(客户端)、Master(主服务器)、Chunk Server(数据块服务器)。
•Client(客户端):是GFS提供给应用程序的访问接口,它是一组专用接口,不遵守POSIX规范,以库文件的形式提供。
应用程序直接调用这些库函数,并与该库链接在一起。
•Master(主服务器):是GFS的管理节点,主要存储与数据文件相关的元数据,而不是Chunk(数据块)。
元数据包括:命名空间(Name Space),也就是整个文件系统的目录结构,一个能将64位标签映射到数据块的位置及其组成文件的表格,Chunk副本位置信息和哪个进程正在读写特定的数据块等。
还有Master节点会周期性地接收从每个Chunk节点来的更新("Heart- beat")来让元数据保持最新状态。
•Chunk Server(数据块服务器):负责具体的存储工作,用来存储Chunk。
GFS将文件按照固定大小进行分块,默认是64MB,每一块称为一个Chunk(数据块),每一个Chunk以Block为单位进行划分,大小为64KB,每个Chunk有一个唯一的64位标签。
GFS采用副本的方式实现容错,每一个Chunk有多个存储副本(默认为三个)。
Chunk Server的个数可有有多个,它的数目直接决定了GFS的规模。
GFS之所以重要的原因在于,在Google公布了GFS论文之后,许多开源组织基于GFS的论文开发了各自的分布式文件系统,其中比较知名的有HDFS,MooseFS,MogileFS等。
实际应用:由于核高基的项目中未来会有大量的数据与应用需要存储,所以我们设计时也采用分布式文件系统的方案,由于开源的分布式文件系统可以基本满足我们需求,另外从时间上来说也比较紧张,所以我们采用了开源的MooseFS作为底层的分布式文件系统。
•MooseFS存在的问题:由于MooseFS是也是按照GFS论文设计的,只有一个Master (主服务器),虽然可以增加一个备份的日志服务器,但是还是存在Master无法扩展的问题,当单一Master节点上存储的元数据越来越多的时候,Master节点占用的内存会越来越多,直到达到服务器的内存上限,所以单一Master节点存在内存上的瓶颈,只能存储有限的数据,可扩展性差,并且不稳定。
•对MooseFS的优化:面对MooseFS存在的问题,我们采用了类似分布式数据库中的“Sharding”技术,设计了一个分布式文件系统访问框架,可以做到对分布式文件系统做垂直与水平切分。
这样就最大限度的保证了MooseFS系统的可扩展性与稳定性。
下图是为核高基项目设计的非结构化数据分布式存储的架构图。
我们设计了两种访问方式,一种是类似GFS的API访问方式,以库文件的方式提供,应用程序通过调用API直接访问分布式文件系统。
第二种是通过RESTful web Service访问。
图4可水平&垂直切分扩展的分布式文件系统访问框架(API版)图5可水平&垂直切分扩展的分布式文件系统访问框架(RESTful web Service版)半结构化数据的存储及应用就是介于完全结构化数据(如关系型数据库、面向对象数据库中的数据)和完全无结构的数据(如声音、图像文件等)之间的数据,半结构化数据模型具有一定的结构性,但较之传统的关系和面向对象的模型更为灵活。
半结构数据模型完全不基于传统数据库模式的严格概念,这些模型中的数据都是自描述的。
由于半结构化数据没有严格的schema定义,所以不适合用传统的关系型数据库进行存储,适合存储这类数据的数据库被称作“NoSQL”数据库。
NoSQL的定义:被称作下一代的数据库,具有非关系型,分布式,轻量级,支持水平扩展且一般不保证遵循ACID原则的数据储存系统。
“NoSQL”其实是具有误导性的别名,称作Non Relational Database(非关系型数据库)更为恰当。
所谓“非关系型数据库”指的是:•使用松耦合类型、可扩展的数据模式来对数据进行逻辑建模(Map,列,文档,图表等),而不是使用固定的关系模式元组来构建数据模型。
•以遵循于CAP定理(能保证在一致性,可用性和分区容忍性三者中中达到任意两个)的跨多节点数据分布模型而设计,支持水平伸缩。
这意味着对于多数据中心和动态供应(在生产集群中透明地加入/删除节点)的必要支持,也即弹性(Elasticity)。
•拥有在磁盘或内存中,或者在这两者中都有的,对数据持久化的能力,有时候还可以使用可热插拔的定制存储。
•支持多种的‘Non-SQL’接口(通常多于一种)来进行数据访问。
图6是Sourav Mazumder提出的NoSQL总体架构:图6 NoSQL总体架构•接口:REST (HBase,CouchDB,Riak等),MapReduce (HBase,CouchDB,MongoDB,Hypertable等),Get/Put (Voldemort,Scalaris等),Thrift (HBase,Hypertable,Cassandra等),语言特定的API(MongoDB)。
•逻辑数据模型:面向键值对的(Voldemort,Dynomite 等),面向Column Family的(BigTable,HBase,Hypertable 等),面向文档的(Couch DB,MongoDB等),面向图的(Neo4j, Infogrid等)•数据分布模型:致性和可用性(HBase,Hypertable, MongoDB等),可用性和可分区性(Cassandra等)。
一致性和可分区性的组合会导致一些非额定的节点产生可用性的损失。
有趣的是目前还没有一个“非关系型数据库”支持这一组合。
•数据持久性:基于内存的(如Redis,Scalaris, Terrastore),基于磁盘的(如MongoDB,Riak等),或内存及磁盘二者的结合(如 HBase,Hypertable,Cassandra)。
存储的类型有助于我们辨别该解决方案适用于哪种类型。
然而,在大多数情况下人们发现基于组合方案的解决方案是最佳的选择。
既能通过内存数据存储支持高性能,又能在写入足够多的数据后存储到磁盘来保证持续性。
NoSQL中的重要理论基础:CAP理论:•C: Consistency 一致性•A: Availability 可用性(指的是快速获取数据)•P: Tolerance of network Partition 分区容忍性(分布式)图7 CAP理论CAP原理告诉我们,这三个因素最多只能满足两个,不可能三者兼顾。
对于分布式系统来说,分区容错是基本要求,所以必然要放弃一致性。
对于大型网站来说,分区容错和可用性的要求更高,所以一般都会选择适当放弃一致性。
对应CAP理论,NoSQL追求的是AP,而传统数据库追求的是CA,这也可以解释为什么传统数据库的扩展能力有限的原因。
BASE模型:说起来很有趣,BASE的英文意义是碱,而ACID是酸。
真的是水火不容啊。
•Basically Availble –基本可用•Soft-state –软状态/柔性事务•Eventual Consistency –最终一致性BASE模型是传统ACID模型的反面,不同于ACID模型,BASE强调牺牲高一致性,从而获得可用性或可靠性。