源地址:http://peopleyun.com/?p=731

经过两个星期的努力(如果刨去学习C语言的时间),YunTable终于走完一个从无到有的历程,今天,也就是2010年7月12日,YunTable正式对外发布其0.1版,在0.1版中YunTable虽然在特性,优化和内存管理这三方面还有很多的缺失,但是总体而言,已经实现了一个身为BigTable克隆的基本要求,也就是分布式查询和管理,以及以column为核心的存储。这是0.1版的下载链接(上次因为对Skydrive的存储机制不熟,导致部分博友没有第一时间拿到0.01版的源代码,在这里向大家表示我的歉意)。

架构综述

首先,请看下面是YunTable0.1版的架构图:

图1. YunTable架构(0.1版)

接下来,将按从上往下的顺序给大家介绍YunTable的架构:

  1. Console:用于让用户输入YunTable的命令,主要包括四种类型的命令(add,put,get和quit),并做一些简单的解析。
  2. Master:主要接收来自Console的请求,并将这个请求转发给相应的Region。
  3. Region:其作用主要是处理Master的请求,并存储和管理大量的数据,其主要包括多个store,而存储数据的目录名为”datastore“。Region也就是BigTable论文中所提到的Tablet的服务器。
    1. Store:每个Store对应一个相应的column family,系统在初始化的时候,会为默认的column_family(default_cf)创建一个store,store存储的形式为datastore下的一个目录,目录名为其所对应的column_family,并主要包括四类文件:Memstore,YFile,YFile_data和WAL。

      1. Memstore:其是缓存在内存的数据文件,主要存储最新更新和添加的数据,每隔一段时间,在Memstore上缓存的数据都将会flush到YFile和YFile_data这两个文件中,默认时间间隔应该为60分钟,但0.1版为了测试方便,所以把设定的时间间隔暂定为10秒钟。
      2. YFile:其是持久化的文件,主要用于存储数据的Index,系统会根据从YFile中得到的Index来访问用于存储数据的YFile_data文件中的相应部分,而且由于其体积比较小,所以会在系统运行的时候被载入至内存中。
      3. YFile_data:这就是真正存储数据的文件,由于其体积比较大,所以不大会被存入内存。YFile这个两个文件参考了HBase的HFile格式和Google的SSTable格式,并做了相应的简化。
      4. WAL:全称为“Write-Ahead Log”,用于暂存那些数据更新的请求,以避免当Memstore被意外关闭时所造成的数据丢失,当Memstore完成对数据的写入时,WAL也会清空已经写入的请求。

 

一些限定

为了使YunTable在合理的时间内达到其0.1版,我在一些方面做了相应的范围缩小,所以YunTable0.1版有下面一些限定:

  1. column_name和column_family_name的大小都被限制在16字节之内,如果输入column_name或者column_family_name的大小超过16字节,系统会将多余的字节自动删去。同时假设在输入的时候,如果不为这个column设定相应的column_family,系统会认定其使用系统默认的column family,也就是default_cf。
  2. 在分布式方面,为了缩小开发范围,采用了伪分布式的方式,也就是将Master和Region绑定在一起,并且只有一个初始Region可供选择。
  3. 在查询方面,暂不支持基于column的查询,但是支持基于row key的查询,具体可以看下面使用教程中的”Get“命令。
  4. 在内存管理方面和性能优化方面,由于这两方面在短期内并不关键,而且”过早的优化“也不是业界所推崇的,所以在0.1版中,没有在这两方面发力。

使用教程

首先,使用make来编译生成执行文件YunTable,可通过“./yuntable”来启动YunTable,并进入YunTable的Console,也可使用make clean来清空之前生成的数据库文件。

