当前位置: 首页 > news >正文

精读预告Bigtable

文章目录

    • 1. 引言:
    • 2. 背景

1. 引言:

在本期的精读会中,我们将深入解读另一篇具有里程碑意义的论文——《Bigtable: A Distributed Storage System for Structured Data》。这篇论文详细介绍了 Bigtable 作为谷歌用于管理结构化数据的分布式存储系统,其独特的设计使得 Bigtable 能够在数千台服务器上高效地处理 PB 级数据量。作为谷歌多个核心产品的基础架构,Bigtable 在大规模数据处理、分布式存储系统设计中具有重要的参考意义。

通过本文,我们将带领读者:

  1. 探讨 Bigtable 在 Google诞生的背景,其出现究竟是为了解决什么样的问题;
  2. 深入剖析 Bigtable 的数据模型 和其设计如何实现灵活的存储和访问控制;
  3. 解析 Bigtable 在分布式环境中的 实现过程底层数据结构
  4. 展望 Bigtable 对 大数据存储系统 的影响及其未来可能的发展方向。

欢迎在评论区分享您的观点与见解,期待与您交流讨论!

2. 背景

GFSMapReduce出现后,仍然很长一段时间内没有在大型的分布式系统上可以高并发、保障一致性,并且支持随机读写数据的系统。

当然在本篇论文出现之前,大多数的分布式数据都是通过MySQL来实现对大规模数据的管理的。如果只是维护一个几十乃至几百台服务器的 MySQL 集群其实也并不为过,但是,如果要像 GFS 维护成千上万的服务器,还有能做到吗?我们可以简单的看一下。

例如,我们建立一个MySQL集群来管理全国的人口信息,可以采用垂直拆分和水平拆分两种策略来进行分布式数据管理。

首先,我们可以按照数据库中的表按照业务逻辑进行拆分,每个拆分出来的数据库(或实例)包含一部分表。这种拆分方式适用于业务模块之间耦合度较低的情况。对于全国人口信息管理,可以按照不同的业务模块(如户籍管理)进行垂直拆分。例如:中国目前有34个省级行政区,那么就可以按照每个省级行政性拆一张表进行数据存储,这样可以减少单个数据库的并发压力,提高查询效率。

但是我们又会发现不同省级行政区的人口数量还不一致,中西部人口普遍少一些一张表可能够用,而沿海多一些可能就不够用,所以我们要进行水平拆分,所以我们可以进行水平拆分,将单张表的数据按照一定的规则分布到多个数据库或表中,每个表仅包含数据的一部分。对于全国人口信息管理,可以按照地域、时间或其他业务规则(如Hash、Range等)将人口信息数据分布到不同的数据库或表中。例如我们可以按照身份证信息对4取模,然后每个省级行政区可以均匀的分配到不同的四张表里面。

后期维护怎么样呢,如果遇到如上世纪六七十年代的生育潮,我们继续对数据进行扩容。如果我们只增加 2 台服务器,把各个服务器的分片,从模上 4 变成模上 6,我们就需要在增加服务器之后,搬运大量的数据,而数据迁移时,可能会遇到带宽和存储压力、服务中断、读写复杂性增加、资源浪费和成本问题。同时缩容的情况也是,其集群的“伸缩性”太差,以及后面的维护性工作也不少。

所以,Bigtable的设计目标就有了:

  1. 灵活的资源管理:能够根据实时需求,随时增加或减少服务器数量,以适应业务高峰期和低谷期的变化,实现高效资源利用。

  2. 智能的数据分片:系统能够自动根据数据负载进行分片,当某个分片负载过高时,自动拆分以平衡负载;同时,在添加新服务器后,能够迅速重新分配数据,确保所有节点均衡承担压力。

  3. 高可用性:即使部分节点发生故障,集群仍能继续运行,确保整个系统的稳定性和可靠性。

现在就引入本文主角:Bigtable 是一个分布式存储系统,用于管理结构化数据,设计可以扩展到极大的规模,涵盖PB级数据并分布在数千台通用服务器上。

众多 Google 产品,包括网页索引Google EarthGoogle Finance,都使用 Bigtable 进行数据存储。尽管这些应用对 Bigtable 的需求差异很大——无论是从数据大小(从 URL 到网页,再到卫星图像)还是延迟要求(从后台批量处理到实时数据服务)来看,Bigtable 依然为这些产品提供了一个灵活且高性能的解决方案

实际上,Bigtable 并不是传统意义上的“表(table)”。在其底层,数据的物理存储形式是一个排序的 Map。该 Mapkey行关键字列关键字时间戳组成的复合结构,而 value 则是一个简单的字符串:(row:string, column:string, time:int64) → string

