Google MapReduce

Execution Overview Map调用将输入数据划分成了M splits,可以并行处理;Reduce调用将中间结果分区成了R pieces,分区函数类似于hash(key) mod R。分区个数R和分区函数可以由用户指定。 如上图所示,整体执行流程如下: 用户程序里的MapReduce库首先将输入文件划分成M个(16MB-64MB),然后在一个集群里启动其他进程。 其中有一个进程是特殊的角色:master;其他的worker由master指定工作, »


Google Borgmon

监控是生产环境必需的一部分,是稳定服务的基础。Borg出现于2003年,是Google的调度服务;而Borgmon是Google的监控服务,是对Borg的补充。 监控的挑战和需求: Google体量下,要分析大量系统组件 需要合理的维护成本 既要对单个组件,也要对整体区域等多个维度的测量、分析和报警 在过去的十年里,Google的监控系统从自定义的脚本进化到了Borgmon,提供了新的基于时间序列(time-series)的监控系统。 应用与接口 Google使用varz方法展示内部状态, »


如何使用B-Tree索引

有多种类型的索引,它们各有各的性能特点,常见的索引包括: B-Tree 索引 Hash 索引 空间R-Tree索引 全文索引 B-Tree索引是最常见的索引,当我们讨论索引而没有指明是哪种类型的索引的时候,一般就是指B-Tree索引。 B-Tree索引可以很好地用于单行、范围或者前缀扫描,他们只有在查找使用了索引的最左前缀(Leftmost Prefix)的时候才有用。 P.s. »


覆盖索引(Covering Index)

索引可以用来找到行,也可以用来直接读取需要的数据,因为索引的叶子节点保存了索引的数据。包含查询所需的所有数据的索引称为覆盖索引(Covering Index)。 使用覆盖索引在某些情况下可以显著的提升性能: 对于类似InnoDB这样的引擎来说,二级索引的叶子节点保存了主键值,覆盖索引可以避免回表过程 索引按照索引列进行排序,顺序扫描比随机地从磁盘读取每一行(回表)要要快得多 索引记录通常小于全行大小,因此,如果只读取索引,可以极大地减少数据访问量,进而可以更好的利用缓存 覆盖索引必须保存它所索引的数据, »


OceanBase内存事务引擎

OceanBase 是一个分布式可扩展的关系数据库,采用基线静态数据与动态增量 数据分离存储的架构设计。其内存事务引擎提供了动态数据的存储、写入和查询服务,用户写入的数据被存储在内存中称为memtable的数据结构中。memtable及其周边的事务管理结构共同组成了内存数据库引擎,来实现事务的ACID特性。在事务引擎中,通过多版本的并发控制技术实现读写相互不阻塞,实现只读事务满足“快照隔离”级别;通过经典的行锁方式实现多个写之间的并发控制,实现最高满足“已提交读”的事务隔离级别。 1. 概述 »