Bigtable: A Distributed Storage System for Structured Data
\space
Acquirement 收获
- Bigtable’s Data Model: is a sparse, distributed, persistent multidimensional sorted map. The map is indexed by a row key, column key, and a timestamp;
( B i g t a b l e 的 数 据 模 型 : 由 行 键 、 列 键 、 时 间 戳 构 成 的 m a p 。 ) ( Bigtable的数据模型:由行键、列键、时间戳构成的map。) (Bigtable的数据模型:由行键、列键、时间戳构成的map。) - Bigtable uses the distributed Google File System (GFS) to store log and data files.
( B i g t a b l e 用 于 存 储 数 据 和 日 志 的 G F S 分 布 式 文 件 系 统 。 ) (Bigtable用于存储数据和日志的GFS分布式文件系统。) (Bigtable用于存储数据和日志的GFS分布式文件系统。) - Bigtable relies on a highly-available and persistent distributed lock service called Chubby.
( C h u b b y 是 B i g t a b l e 的 高 可 用 、 持 久 分 布 式 锁 服 务 。 ) (Chubby是Bigtable的高可用、持久分布式锁服务。) (Chubby是Bigtable的高可用、持久分布式锁服务。) - The Bigtable implementation has three major components: a library that is linked into every client, one master server, and many tablet servers.
( B i g t a b l e 实 现 的 主 要 组 成 部 分 由 : 每 个 c l i e n t 都 连 接 的 l i b r a r y 、 一 个 m a s t e r 、 多 个 t a b l e t s e r v e r 。 ) (Bigtable实现的主要组成部分由:每个client都连接的library、一个master、多个tablet \space server。) (Bigtable实现的主要组成部分由:每个client都连接的library、一个master、多个tablet server。) - We use a three-level hierarchy analogous to that of a B± tree to store tablet location information:
( B i g t a b l e 的 数 据 定 位 : 用 一 个 类 似 于 B 树 的 三 层 结 构 来 存 储 t a b l e t 的 位 置 信 息 。 ) (Bigtable的数据定位:用一个类似于B树的三层结构来存储tablet的位置信息。) (Bigtable的数据定位:用一个类似于B树的三层结构来存储tablet的位置信息。) - The master keeps track of the set of live tablet servers by Chubby, and the current assignment of tablets to tablet servers, including which tablets are unassigned.
( B i g t a b l e 的 数 据 分 配 : m a s t e r 通 过 C h u b b y 来 追 踪 存 活 t a b l e t s e r v e r s 、 目 前 已 分 配 的 t a b l e t s 到 ) (Bigtable的数据分配:master通过Chubby来追踪存活tablet \space servers、目前已分配的tablets到) (Bigtable的数据分配:master通过Chubby来追踪存活tablet servers、目前已分配的tablets到)
( t a b l e t s e r v e r 情 况 、 未 分 配 的 t a b l e t 情 况 ) (tablet \space server情况、未分配的tablet情况) (tablet server情况、未分配的tablet情况) - The Bigtable 's tablet serving:recover tablet、write operation、read operation.
( B i g t a b l e 的 t a b l e t 服 务 : t a b l e t 恢 复 、 写 操 作 、 读 操 作 。 ) (Bigtable的tablet服务:tablet恢复、写操作、读操作。) (Bigtable的tablet服务:tablet恢复、写操作、读操作。) - The Bigtable 's compaction:minor compaction、merging compaction、major compaction.
( B i g t a b l e 的 压 缩 : 小 压 缩 、 合 并 压 缩 、 大 压 缩 。 ) (Bigtable的压缩:小压缩、合并压缩、大压缩。) (Bigtable的压缩:小压缩、合并压缩、大压缩。)
\space
Introduction 引言
- A distributed storage system for managing structured data at Google called Bigtable.
( B i g t a b l e 是 用 于 管 理 结 构 化 数 据 的 分 布 式 存 储 系 统 。 ) ( Bigtable是用于管理结构化数据的分布式存储系统。) (Bigtable是用于管理结构化数据的分布式存储系统。) - Bigtable has achieved several goals: wide applicability, scalability, high performance, and high availability.
( 实 现 了 广 泛 应 用 性 、 可 扩 展 、 高 性 能 、 高 可 用 。 ) ( 实现了广泛应用性、可扩展、高性能、高可用。) (实现了广泛应用性、可扩展、高性能、高可用。) - These products use Bigtable for a variety of demanding workloads, which range from throughput-oriented batch-processing jobs to latency-sensitive serving of data to end users.
( 适 用 于 面 向 高 吞 吐 量 的 批 处 理 任 务 、 对 延 迟 敏 感 的 服 务 类 产 品 。 ) ( 适用于面向高吞吐量的批处理任务、对延迟敏感的服务类产品。) (适用于面向高吞吐量的批处理任务、对延迟敏感的服务类产品。) - Bigtable provides clients with a simple data model that supports dynamic control over data layout and format, and allows clients to reason about the locality properties of the data represented in the underlying storage.
( 提 供 了 支 持 动 态 控 制 数 据 布 局 及 格 式 的 简 单 数 据 模 型 。 ) ( 提供了支持动态控制数据布局及格式的简单数据模型。) (提供了支持动态控制数据布局及格式的简单数据模型。) - Bigtable schema parameters let clients dynamically control whether to serve data out of memory or from disk.
( 其 模 式 参 数 使 得 C l i e n t 动 态 控 制 是 从 内 存 还 是 磁 盘 中 提 供 数 据 。 ) ( 其模式参数使得Client动态控制是从内存还是磁盘中提供数据。) (其模式参数使得Client动态控制是从内存还是磁盘中提供数据。)
\space
Data Model 数据模型
\space
Map 映射
- A Bigtable is a sparse, distributed, persistent multidimensional sorted map.
( 稀 疏 、 分 布 式 、 持 久 的 多 位 排 序 映 射 。 ) ( 稀疏、分布式、持久的多位排序映射。) (稀疏、分布式、持久的多位排序映射。) - The map is indexed by a row key, column key, and a timestamp; each value in the map is an uninterpreted array of bytes.
( 由 行 键 、 列 键 、 时 间 戳 索 引 , 每 个 值 是 一 个 无 意 义 的 字 节 数 组 。 ) ( 由行键、列键、时间戳索引,每个值是一个无意义的字节数组。) (由行键、列键、时间戳索引,每个值是一个无意义的字节数组。)
( r o w : s t r i n g , c o l u m n : s t r i n g , t i m e : i n t 64 ) (row:string,column:string,time:int64) (row:string,column:string,time:int64) → \rightarrow → s t r i n g string string
\space
Webtable:a large collection of web pages and related information
- In Webtable,The row name is a reversed URL.
( r o w k e y 为 U R L 。 ) ( row\space key为URL。) (row key为URL。) - The contents column family contains the page contents.
( c o n t e n t s c o l u m n f a m i l y 包 含 了 页 的 内 容 。 ) ( contents \space column \space family包含了页的内容。) (contents column family包含了页的内容。) - The anchor column family contains the text of any anchors that reference the page. CNN’s home page is referenced by both the Sports Illustrated and the MY-look home pages, so the row contains columns named anchor:cnnsi.com and anchor:my.look.ca.
( a n c h o r c o l u m n f a m i l y 包 含 了 引 用 此 页 面 的 描 点 文 本 , 包 括 了 S p o r t s I l l u s t r a t e d 和 M Y − l o o k ) ( anchor \space column \space family包含了引用此页面的描点文本,包括了Sports \space Illustrated 和 MY-look) (anchor column family包含了引用此页面的描点文本,包括了Sports Illustrated和MY−look) - Each anchor cell has one version; the contents column has three versions, at timestamps t3, t5, and t6.
( 每 个 a n c h o r c e l l 中 只 有 一 个 版 本 , 而 每 个 c o n t e n t s c o l u m n 有 三 个 版 本 ) ( 每个anchor\space cell中只有一个版本,而每个contents\space column有三个版本) (每个anchor cell中只有一个版本,而每个contents column有三个版本)
\space
Rows 行
- Every read or write of data under a single row key is atomic (regardless of the number of different columns being read or written in the row), a design decision that makes it easier for clients to reason about the system’s behavior in the presence of concurrent updates to the same row.
( 单 个 r o w k e y 下 的 每 个 数 据 的 读 写 操 作 是 原 子 性 的 , 不 管 这 一 行 有 几 个 不 同 列 组 成 。 ) ( 单个row\space key下的每个数据的读写操作是原子性的,不管这一行有几个不同列组成。) (单个row key下的每个数据的读写操作是原子性的,不管这一行有几个不同列组成。)
( 这 是 方 便 C l i e n t 考 虑 如 何 处 理 对 同 一 行 并 发 更 新 时 的 行 为 。 ) (这是方便Client考虑如何处理对同一行并发更新时的行为。) (这是方便Client考虑如何处理对同一行并发更新时的行为。) - Each row range is called a tablet, which is the unit of distribution and load balancing,and dynamically partitioned.
( 一 个 r o w r a n g e 内 的 r o w s 称 为 t a b l e t , 是 动 态 分 布 和 负 载 均 衡 的 单 位 。 ) ( 一个row\space range内的rows称为tablet,是动态分布和负载均衡的单位。) (一个row range内的rows称为tablet,是动态分布和负载均衡的单位。) - Bigtable maintains data in lexicographic order by row key.As a result, reads of short row ranges are efficient and typically require communication with only a small number of machines.
( 由 于 r o w k e y s 是 按 照 字 典 排 序 的 , 所 以 通 过 r o w r a n g e 可 以 高 效 读 取 并 使 得 机 器 间 通 讯 减 少 。 ) ( 由于row\space keys是按照字典排序的,所以通过row\space range可以高效读取并使得机器间通讯减少。) (由于row keys是按照字典排序的,所以通过row range可以高效读取并使得机器间通讯减少。) - For example, in Webtable, pages in the same domain are grouped together into contiguous rows by reversing the hostname components of the URLs:we store data for maps.google.com/index.html under the key com.google.maps/index.html.
( 比 如 在 上 述 的 W e b t a b l e 中 , 将 相 同 领 域 的 页 通 过 将 U R L 的 主 机 名 颠 倒 的 方 法 放 在 连 续 的 行 中 。 ) ( 比如在上述的Webtable中,将相同领域的页通过将URL的主机名颠倒的方法放在连续的行中。) (比如在上述的Webtable中,将相同领域的页通过将URL的主机名颠倒的方法放在连续的行中。)
( 比 如 m a p s . g o o g l e . c o m / i n d e x . h t m l 与 c o m . g o o g l e . m a p s / i n d e x . h t m l 。 ) (比如maps.google.com/index.html与com.google.maps/index.html。) (比如maps.google.com/index.html与com.google.maps/index.html。)
\space
Column Families 列族
- Column keys are grouped into sets called column families, which form the basic unit of access control.
( 一 个 c o l u m n f a m i l i y 由 一 组 相 关 的 c o l u m n k e y 组 成 , 是 访 问 控 制 的 单 位 。 ) ( 一个column\space familiy由一组相关的column\space key组成,是访问控制的单位。) (一个column familiy由一组相关的column key组成,是访问控制的单位。) - A column family must be created before data can be stored under any column key in that family; after a family has
been created, any column key within the family can be used.
( 一 个 c o l u m n f a m i l i y 创 建 之 后 , c o l u m n k e y 才 可 以 被 使 用 。 ) ( 一个column\space familiy创建之后,column\space key才可以被使用。) (一个column familiy创建之后,column key才可以被使用。) - It is our intent that the number of distinct column families in a table be small (in the hundreds at most), and that families rarely change during operation. In contrast, a table may have an unbounded number of columns.
( 独 立 的 c o l u m n f a m i l i y 往 往 只 有 数 百 个 , 而 且 很 少 在 操 作 期 间 更 改 , 而 c o l u m n 数 量 不 受 限 制 。 ) ( 独立的column\space familiy往往只有数百个,而且很少在操作期间更改,而column数量不受限制。) (独立的column familiy往往只有