常见结构化存储系统架构

什么是结构化存储系统

结构化数据一般指存储在数据库中,具有一定逻辑结构和物理结构的数据,最为常见的是存储在关系数据库中的数据;非结构化数据:一般指结构化数据以外的数据,这些数据不存储在数据库中,而是以各种类型的文本形式存放,其中Web上的一些数据(内嵌于HTML或XML标记中)又具有一定的逻辑结构和物理结构,被称为半结构数据。

目前比较成熟的结构化存储系统有Cassandra、Bigtable、Hadoopdb、Megastore、Dynamo等。

  • 几个较成熟的结构化存储系统

  1. Cassandra

Cassandra是一个分布式的存储系统,可用来管理分布在大量廉价服务器上的巨量结构化数据,并同时提供没有单点故障的高可用服务。Cassandra的设计目的是运行在由几百个节点(可能分布在多个不同的数据中心)组成的基础设施(infrastructure)上。当节点达到这个规模时,大大小小的组件出现故障就可能经常发生了。Cassandra在管理持久状态时面临这些故障,这种情况也驱动软件系统的可靠性(reliability)与可伸缩性(scalability)会依赖于Cassandra的服务。虽然大部分情况,Cassandra看上去像一个数据库系统, 也与数据库系统共享大量的设计与实现手段,但是Cassandra并不支持完整的关系数据模型;相反,它提供了一个简单数据模型的客户端,支持对数据布局与数据格式的动态控制。设计Cassandra的初衷是,可以运行在廉价硬件上,并能在不牺牲读效率的情况下实现高的写吞吐量。

Cassandra系统架构:

一个需要在生产环境运转的存储系统的架构是很复杂的。除了真实的数据持久化组件外,这个系统还需要包含以下特性;可伸缩性与强大负载均衡解决方案、会员与故障检测、故障恢复、副本同步、超负荷处理、状态转移、并发与任务调度、请求编组、请求路由、系统监控与报警以及配置管理。详细描述这里的每一个解决方案超出了本论文的范围,我们将集中介绍Cassandra使用的核心的分布式系统技术:分区、复制、会员、故障处理以及伸缩性。处理读写请求需要所有这些模块的协同处理。通常,一个键的请求可能被路由到Cassandra集群的任何一个节点去处理。这个节点会确定这个特定的键的副本。对于写操作来讲,系统会将请求路由到副本上,并且等待仲裁数量的副本以确认写操作完成。对于读操作来讲,基于客户端要求的一致性保证,系统要么将请求路由到最近的副本,要么将请求路由到所有的副本并等待达到仲裁数量的响应。

2Bigtable

   Bigtable是一个分布式的结构化数据存储系统,它被设计用来处理海量数据:通常是分布在数千台普通服务器上的PB级的数据。Google 的很多项目使用Bigtable存储数据,包括Web索引、Google Earth、Google Finance。这些应用对Bigtable提出的要求差异非常大,无论是在数据量上(从URL到网页到卫星图像)还是在响应速度上(从后端的批量处理到实时数据服务)。尽管应用需求差异很大,但是,针对Google的这些产品,Bigtable还是成功的提供了一个灵活的、高性能的解决方案。

Bigtable数据模型:

 

3Hadoopdb

耶鲁大学的Hadoopdb研究项目挺有意思。这是个并行DBMS(PostgreSQL) 技术和MapReduce的结合的产物。MapReduce是Google提出的一个编程模型,用于进行大规模的数据处理。

Hadoopdb系统架构图:

上图中的 SMS 是 "SQL to MapReduce to SQL" 的缩写。这是 HadoopDB 的一个设计难点。经过了两层转换,对于 SQL 执行的效率多少会是个问题。

4Megastore

Megastore是谷歌一个内部的存储系统,它的底层数据存储依赖Bigtable,也就是基于NoSql实现的,但是和传统的NoSql不同的是,它实现了类似RDBMS的数据模型(便捷性),同时提供数据的强一致性解决方案(同一个datacenter,基于MVCC的事务实现),并且将数据进行细颗粒度的分区(这里的分区是指在同一个datacenter,所有datacenter都有相同的分区数据),然后将数据更新在机房间进行同步复制(这个保证所有datacenter中的数据一致)。

Megastore数据组织:

5Dynamo

Dynamo是面向Amazon自有的电子商务应用的,使用广域分布的大规模集群提供高可靠的对象存储服务,主要存储1M左右甚至更小的内容,如购物车、推荐列表等。由于Dynamo的应用场合,设计上有这么一些“独特”的要求:

高可靠性与高伸缩性。

始终可写,写优先于读。

一致性与写入速度的折衷,不要求同步写入所有副本。

对称、无中心的构架,支持异构节点。

Amazon平台的架构图:

发布了41 篇原创文章 · 获赞 136 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/songguangfan/article/details/88070223