Chubby、BigTable和Megastore

Chubby

Chubby的概念:

Chubby是Google设计的提供粗粒度锁服务的一个文件系统,它基于松耦合分布式系统,解决了分布的一致性问题。

Chubby的用途:

通过使用Chubby的锁服务,用户可以确保数据操作过程中的一致性。

BigTable

Bigtable是Google开发的基于GFS和Chubby的分布式存储系统

Google的很多数据,包括Web索引、卫星图像数据等在内的海量结构化和半结构化数据,都存储在Bigtable中。(BigTable既能存储结构化数据又能存储半结构化数据)从实现上看,Bigtable并没有什么全新的技术,但是如何选择合适的技术并将这些技术高效、巧妙地结合在一起恰恰是最大的难点。Bigtable在很多方面和数据库类似,但它并不是真正意义上的数据库。(所以说BigTable算是一个组合器,它有效地组合了其他数据库和Google本身的技术的优点)

Megastore

Megastore的定义

Megastore是Google设计和构建用于互联网中交互式服务的分布式存储系统。

Megastore的设计目标

设计一种介于传统关系型数据库和NoSQL之间的存储技术,尽可能达到高可用性和高扩展性的统一。

Megastore的方案选择

可用性:针对可用性的要求,实现了一个同步的、容错的、适合远距离传输的复制机制。
可扩展性:针对可扩展性的要求,将整个大的数据分割成很多小的数据分区,每个数据分区连同它自身的日志存放在Bigtable中。

Megastore数据模型设计

Google团队设计了一种能够提供细粒度控制的数据模型和模式(schema)语言。Megastore中关系型数据库的特征就集中体现在这种数据模型。
同关系型数据库一样,
(1)Megastore的数据模型是在模式中定义的且是强类型的。
(2)每个模式由一系列表构成。
(3)表中又包含一系列实体。
(4)每个实体又包含一系列的属性。
(5)属性是命名的且具有类型。

Megastore的三种读取方式

Megastore提供了三种方式的读,
分别是:current、snapshot和inconsistent。
其中current读和snapshot读总是在单个实体组中完成的。

current读:

在开始某次current读之前,需要确保所有已提交的写操作已经全部生效,然后应用程序再从最后一个成功提交的事务时间戳位置读取数据;

current读取的是最新的数据;

snapshot读:

系统取出已知的最后一个完整提交的事务的时间戳位置,接着从这个位置读数据。

和current读不同的是,snapshot读的时候可能还有部分事务提交了但未生效。

快照为某一时间点,可为最新也可不为最新。

inconsistent读:

忽略日志的状态直接读取最新的值。这对于那些要求低延迟并能容忍数据过期或不完整的读操作是非常有用的。

会出现数据不一致的现象。

附:

NoSql的优缺点


优点:
Cheap(低成本)
Scalable(高可扩展性)
Handle large data(处理大数据)

缺点:
Inconsistent APIs(没有国家标准的API)
Lack of complicated queries requires joins/aggregations/filters(没有复杂的查询)
Lack of ACID(缺乏ACID)

全局索引

全局索引则可以横跨多个实体组集进行数据读取操作。

局部索引

局部索引定义在单个实体组中,它的作用域仅限于单个实体组。

发表回复

Breeze Wang

A student majoring in Software Engineering at Central South University has an understanding of software development techniques, software architecture, and is able to use Godot to develop game projects. I am currently in the Game Development Laboratory at Central South University. I have experience participating in Global Game Jam. Loving game development.