Google Spanner论文解读

Google Spanner论文解读

Google Spanner是google在2012年公开的存储系统,它的最大特点就是数据分布在全球范围内,支持外部一致性的分布式事务。本文依据论文解读了该系统的设计和实现。

C++中typename关键字的用法

C++中typename关键字的用法

本文介绍了C++中typename关键字的使用方法。
1.用在模板定义里,标明其后的模板参数是类型参数。
2. 模板中标明“内嵌依赖类型名”
3. 例外 (1) 类模板定义中的基类列表。 (2) 类模板定义中的初始化列表。

Ubuntu 12.04编译安装3.15.6新内核

Ubuntu 12.04编译安装3.15.6新内核

本文是Ubuntu 12.04编译安装3.15.6新内核的个人经验,重点是过程中没遇到什么问题,所以对各位读者用处可能不大。大致步骤:下载、解压源码;安装必要的工具;配置;编译;安装;启动新内核。

MyRocks in Facebook UDB

MyRocks in Facebook UDB
MyRocks Paper《MyRocks: LSM-Tree Database Storage Engine Serving Facebook's Social Graph》 这篇文章介绍了Facebook为了解决UDB数据库成本迁移MyRocks的挑战和解决方案。   Introduction 迁至MyRocks所遇到的挑战 在Facebook UDB场景下,MyRocks将存储空间压缩了一半,因此实例数目减半,也意味着UDB集群的CPU和IO硬件资源减半。 Range Scan的Forward和Backward性能不一样,这个主要是底层数据...

浅析Aurora Quorum

浅析Aurora Quorum
  Aurora在SIGMOD18'的论文《Amazon Aurora: On Avoiding Distributed Consensus for I/Os, Commits, and Membership Changes》中描述了Aurora关于共识方案的选择和Quorum方案的详细内容,本文这里做一些简单的分析。     Aurora架构背景 在描述Aurora的Quorum方案前,先介绍下Aurora的系统架构。 Aurora是share-storage、一写多读的架构,构建在MySQL(InnoDB)代码库上,当然后来增加了mult...

Bitcask简介

Bitcask简介
Bitcask是由Basho公司搞的一个产品。 技术设计 数据顺序追加到磁盘上的active data file,并在内存中建立hash索引。 active data file文件长到一定程度就切成old data file,新的数据写入新的active data file。 old data files定期merge成一个merged data file,merge过程中同时会生成一个hint file来索引这个merged data file。 data file存放格式   内存keydir 是一个key -> <file_id, valu...

FLP impossibility证明 阅读笔记

FLP impossibility证明 阅读笔记

分布式系统一致性协议里面有一个FLP impossibility的结论,这个结论是说,在分布式系统中,异步网络(消息延迟可能任意大或丢失,消息可能乱序),只要有一个进程失效(进程死亡或者足够长时间不响应),就不可能设计出一个一致性协议。
该结论由Fisher、Lynch、Paterson三位分布式系统领域的科学家在1985年在论文Impossibility of Distributed Consensus with One Faulty Process证明。本文解读了证明过程。

InnoDB源码解析-事务系统

InnoDB源码解析-事务系统
InnoDB事务系统负责InnoDB层事务管理,快照管理,MVCC等。 事务对象 InnoDB层事务对象为 struct trx_t 类型。 12345678910111213141516 // 部分字段struct trx_t {    trx_id_t id; // 事务开启序    trx_id_t no; // 事务提交序    trx_state_t state; // 事务状态  ...

浅析CAP理论

浅析CAP理论

CAP理论是Eric Brewer在2000年前后提出的一个设计上的折中原则,大意是说,一个系统在Consistency、Availability、Partition Tolerance三者之间无法兼顾,必须舍弃一个。CAP理论作为一个设计折中原则,在后面的几年被人误解,因此Eric Brewer在2012年又写了一篇文章,着重解释了CAP的一些误解,一个系统并非一定要预先在CAP中彻底牺牲一个属性,更多的场景下,没有P发生时,CA可以兼得,而在P发生时,可以选择C或A中的一个,并在P结束后恢复。