`
liuxinglanyue
  • 浏览: 547857 次
  • 性别: 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 0.9源代码,云计算机YunTable 0.9 Source Code

    云计算核心技术剖析

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

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

    大数据处理的三大流程以及大数据的价值 大数据处理的三大流程流程数据采集 定义:利用多种轻型数据库来接收发自客户端的数据,并且用户可以通过这些数据库来 进行简单的查询和处理工作。 特点和挑战:并发系数高。 ...

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

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

    infrared-remote-candroid studiodemo

    android studio下载

    【新质生产力】新质生产力赋能智能制造数字化解决方案.pptx

    【新质生产力】新质生产力赋能智能制造数字化解决方案.pptx

    基于matlab实现的用于应用布格重力异常数据反演地下异常密度体.rar

    基于matlab实现的用于应用布格重力异常数据反演地下异常密度体.rar

    node-v8.10.0-linux-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于Yolov5目标检测和deepsort目标跟踪无人机跟踪.zip

    无人机最强算法源码,易于部署和学习交流使用

    数据库课程设计实战.zip

    数据库课程设计后端 使用Springboot + Mybatis + Redis + Maven 数据库课程设计实战.zip,使用到了所有的相关SQL 的操作,如增删改查等,让你可以在一个项目里面,锻炼到所有的数据库相关的知识。项目亲测可以运行,里面含有运行相关的文档,不会的可以丝我请求帮助。 数据库课程设计后端 使用Springboot + Mybatis + Redis + Maven 具体的表和相关的数据如下: 用户(电话号码,密码,身份证号,邮箱,真实姓名,用户类型,性别,地址) 乘客(用户电话号码,乘客身份证号,乘客真实姓名,乘客电话号码,乘客类型,地址) 列车信息(列车编号,车次,列车类型,列车车厢数,列车始发站,列车终点站,列车开车时间,列车到达时间,列车到达日期,列车运行时间,列车状态) 列车座位信息(列车编号,车厢号,座位类型,座位数) 列车经停信息(列车编号,车次,车站编号,车站名,到达时间,总运行时间,开车时间) 订单信息(订单编号,用户电话号码,乘客身份证号码,列车编号,出发站编号,到达站编号,车厢号,座位编号,订单创建时间,订单状态,开车时间)

    咨询的分析方法gl.ppt

    咨询的分析方法gl.ppt

    node-v10.14.0-linux-ppc64le.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    2019年电赛无人机题目(B题)OpenMV相关代码

    These're the OpenMV codes written by microPython in 2019 NUEDC. 2019年电赛无人机题目(B题)OpenMV相关代码(原创).zip

    无人机降落TRT版本.zip

    无人机最强算法源码,易于部署和学习交流使用

    熊出没.zip

    熊出没.zip

    基于SpringBoot和Vue的家教信息平台设计与实现.zip

    基于SpringBoot和Vue的家教信息平台设计与实现.zip 有完整的部署指导文档,源码也是完整的,可以直接运行,里面包含了所有的相关步骤。 本文旨在设计和实现一套基于Java技术的家教信息系统,采用Spring Boot框架构建后端服务,MySQL数据库存储数据,Vue.js作为前端框架实现用户界面。该系统旨在解决家教信息管理的问题,包括家教师资信息管理、用户信息管理以及家教入驻等功能。通过综合运用Java、Spring Boot、MySQL和Vue等技术,实现了系统的高效运行和良好的用户体验。系统提供了用户注册、登录、信息查看和编辑等功能,同时支持家教的发布和查看,用户信息的管理以及家教审核的后台管理。家长可以方便地寻找合适的家教老师,家教老师也能够更便捷地管理自己的信息和相关资料。通过本设计,展示了Java技术在现代化家教信息系统中的应用,为家教行业的信息化管理提供了一种有效的解决方案。该系统的设计与实现将为家长、家教老师和用户提供便利,促进家教行业的发展与进步。 关键词:SpringBoot; MySQL; 系统设计; 家教

    利用CNN进行无人售货机的商品识别.zip

    无人机最强算法源码,易于部署和学习交流使用

    node-v11.10.1-linux-armv6l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    (R语言)-6-箱线图的绘制

    (R语言)-6-箱线图的绘制

Global site tag (gtag.js) - Google Analytics