0%

原文:Building a Database on S3

TL;DR

这篇文章讲的是如何实现自己的“云原生”数据库,以及探索S3是否适合作为DB的共享存储。

S3的优点是安全、无需运维、按使用付费,缺点是访问延时高、使用廉价硬件可能会牺牲一致性(这里作者引用了Dynamo,不太确定Dynamo和S3的关系)、更新不保证顺序。

本文的贡献:

  • 演示了如何在S3上实现需要被并发修改的小对象。
  • 演示了S3上如何实现B树。
  • 提出了可以演示如何用S3实现不同一致性级别的协议。
  • 使用TPC-W基准测试了不同一致性级别下使用S3的成本。

本文的目的是在保证可用性和资源利用率的前提下,探索如何将DB的性质尽可能多地搬到云上。

结论:显然只是一次实验,验证了使用S3作为共享存储的可行性,但实用性不高。如果换成EBS的话可能更好一些。它的PU queue有点像Bw-tree。

阅读全文 »

原文:MapReduce: A Major step backwards

TL;DR

这篇文章是两位大佬(DeWitt和Stonebraker)对“MapReduce可以革掉传统的并行RDBMS的命”的论点的回击。

MapReduce对于DB社区而言:

  1. 在大规模数据密集型应用的编程范式角度是一种倒退。
  2. 并非最优化的实现,因其使用暴力搜索而不是索引。
  3. 一点也不新奇 —— 它就是25年前广为人知的技术的又一次实现。
  4. 缺少当今DBMS必备的多种功能。
  5. 与DBMS用户依赖的工具不兼容。

(因此之后若干年大家用高度的热情将这两者又统一起来了)

阅读全文 »

原文:Megastore: Providing scalable, highly available storage for interactive services

TL;DR

Megastore结合了NoSQL的扩展性和RDBMS的便利性,支持局部的ACID、多datacenter间的无缝failover。

Megastore在每个datacenter有一个instance,数据存储在对应的Bigtable中,instance之间使用Paxos协调。

从性能指标来看读写延时有点高,平均在100ms以上。

阅读全文 »

原文:The End of an Architectural Era (It’s Time for a Complete Rewrite)

TL;DR

本文针对新硬件带来的新的趋势,提出了一种全新的OLTP DBMS,H-Store,可以大幅度提高传统的DBMS的性能。

传统的DBMS主要还是沿用System R的架构:

  • 面向磁盘的存储和索引结构。
  • 多线程。
  • 基于锁的并发控制。
  • 基于log的恢复机制。

本文观点是在这套架构上小修小补已经不够了,我们需要全新的设计。

尤其是传统RDBMS想用一套系统满足全部需求的想法已经过时了。

H-Store针对OLTP场景,打破了上面这种架构,主要是充分利用大内存和多节点,结合对OLTP场景的若干假设,省掉log和lock相关的很多机制,从而大幅度提升了性能。

阅读全文 »

原文:SCOPE: Easy and Efficient Parallel Processing of Massive Data Sets

TL;DR

SCOPE是一种分布式批处理语言,将类SQL的脚本编译为可以运行在Cosmos平台上的分布式作业。

它的特点:

  • 同时支持类SQL语法和分步的声明式语法。
  • 支持使用C#编写扩展类和脚本内直接调用C#表达式。
  • 支持导入已有的脚本,且可传递参数。
  • 编译期支持基于开销进行优化,重写执行计划;运行期也支持优化,比如按rack做预聚合。
阅读全文 »

原文:Dryad: Distributed Data-Parallel Programs from Sequential Building Blocks

TL;DR

Dryad是一个分布式批处理框架,相比MapReduce,它的特点是:

  • 支持多种operator组成的DAG,且支持组合多个DAG。
  • DAG中多个顶点可以分配给一个进程。
  • 不同顶点间的消息传递不限于文件,还可以通过TCP和in-memory FIFO。
  • 支持按网络拓扑插入中间节点做部分聚合。

Dryad属于是底层框架,用户真正用到的还是上面的框架,类似于MapReduce和Sawzall的关系。

阅读全文 »

原文:Improving MapReduce Performance in Heterogeneous Environments

TL;DR

这篇文章讲的是如何优化Hadoop在异构环境下的任务调度性能。

任务调度的关键在于如何让长尾任务尽快完成。MapReduce会在最后阶段冗余运行长尾任务,Google的数据显示这么做能提升44%的任务响应速度。

Hadoop的调度策略是冗余运行最慢的任务,而这篇文章提出的LATE(Longest Approximate Time to End)策略则是找最可能最慢结束的任务。在异构环境下LATE可以让任务响应速度达到Hadoop原有策略的2倍。

阅读全文 »

原文:Hive: a warehousing solution over a map-reduce framework

TL;DR

Hive在MapReduce模型上实现了支持类SQL查询的数据仓库,它的改进点主要为:

  • 自己维护了元数据,从而允许了其它的所有优化。
  • 数据在物理上切分为partition和bucket,避免了扫描全量数据。
  • 实现了各种operator,从而支持了大多数关系型操作。
阅读全文 »