当前课程知识点:高级大数据系统 >  NoSQL >  Bigtable >  Video

返回《高级大数据系统》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《高级大数据系统》慕课在线视频列表

Video课程教案、知识点、字幕

下面我们通过一个具体的

这个实例来介绍nosql

那么这个实力是google的

这个big table

这张图实际上是google

为了纪念他们的这个big table

实际上做的这样一个建筑

那么从中文上

他的意思就是大桌子

对吧

所以我们来看big table

对google它的今天所有的业务

实际上是非常重要的

那么它衍生出来的一些产品

比如说之后的这个spanner

实际上也都是支撑google

所有业务一个重要的基础设施

我们来看这个系统

它到底有哪些特性

它怎么去做的

以及它有什么样的性能上的考虑

BIG TABLE是这个

2008年google公布的

那么通过这篇论文

他们在之前的几年中

对这种系统的探索

然后把这种探索的经验

分享了出来

那么BIG TABLE

实际上它是一个典型的

基于google分布式文件系统的

这样一个大数据的数据库平台

那么我们来看它的一些特性

是怎么样的

首先它面向的这个环境

是一个google典型的

定义的这种分布式系统的

一个环境

系统可能会出现故障

网络可能会出现问题

然后数据可能会丢失

在这样的一个环境底下

他要求做一个

这种nosql的平台

能够保证数据的可用性

能够对抗系统中的

各个模块的失败

能够做到这种失败的容忍度

同时它对于整个系统的

可扩展性有需求

它要能够支持google

当时成千上万台的服务器

它能够支持TB级的

一个内存的一个管理

然后它能够对海量规模的

这个磁盘数据

PB级的进行一个管理

同时

它能够提供一个高性能的

数据的查询

包括数据的读

还有一定量的这种数据的写

同时它这个系统

应该是从实用的角度

是有比较好的

这种可管理性

那么具体体现在这样两方面

第一个nosql

是可以像在传统的

分布式文件系统里面一样

可以添加

可以删除

可以坏掉

不影响整个系统的性能和使用

同时它可以根据

实际上的这种用户的行为

比如说业务的请求的情况

来决定数据在各个服务器上

它的一个分配的方式

以及其它资源的这样一个

预留和分配的方式

达到整体上性能的一个保障

那么我们介绍

big table实际上是

通过几个方面来介绍

第一个方面是

它的这个数据的模型

实际上我们在介绍其他的

分布式系统中也都会非常的关注

它使用的这个数据模型

比如说在分布式文件系统里面

它的数据模型可能是行式的数据

或者是key value的数据

那么在这个spark里面

它的这种数据

可能是RDD的

那么在今天我们说的

这个big table里面

它的这种数据模型

是什么样的呢

我们来看那么它基本上

是想把数据组织成

一个表格的一个样子

那么这个表格有这样的一些属性

首先它有行

那么一行数据实际上就是

我们能够往分布式文件系统里面

插入的一行数据

大家可以这样简单的先去理解

实际上从这个描述上大家也知道

big table其实是基于

这种文件的分布式文件系统

衍生而来的

那么它还有列

实际上行列已经从矩阵的样子上

把这个表格给定义出来了

但它除了行和列之外

它还有一个叫做time stamp

的这样一个新的属性

那么大家可以简单的理解

time stamp是什么呢

time stamp是记录了这个数据

它的一个生成的时间

或者说上一次更新的时间

所以big table

从本质上利用了这样的数据模型

是可以在它的表格中

对历史的版本

对不同时期的数据

进行一个描述

当然这和Google本身的

这个业务是有关的

这是big table

它的这样一个数据的模型

通过行

通过列

通过这个时间戳

把数据给组织到一块

我们来具体来看

它的这个数据模式

首先是行

我们来看它的一个特征是什么样

行它是由一个名字去决定的

来对它进行索引的

那么这个名字可以

是任意的字符串

具有一定的最大长度的限制

那么行实际上是将数据

在这个原始的文件里面

进行索引的这样一个标准

那么它在我们插入了

这一行记录之后

实际上就需要把这一行数据

给放进去

那么在big table的

这个数据的物理的

这种组织上它是按照行的

这种字母的这样一个序

来进行一个排序

当然其他的排序方式也是支持的

那么在Google的业务当中

如果它的行是通过这些url

来组织的话

那么这种字母的序实际上

可以很方便

它来对这些不同的站点

进行一个检索和索引

那么在这个行里面

又会把相邻的一些行组织在一起

形成了big table

它的一个单元

叫做tablet

也就是说若干行

当它达到一定的长度之后

我们把它放到一块

这个行的一个范围

就叫做一个tablet

整个这个big table

实际上就是在

tablet这样一个层面上

进行数据的一个管理

而在tablet里面

会有很多很多的这样的数据行

那么除了行之外

为了在big table里面

实现类似于传统关系数据库里面

这种数据的一个结构

我们还引入了列

大家可以看得到

在我们给出的这个例子当中

实际上行和列

是一个矩阵这样的模式

那么这边我们有行

而这边有不同的这个列

大家可以看到

