YunTable 0.1版正式发布!!!(转载)
源地址: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的架构:
- Console:用于让用户输入YunTable的命令,主要包括四种类型的命令(add,put,get和quit),并做一些简单的解析。
- Master:主要接收来自Console的请求,并将这个请求转发给相应的Region。
- Region:其作用主要是处理Master的请求,并存储和管理大量的数据,其主要包括多个store,而存储数据的目录名为”datastore“。Region也就是BigTable论文中所提到的Tablet的服务器。
- Store:每个Store对应一个相应的column family,系统在初始化的时候,会为默认的column_family(default_cf)创建一个store,store存储的形式为datastore下的一个目录,目录名为其所对应的column_family,并主要包括四类文件:Memstore,YFile,YFile_data和WAL。
- Memstore:其是缓存在内存的数据文件,主要存储最新更新和添加的数据,每隔一段时间,在Memstore上缓存的数据都将会flush到YFile和YFile_data这两个文件中,默认时间间隔应该为60分钟,但0.1版为了测试方便,所以把设定的时间间隔暂定为10秒钟。
- YFile:其是持久化的文件,主要用于存储数据的Index,系统会根据从YFile中得到的Index来访问用于存储数据的YFile_data文件中的相应部分,而且由于其体积比较小,所以会在系统运行的时候被载入至内存中。
- YFile_data:这就是真正存储数据的文件,由于其体积比较大,所以不大会被存入内存。YFile这个两个文件参考了HBase的HFile格式和Google的SSTable格式,并做了相应的简化。
- WAL:全称为“Write-Ahead Log”,用于暂存那些数据更新的请求,以避免当Memstore被意外关闭时所造成的数据丢失,当Memstore完成对数据的写入时,WAL也会清空已经写入的请求。
- Store:每个Store对应一个相应的column family,系统在初始化的时候,会为默认的column_family(default_cf)创建一个store,store存储的形式为datastore下的一个目录,目录名为其所对应的column_family,并主要包括四类文件:Memstore,YFile,YFile_data和WAL。
一些限定
为了使YunTable在合理的时间内达到其0.1版,我在一些方面做了相应的范围缩小,所以YunTable0.1版有下面一些限定:
- column_name和column_family_name的大小都被限制在16字节之内,如果输入column_name或者column_family_name的大小超过16字节,系统会将多余的字节自动删去。同时假设在输入的时候,如果不为这个column设定相应的column_family,系统会认定其使用系统默认的column family,也就是default_cf。
- 在分布式方面,为了缩小开发范围,采用了伪分布式的方式,也就是将Master和Region绑定在一起,并且只有一个初始Region可供选择。
- 在查询方面,暂不支持基于column的查询,但是支持基于row key的查询,具体可以看下面使用教程中的”Get“命令。
- 在内存管理方面和性能优化方面,由于这两方面在短期内并不关键,而且”过早的优化“也不是业界所推崇的,所以在0.1版中,没有在这两方面发力。
使用教程
首先,使用make来编译生成执行文件YunTable,可通过“./yuntable”来启动YunTable,并进入YunTable的Console,也可使用make clean来清空之前生成的数据库文件。
接下来,将介绍YunTable Console所支持四种命令:
- add:这个命令,是为了创建新的Column Family存在的,格式是“add column_family:column_family_name”,在这里”column family”是关键词,不可更改,而“column_family_name”则是等待用户输入的占位符,如果输入的Column Family已经存在的了,Console会显示相应的错误信息。例子:add column_family:address 。
- 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 。
- get:可以通过这个命令来获取数据,主要有两个选择:第一个是“get all”,这主要是列出数据库中所有的数据,并安排row key大小的顺序(字典顺序)排列,但不会对输出的数据进行过滤。另一个是“get row:row_key”,通过这个命令会获得这个row的数据,并且会对其输出的数据进行过滤,也就说,同一row同一column只会显示最新的一个值,例子:get row:me。
- 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版正式发布!!!(转载)相关推荐
- CYY网页提取助手2.0绿色版正式发布
CYY网页提取助手2.0绿色版正式发布(2010-02-03 08:20:07) 官方主页:CYY软件工作室 网页提取助手简要介绍: 可用于 网页图片下载,可提取文本.图片.Flash动画.C ...
- CYY文本批量助手2.0绿色版正式发布
CYY文本批量助手2.0绿色版正式发布 官方主页:CYY软件工作室 CYY 文本批量代替是一款用于文本批量代替的 免费软件 具有操作恢复功能,文件文本批量代替后,一键恢复原来的文件或文件夹 可以批量代 ...
- pytorch支持python哪个版本_PyTorch 1.0 稳定版正式发布!
原标题:PyTorch 1.0 稳定版正式发布!
- python 3.8.0安卓_Python 3.8.0稳定版正式发布
IT之家 10月15日消息 Python是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本,随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发.Python 3.8.0 ...
- Apache Hadoop 3.0.0 GA版正式发布,可以部署到线上
今天凌晨 Apache Hadoop 3.0.0 GA 版本正式发布,这意味着我们就可以正式在线上使用 Hadoop 3.0.0 了!这个版本是 Apache Hadoop 3.0.0 的第一个稳定版 ...
- PyTorch 1.0稳定版正式发布,并向开发者提供免费AI课程
晓查 发自 凹非寺 量子位 出品 | 公众号 QbitAI Facebook今天在NeurIPS大会上正在发布PyTorch 1.0稳定版. Facebook在5月份公布了该版本的新功能,并在10月举 ...
- 【巨杉数据库SequoiaDB】巨杉数据库 v5.0 Beta版 正式发布
2020年疫情的出现对众多企业运营造成了严重的影响.面对突发状况,巨杉利用长期积累的远程研发协作体系,仍然坚持进行技术创新,按照已有规划推进研发工作,正式推出了巨杉数据库(SequoiaDB) v ...
- Silverlight 3.0 Beta版 正式发布
Silverlight 3开发工具: Silverlight 3 Beta Tools for Visual Studio – this will install the developer runt ...
- android版手机qq 5.0,手机QQ5.0安卓版今日正式发布 手机QQ5.0更新升级内容介绍
今日,手机QQ5.0安卓版正式发布,相较之前的版本,这个版本对整体界面结构和视觉风格做了重大调整,变得更加简洁,聚焦社交沟通.下面就详情一起来看看了解一下吧 手机QQ 5.0采用蓝色主界面,个人头像从 ...
最新文章
- 已解决‘<‘ not supported between instances of ‘Example‘ and ‘Example‘
- luogu2467/bzoj1925 地精部落 (dp)
- 放苹果问题 POJ 1664
- 蓝桥杯——寻找数组中的最大值
- Angular input控件的click事件表达式如何被转换成JavaScript函数
- 我的世界java版游戏崩溃_我的世界全攻略之-游戏崩溃的解决方法
- python入门:Anaconda和Jupyter notebook的安装与使用
- Mybatis批量删除
- 启用了不安全的 HTTP 方法
- CGAffineTransform 获取 旋转的弧度 和 角度 的方法
- [转]唐骏谈职场 —— 管理者要学会让员工感动
- 上传附件点击事件_支持高拍仪扫描凭证附件的出纳记账软件
- Win11硬盘安装方法介绍 Win11系统硬盘安装教程
- [一起来学mysql]-----MySQl的增删改查
- 这些行业已经开始用数据挖掘了,我们的前途光明
- 【对讲机的那点事】你了解对讲机IP互联中继台系统实现的原理及网络模型吗?...
- Threejs实现标签,自定义样式显示标签
- ffmpeg修复时间戳
- reactos源码下载地址
- 18种常见室内花卉的功效 (转自网络)
热门文章
- java常用注解及功能_SpringBoot 中常用注解及各种注解作用
- php开发问题及解决方案,PHP开源开发框架ZendFramework使用中常见问题说明及解决方案...
- 计算机组成原理手动在线模式,实验四计算机组成原理 运算器手动实验
- 手机控制linux电脑,通过Amora用symbian手机控制linux系统的电脑
- python的random函数_关于random()的详细介绍
- python重复import_Python module重复载入的问题
- java 爬虫框架_不知道Python爬虫?这篇文章丢给他(内含框架结构)
- 笔记本电脑排行_笔记本电脑性价比排行2020
- python的flag是什么意思_python flag 什么意思
- 图像降噪算法——非局部均值降噪算法