回想一下著名的BigTable论题
GFS捕捉一些业务场景的分布式文件系统的需求。很自然。此外还有一些与他们一些业务或依赖于文件系统是不那么容易,他们需要一个分布式数据库系统。
BigTable那是,Google结构化数据处理的需求而产生的。
论文摘要涉及的“关键”字为:
1. 结构化数据
2. 数据量大
3. 典型应用:Web索引,Google Earth,Google Finance
4. 批处理和实时需求
5. 数据模型
首先,须要注意的是,这里所谓的结构化数据和做DBMS的说的结构化数据不全然是一回事。后者定义的结构化数据都是数值、字符串等确实比較结构化的数据,并且长度也不会非常大。採用的数据模型大多指的就是关系模型。其次,数据量大和此前做DBMS的人喜欢说的海量数据库也不是一个数量级。海量仅仅只是是TB,而这里的大怎么着也是PB甚至以上了(这个大概和做OLAP的人说的量级差点儿相同)。既然如此,典型的那些应用显然也超出了传统关系数据库可以摆平的范围了。
对于批处理业务,能够理解为其处理时间须要的比較多,至少不是秒级的响应时间。而对于实时需求,应该也不是实时操作系统。怎么也应该是毫秒甚至秒级别的响应时间吧。
从上面这些简单的分析能够看出,非常多术语的准确含义是须要上下文才干够对照。否则easy望文生义。
数据模型相对照较好理解,既然BigTable宣称是个数据库。那最核心的逻辑概念就是支持的数据模型是什么。第二节说“大表”是个稀疏的、分布的、持久化的、多维的、有序的Map。那它就不是关系模型。也不是对象模型或其它各种传统的数据模型了。这个定义有点啰嗦,但准确的描写叙述了BigTable的特征。
对于一个大型的数据管理软件,我们要关心的问题是有一定通用性的。比如:
1. 数据模型
2. 编程接口
3. 依赖的基础设施/组件
4. 实现中的优化
5. 性能数据以及典型场景
这也是论文的兴许章节主要介绍的内容。
在学习BigTable的数据模型/实现时,最好还是带着与关系模型/实现的类比去思考下面问题:
1. 它和关系模型的差别
2. 它支持ACID吗
3. 数据的组织和Heap、Cluster B+树类似吗
4. 它有索引吗
5. 模式定义
6. 数据的分区(垂直分区和水平分区)
7. 权限控制
8. 行的多版本号等等
更重要的,它的并发控制机制是什么?假设它和传统数据库在这些基本问题上区别/差距越大,那就能够说它越不像一个数据库:-)。
对于数据管理系统而言,支持的操作/API至少应该包含:
1. 模式定义(建表、改表、删表)
2. 数据操纵(增删改查)
3. 权限控制(权限的授予和回收)
要不用户怎么用啊?这些API里头最复杂和最有搞头的当属查数据了:
1. 全表扫描
2. 点查询
3. 范围查询
读第三节的时候。我们能够带着上述这些问题去思考哪些有交集。哪些是传统DBMS没有提供的。
绝大多数实际系统都不是从零開始的,而是要站在巨人的肩膀上。分布式文件系统有非常多是建立在本地文件系统之上的。数据库非常多是把数据存在文件中头的。
BigTable也不例外。仅仅只是它依赖的基础设施/组件比我想象的要多。并且多出来的那些组件一个比一个重要:GFS用来存数据文件和日志文件,集群管理系统用来调度作业、管理资源、处理故障等,SSTable定义了文件格式(Sorted String Table),Chubby提供分布式锁服务。Chubby是如此的重要和复杂,须要单独写篇论文来描写叙述它。
有了数据模型。定义了编程接口,准备好了基础设施。兴许的重要工作就是系统实现和优化了。
BigTable有三个组要的模块:client/函数库、Master server、Tablet servers。
具体内容须要阅读第五节。
这里列出须要注意的问题:
1. Master的职责
2. Tablet的职责
3. tablet的位置管理(为什么是3层,定位的效率)
4. Master怎么track各个tablet的死活?
5. 元信息的特殊处理
6. tablet的增减、合并
7. 日志
8. 三种compaction
9. 恢复等等。
这里头涉及到的细节比較多,须要慢慢的品味。
而一涉及性能优化,就会比較发散到压缩、布隆过滤器等等比較通用的算法/技术。有些东西没我完成了,了解也比较浅,留下来继续学习。。。。。
版权声明:本文博主原创文章,博客,未经同意不得转载。
回想一下著名的BigTable论题的更多相关文章
- history of program atan2(y,x)和pow(x,y)
编年史 1951 – Regional Assembly Language 1952 – Autocode 1954 – IPL (LISP语言的祖先) 1955 – FLOW-MATIC (COBO ...
- OpenStack的Trove组件详解
一:简介 一.背景 1. 对于公有云计算平台来说,只有计算.网络与存储这三大服务往往是不太够的,在目前互联网应用百花齐放的背景下,几乎所有应用都使用到数据库,而数据库承载的往往是应用最核心的数 ...
- 【XSY3413】Lambda - 造计算机初步——邱奇-图灵论题与lambda演算
题意: 关于邱奇-图灵论题的一点思考 这道题起源于计算机科学史上一个非常著名的问题——邱奇-图灵论题,这个论题是可计算性理论的基石,关于它的思考与证明几乎贯穿了整个计算机科学史,涵盖了数学.算法理论. ...
- SNMP协议以及著名的MIB详解
SNMP协议介绍 简单网络管理协议(SNMP:Simple Network Management Protocol)是由互联网工程任务组(IETF:Internet Engineering Task ...
- [MapReduce] Google三驾马车:GFS、MapReduce和Bigtable
声明:此文转载自博客开发团队的博客,尊重原创工作.该文适合学分布式系统之前,作为背景介绍来读. 谈到分布式系统,就不得不提Google的三驾马车:Google FS[1],MapReduce[2],B ...
- Bigtable 论文 阅读笔记 - 原理部分
不支持markdown,桑心.更好的阅读体验请看:Github/Bigtable.md Paper: Google Bigtable paper Notes author: Lhfcws Wu Tim ...
- 著名的sql注入问题-问题的原因分析及总结
Statement安全漏洞(sql注入问题)问题展示: 首先我的Mysql数据库中有一张users表,如下图所示 /** * 根据用户名查询用户 * @param username 需要查询的用户名 ...
- NoSQL生态系统——类似Bigtable列存储,或者Dynamo的key存储(kv存储如BDB,结构化存储如redis,文档存储如mongoDB)
摘自:http://www.ituring.com.cn/article/4002# NoSQL系统的数据操作接口应该是非SQL类型的.但在NoSQL社区,NoSQL被赋予了更具有包容性的含义,其意为 ...
- 【原创】高性能网络编程(二):上一个10年,著名的C10K并发连接问题
1.前言 对于高性能即时通讯技术(或者说互联网编程)比较关注的开发者,对C10K问题(即单机1万个并发连接问题)应该都有所了解."C10K"概念最早由Dan Kegel发布于其个人 ...
随机推荐
- ajaxFileUpload+struts2多文件上传(动态添加文件上传框)
上一篇文章http://blog.csdn.net/itmyhome1990/article/details/36396291介绍了ajaxfileupload实现多文件上传, 但仅仅是固定的文件个数 ...
- HDU 2454 Degree Sequence of Graph G(Havel定理 推断一个简单图的存在)
主题链接:pid=2454">http://acm.hdu.edu.cn/showproblem.php?pid=2454 Problem Description Wang Haiya ...
- 第四-generation音频:互联网智能声音会火
我把声音分成四个年龄:传统的立体声插头线-蓝牙音响-wifi发出声音-智能声音. 传统的立体声插头线:传统的声音,您必须使用电缆和其他输入源.这样的声音是现在市场上最流行的音频上. 蓝牙音响:蓝牙无线 ...
- 【转】Android内存机制分析1——了解Android堆和栈
昨天用Gallery做了一个图片浏览选择开机画面的功能,当我加载的图片多了就出现OOM问题.以前也出现过这个问题,那时候并没有深究.这次打算好好分析一下Android的内存机制. 因为我以前是做VC+ ...
- 进口fbx角色动画read-only解
原文链接:http://answers.unity3d.com/questions/8172/how-to-add-new-curves-or-animation-events-to-an-im.ht ...
- NET 中的多线程
NET 中的多线程 为什么使用多线程 使用户界面能够随时相应用户输入 当某个应用程序在进行大量运算时候,为了保证应用程序能够随时相应客户的输入,这个时候我们往往需要让大量运算和相应用户输入这两个行为在 ...
- centos7 高速安装 mariadb(mysql)
从最新版本的linux该系统启动,缺省值是 Mariadb代替mysql! 使用系统自带repos安装非常easy: yum install mariadb mariadb-server system ...
- C++在设计和使用智能指针
为一个C++用户的.使用指针可以算的上是常态,但在使用过程中.多的时间,可能是由于new要么malloc对象,上次忘记的释放结束(我会犯这样一个错误).内存泄露. 而此时智能指针可能能够帮助我去解决问 ...
- 联想G480安装CentOS电缆驱动器
最近.联想G480 32本机安装现场CentOS 6.5. 发现.总是无法使用有线网络. 必须安装必要的驱动,搜集了资料,安装过程例如以下: 1. 必备的软件 安装前,须要下列的软件依赖包. sudo ...
- cidaemon.exe是什么进程及怎样关闭cidaemon.exe进程
问题描写叙述: 这段时间机器总是出现一个奇怪的问题:cidaemon.exe进程占用CUP率98%以上,大大影响了电脑的正常使用.资源管理器中出现多个cidaemon.exe进程,强制结束占用cpu率 ...