Bigtable 提供了一个简单的数据模型,允许客户端动态控制数据的布局和格式,从而满足各种应用场景的需求。

相关文章:

精读预告Bigtable

文章目录 1. 引言:2. 背景 1. 引言: 在本期的精读会中,我们将深入解读另一篇具有里程碑意义的论文——《Bigtable: A Distributed Storage System for Structured Data》。这篇论文详细介绍了 Bigtable 作为谷歌用于管理结构化数据的分布式存…...

软件架构演变:从单体架构到LLM链式调用

0 前言 软件架构——我们数字世界的蓝图——自20世纪中叶计算机时代诞生以来,已经发生了巨大演变。 20世纪60年代和70年代早期,以大型主机和单体软件为主导。而今天,数字领域已完全不同,运行在由云计算、API连接、AI算法、微服务…...

Redis-“自动分片、一定程度的高可用性”(sharding水平拆分、failover故障转移)特性(Sentinel、Cluster)

文章目录 零、写在前面一、水平拆分(sharding/分片)、故障转移(failover)机制介绍水平拆分(Sharding)故障转移机制 二、Redis的水平拆分的机制有关的配置1. 环境准备2. 配置文件配置3. 启动所有Redis实例4. 创建集群5. 测试集群读/写6. 集群管理 三、Red…...

操作系统(9) (并发-----原子性/互斥临界区/生产者消费者问题/临界区问题三条件/互斥性/进展性/公平性)

目录 1. 并发(Concurrency)的定义 2. 原子性(Atomicity) 3. 互斥(Mutual Exclusion) 4. 生产者-消费者问题(Producer-Consumer Problem) 5. 临界区Critical Section 6. 临界区问题&#xf…...

Django响应

HTTPResponse: 是由Django创造的, 他的返回格式为 HTTPResponse(content响应体,content_type响应体数据类型,status状态码), 可以修改返回的数据类型,适用于返回图片,视频,音频等二进…...

算法:图的相关算法

图的相关算法 1. 图的遍历算法1.1 深度优先搜索1.2 广度优先搜索 2. 最小生成树求解算法普里姆(Prim)算法克鲁斯卡尔(Kruskal)算法 3. 拓扑排序4. 最短路径算法 1. 图的遍历算法 图的遍历是指从某个顶点出发,沿着某条搜索路径对图中的所有顶点进行访问且只访问次的…...

django的models使用介绍。

from django.db import modelsfrom utils.models import CommonModel# Create your models here. class User(CommonModel):#用户数据模型username models.CharField(用户名,max_length32, uniqueTrue)password models.CharField(密码,max_length256)nickname models.CharFi…...

【分布式技术】分布式事务深入理解

文章目录 概述产生原因关键点 分布式事务解决方案3PC3PC的三个阶段:3PC相比于2PC的改进:3PC的缺点: TCCTCC事务的三个阶段:TCC事务的设计原则:TCC事务的适用场景:TCC事务的优缺点:如何解决TCC模…...

力扣hot100-->hash表/map

hash表/map 1. 1. 两数之和 简单 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 …...

基于redis实现延迟队列

Redis实现延时队列 延时队列里装的主要是延时任务,用延时队列来维护延时任务的执行时间。 1、延时队列有哪些使用情景? 1、如果请求加锁没加成功 可以将这个请求扔到延时队列里,延后处理。 2、业务中有延时任务的需要 比如说&#xff0…...

PHP微信小程序共享充电桩系统设计与实现计算机毕业设计源代码作品和开题报告

博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育、辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…...

【网络面试篇】TCP与UDP类

目录 一、综述 1. TCP与UDP的概念 2. 特点 3. 区别 4. 对应的使用场景 二、补充 1. 基础概念 (1)面向连接 (2)可靠的 (3)字节流 2. 相关问题 (1)TCP 和 UDP 可以同时绑定…...

Windows转Mac过渡指南

最近由于工作原因开始使用mac电脑,说实话刚拿到手的时候,window党表示真的用不惯。坚持用一下午之后,发现真的yyds,这篇文章说说mac电脑的基本入门指南。 1. 不会使用mac的触摸板,接上鼠标发现滚轮和windows是反的。 …...

LeetCode100之盛最多水的容器(11)--Java

1.问题描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量 注意 你不能倾斜容器 示例1 输入&…...

【VMware】使用笔记

一、安装 win11支持16.2以上版本,其他版本不兼容 安装参考: 二、设置 1、蓝屏设置 参考:win11打开VMware虚拟机蓝屏解决_win11vmware蓝屏-CSDN博客 2、VMwareTool配置 第一步:移除“open-vm-tools” sudo apt-get autoremo…...

<项目代码>YOLOv8 猫狗识别<目标检测>

YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…...

存储数据库的传输效率提升-ETLCloud结合HBASE