接下来,将介绍YunTable Console所支持四种命令:

  1. add:这个命令,是为了创建新的Column Family存在的,格式是“add column_family:column_family_name”,在这里”column family”是关键词,不可更改,而“column_family_name”则是等待用户输入的占位符,如果输入的Column Family已经存在的了,Console会显示相应的错误信息。例子:add column_family:address 。
  2. put:主要是用于添加数据,其格式是”put  row:row_key column_name:column_name_value column_family_name.column_name:column_name_value“,在这里”row”是关键词,在其冒号后输入相应的row_key,比如在后面例子里面提到的”me“,在row之后那些,都不是关键字,只要按照那些占位符输入相应参数就可以,具体也可以参看后面的例子,但要注意,如果这个column不属于系统默认的column family,那么请在column family和column之间加入用于分割的“.”,例子:put row:me name:ike sex:male address.homeaddress:sh 。
  3. get:可以通过这个命令来获取数据,主要有两个选择:第一个是“get all”,这主要是列出数据库中所有的数据,并安排row key大小的顺序(字典顺序)排列,但不会对输出的数据进行过滤。另一个是“get row:row_key”,通过这个命令会获得这个row的数据,并且会对其输出的数据进行过滤,也就说,同一row同一column只会显示最新的一个值,例子:get row:me。
  4. quit:这个命令最简单的,没有附加的命令,只有在console中输入“quit”就能退出YunTable Console。

还有,如果大家第一次使用YunTable的话,可以参考下面附录里面的两个Test Case,特别推荐Test Case1,也就是短的那一个。

今后的安排

关于YunTable的未来,首先,我将会在《剖析云计算》一书的实践篇中,对YunTable的实现和其背后的理论进行详细的讲解。其次,关于YunTable未来的发展,我还没有明确的规划,所以如果大家有兴趣在今后参与YunTable开发的话,可以直接在使用和分析YunTable之后将自己的想法发到我的邮箱ikewu83@gmail.com,等我有空了之后,大家可以一起来商量商量,同时也可以直接动手改代码,来对YunTable进行更新和添加。

附录:

下面是两个YunTable的Test Case,一长一短,如果大家有兴趣的话,可以试一下。

Test Case1(短) 
make 
make clean 
./yuntable 
1. add column_family:address 
2. put row:me name:ike sex:male address.homeaddress:sh 
3. get all 
4. quit

Test Case 2(长) 
1) begin part 
make 
make clean 
./yuntable 
1. get all

2) add part 
1. add column_family:address 
*2. add column_family:address 
3.  add  column_family:address2

3) put part 
1. put row:me name:ike sex:male address.homeaddress:sh 
2. put row:m22 name:zhu sex:male address.homeaddress:sh address2.workaddress:bj 
3. put row:m1 name:wu sex:male address.homeaddress:sh 
*4. put row:m3 name:hua sex:male address3.playaddress:sh 
5. put row:me name:wu sex:female address.homeaddress:bj

4) test log part 
1. quit 
./yuntable

5) get part 
1. get all 
2. get row:me 
*3. get row:wrong 
4. quit

*开头的命令,应该返回相应的错误信息。

转载于:https://www.cnblogs.com/licheng/archive/2010/09/09/1821907.html

