00:00
好,咱们继续往下啊,谈完它的设计理念之后呢,咱们就可以来真的去看一下它的一个模型了啊,它的一个模型啊呃,I的这个数据模型呢,首先我们要看一下啊,它要存储的数据是长什么样的啊,这里面呢有相关的一个介绍,呃,我们呢,现在以杰森为例啊,杰森呢是使用比较多的一种数据结构啊,这个杰森呢,你可以放到专业的一个软件里面啊,去进行一个存储,这样的话呢,你能看一下它大致的一个结构啊,咱们呢,打开一个软件啊,比方说呢,你打开这个note派捷加或者是这个萨烂啊都可以,好,这里呢,我们开一个空的啊CTRL为过来,这是我们现在要去存储的一个杰森文件啊,这个杰森文件里面啊,有对应的一个,这是一个总的括号对象对吧,里面呢,有多个的建筑,对这个建队里面它的K呢,就叫RK1 RK11和RK2啊,它是有序的嘛,RK1 RK1 RK2啊按照。
01:00
字典序好,那里面呢,它有对应的一个personal info,这个personal info呢,表示这个用户的一个信息,用户信息里面包含有name city和phone啊,同时呢,还有一个office in啊,办公室信息有他的,哎,电话和他的地址啊,然后你可以看一下这个信息啊,它并不是说每一个对象里面都有完整的一个信息,看到没有他们的。对应的一个建筑的K是没有办法一一对应的啊,有的多有的少啊,有的多有的少,好,那如果我们要存储这么一个数据的话啊,对于h base会如何进行存储呢?哎,咱们一起来看一下这个PPT来去了解一下啊呃,我们这个地方呢,可以打开一个空的PPT啊,这样它加载的时候呢,会快一点啊,相当于提前帮他初始化。好,我们一起来看一下啊呃,那底下这个表呢,哎,就是我们对应的存储的这个数据对吧?哎,你把那个杰森呢,给它转化成一个有行有列的表格形式就变成这个样子了啊这个表里面呢,它有一些特点,还有一些概念,咱们先来介绍一下这里面的词啊,那首先呢,它除了有行列之外呢,它多了一个概念叫列足啊,这个列足就是我们直接翻译过来的叫column family啊,你就把它叫做列足就行,它是一个非常特殊的一个概念啊,后续我们会讲它到底是干嘛的啊,在除了列如之外呢,底下还会有一个列名啊,这个列名呢,就像是我们关系型数据库里面的那个列名了啊,除此之外,它还多为多多余的多了一个叫R啊,R呢叫做行号啊,I里面这个行号非常关键啊,它是用来排序和整理这个数据的啊,这个ROOK呢,有个特点,它一定是按照字典序给你排序好的啊,什么叫字典序?
02:45
E1就在这个二前面啊,从左到右一个一个字符串,因为BY啊里面的一个一个BA,就是比较字典是阿斯卡码的大小啊,小的在前面啊好,这是它一些基本的一个概念啊,然后在里面呢,就介绍一些特点,首先它存储是稀疏的啊,你可以看到刚才我们的那个接森数据啊,里面数据就有留空的部分对吧,留空的部分你在写杰森的时候,你就没有这一行,没没有那个对应的一个数据,对吧?那我们在存的时候呢,也希望不存这个数据,那h base呢,就对应这个地方是留空的,底层也不会去存储啊,并且呢,它数据存储是多维的,它通过行和列能够维持一个比较复杂的一个结构啊,那它有多列的一个数据啊,不同的行呢,也可以具有不同的列啊,你这个R1,你说我再多一行,多一个parent,父母可不可以,父母亲心可不可以,当然可以啊,那别的人呢,别的行都没有这一列可不可以也可以啊,你是可以自己随便添加的啊。
03:44
好,数据存储呢,整体是有序的,按照roie的字典序进行排序啊,RO呢为一个BY数组啊好,这是我们整个的一个基础的模型啊,在基础的模型上面,我们就要对它进行一个拆分了啊,我们一个表格啊,我们说了它数十一行,数百万列,对吧?如果你不对它进行拆分的话,是没有办法进行一个存储的啊,我们在对它进行拆分的时候,首先按照横来进行拆分,横向进行拆分,这和我们数据的一个使用习惯有关啊,我们在数据表格使用的时候,通常都是以行作为一个单位的啊,都是以行来作为单位的啊呃,我在写入数据的时候,对吧?啊,我都是一次写一行的数据,你不可能先对着写一溜,然后再往里面填啊,这这个有点太诡异了,对吧?我们都是按照行写的,所以它首先按照行来进行切分,行切分完之后呢,就把一个表格切分出来一个结构叫region啊区域对吧,叫region,这个region在拆分完了之后呢,它会有对应的一个ROK的一个范围。
04:45
每个region的RK范围不一样,互相不交叉,那这样的话呢,就是你存你那个范围的,我存我这个范围的,互相不会造成影响啊,这个叫region按照柔的字典去进行拆分啊。哎,我们拆分完之后呢,它就能够实现一个分布式的结构了,单独的一张表只能存在一个地方啊,但是拆分成一个一个region之后,它可以放到不同的节点上去啊,这是第一层叫拆分,横着拆分完之后还不够啊,我们还需要再给它进行竖向的切分啊,这个呢,是因为我们的列太多了,数百万列嘛,你不竖着切分,放到一块数据量还是太大了,竖的再进行切分,竖着进行切分呢,切分出来这个单位叫store啊,叫store啊,相当于一块一块的这个数据,竖向切分是以列足作为单位的啊,以足作为单位纵向切分,切分的这个东西都是为了便于存储,它多切分几次干嘛呢?多拆分几个文件夹。
05:42
便于存储啊,你目的就是这个啊,咱们一起来看一下啊,按照列足千分为store用于底层存储在不同的文件夹中,便于文件的一个对应啊,那这里呢,我们就引入了一系列的一个概念,对吧?哎,有行有列,有region,有star啊这是我们的这个逻辑上的一个结构啊,单独讲逻辑上的结构呢,会有点让人啊,哎不太好理解,咱们接下来呢,还要去讲它物理存储的一个结构啊,这个物理存储的结构呢,哎,最开始呢就说了啊,底层数据是如何写到那个文件里面的,是以他的。
06:15
物理存储结构为主的,而概念上的结构呢,上面这个地方呢,它是不存在的啊,是不存在的,在里面那个空单元格,你看为什么说它不存在,我们画的时候,是不是你在画表格时候,这个空间格还是画出来的呀,但是我们在存储的时候根本就不存这个东西的,那不存这个东西底层如何存储呢?看一下它的物理存储结构啊,大家来看一下。好,它的物理存储结构是这样的啊,我们已经说了,它先切分region,再切分store,切分region,为了放到不同的节点,切分到为了拆分文件夹,拆分文件夹到最后就到这个store了,Store就是一个文件夹,那一个文件夹里面就要有对应的文件啊,这个文件呢,哎。底层是怎么写的呢?它是一个非关系型的数据库,底层一定是按照KV来进行编写的,对吧?那这个KVV我们已经知道了,V不用想,对吧,肯定是这个张三嘛,那这个K是什么呢?首先这个K它不可能是UK。
07:12
这个K如果是UK的话,那这一行都要作为VALUE6了,并且它没有办法存列的信息了,对吧?所以它这一个K呢,是非常长的啊,就是我们之前讲谷歌big big table那个map映射的那个K非常长,它有什么呢?有行号,有列号,在H里面列号只带两个东西,一个叫列足,一个叫列名啊,一个叫足,一个列,两个加起来组成这个列啊,除了列足和列名之外,除了列之外还有一个东西叫时间戳,对吧?它要存一个时间戳,这个时间戳用来给我们标记版本啊,用来标记版本哎,什么意思呢?等一下介绍对吧?呃,接下来呢,这里面还有一个叫type啊,表示你当前这个地方呢,它是一个什么样的标记,哎,如果你是写入出去叫put啊,如果你删除出去叫delete啊,最终呢,是这个value的一个值。
08:02
啊,Y轴的一个值,好,这是我们底层存储的一个KV啊,底层存储的KV,那这个底层存储KV存储在哪呢?哎,咱们前面已经介绍过了,H base是以HDFS作为存储基础的一个数据库,对吧?它一定是存在HDF上面的,好,它存在HDF上面,咱们马上来回忆一下啊,HDS在对文件存储的时候有什么特点?啊,它它有一个非常标志性的特点啊HDS。他不能够修改数据。HDFS上传数据呢,是没有办法进行修改的啊,你只能删除重写或者追加。是这样吗?好,你想一下,我h base把数据存到这个HD上面,它不能修改数据,那你h base是作为一个数据库存在的,一个数据库对数据连改都不能改,登、删、改、查他都做不了,那他还叫一个数据库吗?哎,显然就不行了啊,所以I一定要在不能改数据的基础上来实现改数据的这个功能啊,如何实现?
09:04
时间戳就是以时间戳版本来进行标记的啊,咱们一下记下啊,这个时间戳呢,标记了它的一个不同的版本啊,这个时间戳呢,默认使用的是当前系统的时间啊,这个当前系统时间是有非常大好处的,因为我们都知道时间是不可逆的啊,你只要写出来,它一定是不断变大的,它不断变大有什么好处,你在读取数据的时候,你看如果你改的话,什么意思,你是不是再往里面最加写一条啊,我我们这个h base啊,它在改的时候没有update这个语句啊,你只能再往里面写一下,你再往里面写一条的时候,就比方说这个你会有两个不同的时间写入了两条数据,诶,然后我怎么样确定它改了呢?我在读取数据的时候,它有两个时间版本。新的那个版本会覆盖旧的那个版本,就认为这个数据已经发生修改了啊,是这么来的啊,这也是big table里面一个重要的一个理念啊,没有办法改怎么办?往里面追加写写一个时间戳,根据时间戳的大小来判断谁是新的,那新的旧的那个就被修改掉了啊,这个意思啊,在下面呢,还有这个type啊,它不能改就意味着它也没有办法很好的去删除啊,ID上面的数据是不太好随机删除的,那怎么办?一样的道理啊,同样的一个时间戳。
10:17
标记啊,这个地方tap呢,给它写成delete删除。好,一旦你在读数据的时候,你有一个delete,有一个数据,你怎么办?比较版本,谁的版本新谁生效,如果你先put一个数据,再调一个delete,说明这个数据已经被删了,你就读到了,但如果你是先删除,再调一个put,你就能够读到啊,因为是后来写入的一个数据啊,这是它的一个物理存储结构啊,把物理存储结构和上面的哎逻辑结构结合起来,就整个组成了我们的H的数据模型啊,这下面。框起来的下面啊,才是我们真正存储在文件夹里面的文件啊,文件里面的一个信息数据啊,这个文件呢,我们把它叫做store fair啊,因为它是store切分出来叫store嘛啊,它是存在store里面的文件,那叫store fair就可以了啊,这是我们的一个。
11:10
物理结构啊,物理结构啊。
我来说两句