- 浏览: 109865 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
onecan:
分析的很好
大型网站系统架构分析 -
ruanwxh:
为什么我用oracle的例子会出现下面的情况
编绎触发器没错 ...
Oracle触发器介绍 -
lauphai:
不错,拜读了!!!
大型网站系统架构分析 -
shinelgz:
Oracle触发器介绍 -
shinelgz:
Oracle触发器介绍
在过去几年,一种新兴的大型数据存储机制正吞噬大数据存储市场。这种存储 解决方案与传统的RDBMS有显著的区别,它们被称之为NoSQL。
在NoSQL世界中有以下关键的成员,包括
●Google BigTable、HBase、Hypertable
●Amazon Dynamo、Voldemort、Cassendra、Riak
●Redis
●CouchDB、MongoDB
而这些解决方案又有一些共同的特点
●基于键-值存储
●系统运行在海量的普通机器上
●数据在经过分区和复制后分布在集群中
●放宽对数据一致性的要求(因为CAP定理)。
选择NoSQL的重要标准就是要看CAP(Consistency、 Availability和Partition Tolerance),也就是我们所说的一致性、可用性和分区容忍性。但CAP原则要求在分布式系统只能选择一致性、可用性和分区容忍性其中的两项。
本文旨在提取这些解决方案背后的共同的技术,以便更深入的了解应用程序设 计的意义。本文并不会对这些解决方案作比较,也不会建议使用某一款产品。
API模型
底层的数据模型可以被看作为一个大的Hashtable(键/值存储)
API访问基本形式:
get(key):提取给定键的对应值
put(key,value) :新建或更新给定键的对应值
delete(key):删除键及其关联值
在服务器环境利用更高级的API执行用户自定义的函数
execute(key, operation, parameters) :调用操作给定键对应的值,值具有特殊数据(例如List、Set、Map等)
mapreduce(keyList, mapFunc, reduceFunc) :对范围内的键调用MapReduce
机器布局
底层基础设施由大量(成百上千)廉价的、普通的、不可靠的机器通过网络组 成。每台机器为一个单独的物理节点(PN)。在每个PN软件配置相同,但CPU、内存、硬盘等会有所不同。每个PN根据不同的硬件配置运行不同数目的虚拟 节点。
数据分区
由于整个Hashtable分布在众多VN之中,我们需要一种能够将每个 键映射到对应VN的方法。一种行之有效的方法是:partition = key mod (total_VNs)。这种方案的缺点是当我们改变VN的数量时,现有键的所有权将发生巨大的变化,这导致全部的数据需要重新再分配。所以多数大型存储 使用被称为“consistent hashing”的技术将键所有权变更的影响最小化。
在“consistent hashing”方法中,键空间是有限的,且分布在一个环上。虚拟节点的ID也从相同的键空间中分配。对于任意键,如果从该键沿着环 顺时针移动,遇到了第一个虚拟节点就是它的所属节点。当某一节点崩溃时,他所属的所有键都将顺时针的移动到相邻的节点。因此,重新分配键的情况只发生在崩 溃节点的相邻节点中,而所有其他的节点仍保持原有的键值。
数据复制
为了从单个并不可靠的资源来提供更高的可靠性,迫使我们需要复制数据分 区。
复制不仅提高了数据的可靠性,同时将工作负载分布到多个副本还有助于提升 性能。
只读请求可以分发到任何副本,而更新的要求却具有挑战性。因为需要任职协 调各个副本的更新。
成员变动
请注意,虚拟节点可以随时加入和离开而不影响环的运作网络。
当心节点加入到网络
1.新加入的节点将示意自身的存在,并将其ID通知其他重要的节点。
2.所有相邻(左边或右边)节点将调整键的所有权以及副本成员的信息,这 将通过同步完成。
3.新加入的节点开始从其相邻的节点并行、异步的批量复制数据。
4.副本成员的变更异步传播到其他节点
当现有节点脱离网络时(例如崩溃)
1.崩溃的节点不再回应Gossip消息,因此相邻的节点也会得知此情 况。
2.相邻节点更新成员信息,同时异步复制数据。
客户端的一致性
一旦我们拥有相同数据的多个副本,就必须考虑如何同步他们,这样在客户端 看来数据才能使一致的。
1.严格的一致性:从语义上看相当只存在一个数据副本,任何更新看上去都 是实时发生的。
2.读取已写内容的一致性:允许客户端立刻看到自身所做的更新,但无法看 到其他客户端的更新
3.会话一致性:对于客户端在同一会话作用域发出的请求,提供读取已写内 容一致性。
4.单调读一致性:保证时间的单调性,保证客户端在未来的请求中只读区比 当前更新的数据。
5.最终一致性:提供最低限度的保证。在更新过程中客户端将看到不一致的 视图。当并发访问同一数据几率非常小的时候,此模型效果可以得到保证。
同时取决采用何种一致性模型需要安排两种机制
●客户端请求如何让分发到副本
●副本如何传播以及应用更新
围绕着如何实现这两方面。出现了许多模型,各有不同的权衡取舍。
矢量时钟
矢量时钟是一种时间戳机制,透过矢量时钟我们可以推到更新之前的因果关 系。首先,每个副本都持有矢量时钟。假设副本i的时钟是Vi。Vi[i]是副本根据特定规则更新矢量时钟之后的逻辑时钟。
●当副本i执行了一则内部操作,副本i的时钟加1。
●当副本i向副本j发送一则消息,副本i首先把自己的时钟Vi[i]加 1,并将自己的矢量时钟Vi附加到消息中发送出去。
●当副本j收到来自副本i的消息,首先自增其时钟Vj[j],然后合并其 时钟及消息所附的时钟Vm。即Vj[k] = max (Vj[k], Vm[k])。
于是可以定义偏序关系,Vi > Vj,当且仅当对于所有的k,Vi[k] >= Vj[k]。根据这样的偏序关系,我们就可以推导出更新之间的因果关系。其背后原理如下
●内部操作的效果可在同一节点上立即看到。
●接到消息之后,接收节点得知发送节点在消息发送之时的情况。情况不仅包 括发送节点上发生的事情,还包括发送节点所知的所有其他节点上发生的事情。
●Vi[i]反映了节点i上发生最后一次内部操作的时间。Vi[k] = 6意味着副本i已经知道副本k在他的逻辑时钟6时刻的情况。
MapReduce的执行过程
分布式存储架构同样适合分布式的处理,例如对一个键列表执行 Map/Reduce操作情况。
系统将Map和Reduce函数推送给全部的节点。Map函数分布到键所 属的各个副本上处理,然后Map函数的输出被转交给Reduce函数去执行聚合操作。
对删除的处理
在多主复制系统中,用矢量时钟时间戳去判定因果序,需要非常小心处理 “删除”的情况。以免丢失掉删除对象关联的时间戳信息,否则根本无法推到何时执行删除。因此,通常需要将删除当 作一种特殊的更新来处理,把对象标记为删除,但仍然保留元数据、时间戳信息。当经过足够长的时间,并确信所有节点都已经对该对象标记为删除之后,才能通过 垃圾回收已删除对象的空间。(Шевченко/编译)
原文链接:DZone.com
发表评论
-
前端开发框架三剑客—AngularJS VS. Backone.js VS.Ember.js
2014-08-28 09:13 1237摘要:透过对Github,S ... -
101 个 MySQL 的调节和优化的提示
2014-06-11 13:53 797MySQL是一个功能强大的开源数据库。随着越来越多的数据库 ... -
GitHub上最火的74个Android开源项目
2014-03-05 14:28 2159GitHub在中国的火爆程 ... -
Oracle中的隔离级别
2012-05-07 11:12 769隔离级别(isolation level) ... -
Spring的五个事务隔离级别和七个事务传播行为
2012-05-07 11:09 1460数据库提供了四种事务隔离级别,不同的隔离级别采用不同的锁类开来 ... -
.NET开发者必备的11款免费工具
2012-04-20 11:47 1001如今,HTML5,jQuery,JavaScript等等 ... -
大数据从业者市场现状:薪酬持续增长 人才缺口巨大
2012-04-09 18:20 1153在大数据时代,企业之间正在为了吸引并留住商业智能和信 ... -
11个面向文档的开源NoSQL数据库
2011-12-07 12:13 9291.MongoDB是一个介于关 ... -
SQL Server,Oracle,DB2数据库SQL语句比较
2011-11-03 16:37 1278SQL Server,Oracle,DB2数据库SQL语 ... -
Tagged,1亿用户、1000台服务器、50亿PV的优化史
2011-08-21 19:37 1640从诞生到拥有1000台服务器的五个优化步骤 2004年 ... -
标准SQL规范中定义的四个事务隔离级别
2011-08-17 10:25 1216在标准sql规范中,定义了4个事务隔离级别,不同 ... -
20+ 个很棒的 jQuery 文件上传插件或教程
2011-08-04 17:16 3006文件上传是网站很常见的功能之一,通过使用 jQuery 可 ... -
SQL 左外连接,右外连接,全连接,内连接
2011-02-23 15:32 814联接条件可在 FROM 或 WHERE 子句中 ... -
Java 日志记录 log4j 最简明教程
2009-12-04 16:09 1792最近在搞一个项目架设 ... -
log4j.properties文件说明
2009-11-11 09:48 1791log4j.rootLogger=DEBUG,stdout,R ... -
大型网站系统架构分析
2009-07-01 11:16 4879千万级的注册用户,千 ... -
豆瓣网技术架构的发展历程
2009-07-01 09:33 5212不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续 ... -
Hibernate的缓存机制
2009-06-23 17:14 883缓存是位于应用程序与物理数据源之间,用于临时存放复制数据的内存 ... -
使用免安装版本在windows上手动安装PostgreSQL
2009-06-17 22:18 2965PostgreSQL支持管理员直接手动安装数据库,给用户提供 ... -
TOAD常用使用技巧
2009-06-03 11:58 3491找了些简单使用TOAD ...
相关推荐
"8大数据时代的掘金术——数据资产管理探讨"这一主题深入剖析了如何在大数据时代有效地管理和利用这些宝贵的数据资源,实现企业的战略目标。以下是关于大数据时代数据资产管理的一些关键知识点: 1. **大数据定义与...
在大数据技术原理与应用领域中,NoSQL数据库扮演着非常重要的角色。NoSQL数据库是指不遵循传统关系数据库管理系统(RDBMS)的数据库管理系统,主要特点是去中心化、可扩展性强、灵活的数据模型和高性能。 5.1 NoSQL...
大数据应用程序:SQL还是NoSQL?.pdf
《大数据挑战与NoSQL数据库技术》共分为三部分。理论篇重点介绍大数据时代下数据处理的基本理论及相关处理技术,并引入NoSQL数据库;系统篇主要介绍了各种类型NoSQL数据库的基本知识;应用篇对国内外几家知名公司在...
大数据与云计算培训学习资料 NoSQL误用和常见陷阱分析 共29页.pptx
NoSQL是什么? 为什么使用NoSQL? 为什么使用NoSQL? NoSQL的分类 NoSQL有什么特点? NoSQL有什么特点? NoSQL是否完美? NoSQL的一些概念——CAP NoSQL的一些概念——ACID NoSQL的一些概念——BASE NoSQL的一些概念...
分布式NoSQL数据库、分布式文件系统和分布式搜索引擎的结合使用,为档案大数据的存储与检索提供了新的技术方案。分布式NoSQL数据库能够很好地处理半结构化和非结构化数据,这在档案数据中尤为常见,例如XML、JSON、...
大数据存储课程设计实践课程教学大纲是高等教育中针对大数据领域的一项重要教学内容,旨在培养学生的实践能力和理论知识,使他们能够理解和应用大数据存储技术。在这个3页的教学大纲中,可能涵盖了以下关键知识点: ...
云计算为大数据提供了强大的计算能力和存储能力,而物联网则不断产生新的数据源,推动大数据的发展。 Hadoop是大数据处理架构中最为著名的框架之一,它包括一系列开源软件,能够实现高可靠性、高扩展性和高效率的...
在当今的信息化时代,大数据和NoSQL数据库成为了技术领域中的热门话题。这两个概念不仅改变了我们处理数据的方式,也引领了新一代的数据存储与分析潮流。本文将深入探讨Nosql和大数据的相关知识点,帮助读者理解它们...
《大数据挑战与NoSQL数据库技术》一书,由陆嘉恒编著,深入探讨了在当前数据爆炸的时代,如何应对大数据带来的挑战,并介绍了NoSQL数据库技术作为解决方案的重要角色。本书内容丰富,旨在帮助读者理解大数据的特性、...
1. 理论授课:系统讲解大数据存储的理论知识,辅以实例解析。 2. 实验教学:利用云计算平台进行实操,让学生亲身体验大数据存储的流程。 3. 小组讨论:鼓励学生分组讨论,共同解决实际问题。 4. 项目开发:组织学生...
在大数据时代,数据库管理系统(RDBMS)与非关系型数据库(Nosql)扮演着至关重要的角色。这两种数据库系统在处理大规模数据时各有优势,适应不同的业务需求。 首先,RDBMS,即关系型数据库管理系统,是基于关系...