一、大数据存储数据库–HBASE HBase,作为一个开源的分布式列存储数据库,基于Google的Bigtable设计而成,专为处理大规模结构化数据而优化。使用HBase打造大数据解决方案的好处主要包括:高可扩展性,能够处理PB级的数据&…...

HO-XGBoost河马算法优化极限梯度提升树多变量回归预测(Matlab)

HO-XGBoost河马算法优化极限梯度提升树多变量回归预测(Matlab) 目录 HO-XGBoost河马算法优化极限梯度提升树多变量回归预测(Matlab)预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现HO-XGBoost多变量回归预测&…...

【Hive sql面试题】找出连续活跃3天及以上的用户

表数据如下: 要求:求出连续活跃三天及以上的用户 建表语句和插入数据如下: create table t_useractive(uid string,dt string );insert into t_useractive values(A,2023-10-01 10:10:20),(A,2023-10-02 10:10:20),(A,2023-10-03 10:16…...

Linux curl命令下载显示时间/速度/大小

命令: curl -# -O --compressed -w "大小: %{size_download} bytes\n时间: %{time_total} seconds\n速度: %{speed_download} B/s\n" 下载URL链接。 例子: curl -# -O --compressed -w "大小: %{size_download} bytes\n时间: %{time_to…...

9 鸿蒙页面渲染效率优化实战 | 鸿蒙开发筑基实战

9 鸿蒙页面渲染效率优化实战 | 鸿蒙开发筑基实战 作者:杨建宾(华夏之光永存) 摘要 本文聚焦鸿蒙应用页面渲染卡顿、掉帧、长列表加载缓慢等核心痛点,梳理页面渲染全流程的通用优化方案,从布局规范、组件复用、渲染管控…...

【Ubuntu20.04】libudev-dev依赖冲突排查与修复指南

1. 遇到libudev-dev安装问题怎么办? 最近在Ubuntu 20.04上安装libudev-dev时,你是不是也遇到了烦人的依赖冲突?作为一个长期使用Ubuntu的老用户,我完全理解这种挫败感。记得我第一次遇到这个问题时,系统提示"无法…...

系统整体设计方案

业务架构设计项目架构图业务流程设计文档向量整个流程从用户上传文档开始,用户通过前端页面选择文档并设置相关的组织标签和可见信后系统开始接收文档。这个阶段的关键是建立文档的基本记录信息,包括文件的Md5哈希值文件原始名文件大小上传用户等信息。系…...

VisualCppRedist AIO:Windows系统运行库的一站式解决方案

VisualCppRedist AIO:Windows系统运行库的一站式解决方案 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist VisualCppRedist AIO是一个开源项目&#x…...

Win11Debloat:让Windows系统重获新生的一站式自动化优化方案

Win11Debloat:让Windows系统重获新生的一站式自动化优化方案 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter …...

从0到1落地智能仓储:C#上位机+Modbus RTU实现AGV集群调度与货物自动分拣

本文是纯实战、可直接落地的智能仓储完整方案,基于C# .NET 6 + Modbus RTU/Modbus TCP + AGV调度 + 自动分拣,从零搭建一套轻量级、低成本、高可靠的智能仓储系统,适用于电商仓库、工厂原料仓、成品仓、立体库。 无废话、无虚架构,代码可直接复制运行,适合新手从0到1上手智…...

python的模块和包

模块:1:在python里一个.py文件就是一个模块(module)2:模块可以包含:变量,函数,方法等许多内容3:通常把能够实现特定功能的代码,集中放在一个模块里4:模块可以…...

KEIL MDK实战:3分钟将常用C文件封装成LIB库(附标准库管理技巧)

KEIL MDK高效工程管理:C文件封装LIB库的进阶实践 在嵌入式开发领域,随着项目规模扩大,工程文件管理往往成为影响开发效率的关键瓶颈。特别是对于STM32开发者而言,标准外设库、常用算法模块等重复使用的代码如何高效管理&#xff0…...

AI赋能开发:让快马智能生成具备数据清洗与自然语言查询的行情网站

最近在做一个Python行情网站的项目,发现AI辅助开发真的能大幅提升效率。特别是数据清洗和自然语言处理这些传统上比较繁琐的部分,借助InsCode(快马)平台的AI能力,整个过程变得轻松多了。分享一下我的实践心得: 数据清洗自动化 行情…...

告别系统卡顿:RyTuneX全方位性能优化指南

告别系统卡顿:RyTuneX全方位性能优化指南 【免费下载链接】RyTuneX RyTuneX is a cutting-edge optimizer built with the WinUI 3 framework, designed to amplify the performance of Windows devices. Crafted for both Windows 10 and 11. 项目地址: https://…...