YunTable 0.1版正式发布!!!(转载)相关推荐

  1. CYY网页提取助手2.0绿色版正式发布

    CYY网页提取助手2.0绿色版正式发布(2010-02-03 08:20:07)     官方主页:CYY软件工作室 网页提取助手简要介绍: 可用于 网页图片下载,可提取文本.图片.Flash动画.C ...

  2. CYY文本批量助手2.0绿色版正式发布

    CYY文本批量助手2.0绿色版正式发布 官方主页:CYY软件工作室 CYY 文本批量代替是一款用于文本批量代替的 免费软件 具有操作恢复功能,文件文本批量代替后,一键恢复原来的文件或文件夹 可以批量代 ...

  3. pytorch支持python哪个版本_PyTorch 1.0 稳定版正式发布!

    原标题:PyTorch 1.0 稳定版正式发布!

  4. python 3.8.0安卓_Python 3.8.0稳定版正式发布

    IT之家 10月15日消息 Python是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本,随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发.Python 3.8.0 ...

  5. Apache Hadoop 3.0.0 GA版正式发布,可以部署到线上

    今天凌晨 Apache Hadoop 3.0.0 GA 版本正式发布,这意味着我们就可以正式在线上使用 Hadoop 3.0.0 了!这个版本是 Apache Hadoop 3.0.0 的第一个稳定版 ...

  6. PyTorch 1.0稳定版正式发布,并向开发者提供免费AI课程

    晓查 发自 凹非寺 量子位 出品 | 公众号 QbitAI Facebook今天在NeurIPS大会上正在发布PyTorch 1.0稳定版. Facebook在5月份公布了该版本的新功能,并在10月举 ...

  7. 【巨杉数据库SequoiaDB】巨杉数据库 v5.0 Beta版 正式发布

    2020年疫情的出现对众多企业运营造成了严重的影响.面对突发状况,巨杉利用长期积累的远程研发协作体系,仍然坚持进行技术创新,按照已有规划­­推进研发工作,正式推出了巨杉数据库(SequoiaDB) v ...

  8. Silverlight 3.0 Beta版 正式发布

    Silverlight 3开发工具: Silverlight 3 Beta Tools for Visual Studio – this will install the developer runt ...

  9. android版手机qq 5.0,手机QQ5.0安卓版今日正式发布 手机QQ5.0更新升级内容介绍

    今日,手机QQ5.0安卓版正式发布,相较之前的版本,这个版本对整体界面结构和视觉风格做了重大调整,变得更加简洁,聚焦社交沟通.下面就详情一起来看看了解一下吧 手机QQ 5.0采用蓝色主界面,个人头像从 ...

最新文章

  1. 已解决‘<‘ not supported between instances of ‘Example‘ and ‘Example‘
  2. luogu2467/bzoj1925 地精部落 (dp)
  3. 放苹果问题 POJ 1664
  4. 蓝桥杯——寻找数组中的最大值
  5. Angular input控件的click事件表达式如何被转换成JavaScript函数
  6. 我的世界java版游戏崩溃_我的世界全攻略之-游戏崩溃的解决方法
  7. python入门:Anaconda和Jupyter notebook的安装与使用
  8. Mybatis批量删除
  9. 启用了不安全的 HTTP 方法
  10. CGAffineTransform 获取 旋转的弧度 和 角度 的方法
  11. [转]唐骏谈职场 —— 管理者要学会让员工感动
  12. 上传附件点击事件_支持高拍仪扫描凭证附件的出纳记账软件
  13. Win11硬盘安装方法介绍 Win11系统硬盘安装教程
  14. [一起来学mysql]-----MySQl的增删改查
  15. 这些行业已经开始用数据挖掘了,我们的前途光明
  16. 【对讲机的那点事】你了解对讲机IP互联中继台系统实现的原理及网络模型吗?...
  17. Threejs实现标签,自定义样式显示标签
  18. ffmpeg修复时间戳
  19. reactos源码下载地址
  20. 18种常见室内花卉的功效 (转自网络)

热门文章

  1. java常用注解及功能_SpringBoot 中常用注解及各种注解作用
  2. php开发问题及解决方案,PHP开源开发框架ZendFramework使用中常见问题说明及解决方案...
  3. 计算机组成原理手动在线模式,实验四计算机组成原理 运算器手动实验
  4. 手机控制linux电脑,通过Amora用symbian手机控制linux系统的电脑
  5. python的random函数_关于random()的详细介绍
  6. python重复import_Python module重复载入的问题
  7. java 爬虫框架_不知道Python爬虫?这篇文章丢给他(内含框架结构)
  8. 笔记本电脑排行_笔记本电脑性价比排行2020
  9. python的flag是什么意思_python flag 什么意思
  10. 图像降噪算法——非局部均值降噪算法