在这个例子当中实际上是去

介入了网页的一些代码和属性

那么列是怎么样去组织

这里面就会有一些新的概念

实际上google是通过列的

这个family和列的这个qualifier

来对列进行划分的

family实际上大家可以理解它是一个

相对比较大的

一个列上的一个概念

而qualifier是一个细节的

这样一个描述

比如说在我们的这个例子当中

大家可以看到content

它就会产生一个这个family

而这个content底下

它会给你包含很多很多的

这个qualifier

形成不同的这种具体的

一个一个的列

那么我们来看这个列

它具有一些什么样的属性

首先这些列和行一样

它也必须在数据创建

插入的时候

它就需要得到创建

然后它的这个列的

这个family通常来说

允许的这个数量并不会特别多

或者说google big table

建议使用者在创建

列的family的时候

对这个family

有一定的数量的控制

它的这个qualifier却不受限制

你可以通过family底下

创建很多很多的qualifier

达到你任意扩展你的这个列的

这样一个目标

那这是和它系统实现中

这种性能的优化是相关的

那么第三个是time stamp

我们说有行有列有time stamp

实际上我们就可以决定一个数据

在big table的table中

是怎么去放的了

那么

我们来看这个time stamp

它具有一些什么样的这种特性

首先这种time stamp

它的一个最原始的作用

是用来区分不同的版本

那么在google

最开始的业务中

为什么会有这些版本呢

我们以网页为例

实际上

网页并不是一成不变的

大家比如说会去使用的

这些门户网页

或者说其他的一些信息的网页

它们会随着时间的变化

会产生很多的版本

那么google为了

对这些版本进行区分

或者说其他的

这种搜索的这个目的

他们会使用time stamp

来对这些版本进行一个划分

那么通常在真正使用

这个big table的时候

会将这个最新的版本

做一个特别的

这种time stamp的一个标识

而将老版本通过它的版本号

或者是通过它当时更新的时间

来进行一个区分

这是在实际系统中使用的时候

大家会这么去做

那么有了这个time stamp

实际上我们就可以

做很多的特性出来

那这边给了一些例子

比如说可以做这个垃圾的回收

那么我们可以让整个系统

比如说只保留

最新的若干个版本号

那么老的这些数据

可能就可以标记为不用

然后过一段时间之后

会被big table删除掉

或者说通过其他的垃圾回收的

机制把它给删除掉

当然我们还可以除垃圾回收之外

我们还可以让整个系统

保留最新的一些版本

那么这也是达到对系统空间

有效利用的一个方式

高级大数据系统课程列表:

Introduction to Big Data Systems

-What is big data and what is big data system?

--Video

-Problems in big data systems?

--Video

-Overview of the course

--Video

-Principles of big data system design

--Video

Basics of Linux Data Processing

-Manipulating Data on Linux

--Video

--Video

--Video

-Basics of Linux Data Processing--Manipulating Data

-Running Commands on a Single Machine

--Video

-Running Commands on a Single Machine--作业

-Using a Linux Cluster

--Video

-Using a Linux Cluster--作业

Distributed File System

-Storage for Big Data Computing: Distributed file system

--Video

-Storage for Big Data Computing: Distributed file system--作业

-File system and GFS

--Video

-File system and GFS--作业

-Understanding HDFS using Legos

--Video

-Understanding HDFS using Legos--作业

-File System Implementation and DFS

--Video

--Video

-File System Implementation and DFS--作业

MapReduce

-What is MapReduce and why

--Video

-What is MapReduce and why

-Learn MapReduce by playing with cards

--Video

-Processing pattern

--Video

-Processing pattern--作业

-Hadoop

--Video

-Hadoop--作业

-Algorithms in MapReduce

--Video

-Algorithms in MapReduce--作业

-Tutorial

--Video

In-memory Processing

-Background

--Video

-Background--作业

-Spark

--Video

-Spark--作业

-Use Spark for data mining

--Video

-Use Spark for data mining--作业

-Spark data processing

--Video

-Spark data processing--作业

-Experiment in Spark

--Video

-Experiment in Spark--作业

Streaming Data Processing

-Introduction to streaming data processing

--Video

-Introduction to streaming data processing--作业

-Storm

--Video

--Video

--Video

-Storm--作业

-Spark streaming

--Video

--Video

-Spark streaming--作业

NoSQL

-NoSQL introduction

--Video

-NoSQL introduction--作业

-Common Advantages

--Video

-Common Advantages--作业

-Bigtable

--Video

-Bigtable--作业

-Master Startup

--Video

-Master Startup--作业

-HBase

--Video

-HBase--作业

Graph Processing

-What is GraphDB and Graph data processing

--Video

-What is GraphDB and Graph data processing--作业

-Graph systems

--Video

-Graph systems

-Example of a GraphDB

--Video

-Example of a GraphDB--作业

Machine Learning System

-Mahout

--Video

-Mahout--作业

-Case Study: Recommendation

--Video

-Case Study: Recommendatio作业

-Recommendation in Mahout

--Video

-Recommendation in Mahout--作业

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。