`
liuxinglanyue
  • 浏览: 562711 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

YunTable开发日记(3) – BigTable的数据模型和调用接口(转)

阅读更多

本文将深入分析BigTable的数据模型,并介绍它是如何被调用的。

数据模型

就像向我之前所说的那样,其实BigTable顾名思义,是一个非常大的表,而且是一个能存储几十亿行(Row)和几千列(Column)的非常巨大的表。什么表会怎么大呢?接下来,举一些简单的例子,比如:用于中国所有公民的个人信息和Internet上所有网站内容的表,这些表的总体规模可以达到PB以上级别,而且这些表的规模都会与日增长,所以很显然需要使用分布式的方法,而不是使用一台机器来承载这个巨大且不断增长的Table。首先,会介绍一下BigTable最基本的数据模型,也就是table。

Table

Table图1.  Table

这就是Table(表格),虽然上面截图只有三个Row和五个Column,但由于这个表会存储中国所有公民的个人信息,所以会有十三亿多Row和几百多Column,接下来,将介绍为了提高访问效率和伸缩性的两个特性:Colunm Family(列组)和Tablet(片)。

Column Family

Column Family图2. Column Family

由于每个表格都会有成百上千的Column,而大多数查询只需得到其中少数几个Column,所以如果每次查询都将所有的Column取出来的话,这样会得不偿失,所以Google在BigTable的设计中引入了Column Family这个特性,通过这个特性能将多个Column并为一个小组,比如上图的“家庭地址”和“工作地址”都隶属于“地址”这个Column Family,这样做的最大的好处是能将这些Column放在一起存储,这样不仅能提高存取效率,而且能避免读取过多的Column,比如可以选择只读取一个Column Family。

Tablet

 Tablet图3 Tablet

这个非常容易理解,就是BigTable系统会自动根据Row Name的范围,来将数据复制到不同的服务器上。

Timestamp

为了帮助数据的同步和备份,可以为每个Cell(单元格)设置相应的Timestamp,而且系统可以根据Timestamp来做GC(Garbage Collection)。

 

调用接口

Google的BigTable的调用接口主要以API为主,下面是一些示例代码,主要参考自BigTable的Paper。

//打开Table

Table *T = OpenOrDie(“/peopletable”);

//找到相应的Row,并做相应的更新

RowMutation r1(T,”310101”);

r1.Set(“地址:家庭地址”,”SH88”);

//执行更新

Operation op;

Apply(&op, &r1);

//创建用于查询的Scanner

Scanner scanner(T);

ScanStream *stream;

//查询相关的代码:1. 锁定“地址”这个Cloumn Family;2.返回所有版本;3. 查找Row Name是”310101”的列。

stream = scanner.FetchColumnFamily(“地址”);

stream->SetReturnAllVersion();

scanner.Lookup(“310101”);

//打印

for(;!stream->Done();stream->Next()){

    printf(“%s %s %lld %s\n”,Scanner.RowName(), stream->ColumnName,

                                         stream->TimeStamp,  stream->Value);

}

 

下篇开发日记将关注BigTable的存储模型。

 

参考资料:

  1.  
    1. BigTable的Paper
    2. 百度 – 大规模数据处理

 

延伸阅读:

  1.  
    1. YunTable开发日记(1)- 计划
    2. YunTable开发日记(2) – 前三天的总结

分享到:
评论

相关推荐

    云计算机YunTable 0.9 Source Code

    源代码中的相关接口和类,能够帮助我们了解YunTable如何与这些框架交互,以及它如何优化和扩展基础框架以满足自身需求。 再者,YunTable 0.9可能具备高效的查询引擎和索引结构,以支持复杂的数据查询和分析。源代码...

    云计算核心技术剖析

    《云计算核心技术剖析》,本书首先介绍了云计算理论方面的知识,接着剖析了多个顶尖...并以 YunTable这个云时代的BigTable为例,来给大家演示如何手动编写和设计一个分布式数据库,最后对云计算的未来发展做了展望。

    云计算核心技术剖析完整清晰版.PDF

    第三部分为实践篇,将选择云的核心模块之一——分布式数据库作为实践的方向,并以YunTable这个云时代的BigTable为例,给大家演示如何手动编写和设计一个分布式数据库;最后一部分为展望篇,预测了云计算和整个科技...

    大数据处理的三大流程以及大数据的价值.doc

    3. 数据挖掘:在此阶段,基于前两个阶段处理后的数据,进行深度分析和模式识别,通常采用R语言和Hadoop Mahout等工具进行高级别的数据分析。这个过程通常涉及到复杂的算法,处理的数据量和计算量都非常大,旨在发现...

    开源力量公开课第26期-大数据的实时分析与应用案例分享-吴朱华

    - **创新不断涌现**:在大数据的支持下,诸如Google这样的科技巨头能够通过挖掘数据之间的关联关系,开发出一系列创新产品和服务。 #### 三、大数据的好处 - **更多的发现**:企业可以通过大数据技术获取更多有关...

    吴朱华:内存技术哪家强

    HANA的一个代表应用是YunTable MPP内存计算数据库,采用大规模并行处理、列存储技术和动态数据分发等技术,展示了内存计算在大规模数据处理中的潜力。 除了介绍具体的技术和产品,吴朱华还强调了内存计算技术设计的...

Global site tag (gtag.js) - Google Analytics