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...
Redis简介
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份。
产品特征
...
Spanner: Becoming a SQL System论文阅读笔记
继2012年在OSDI年发表了Spanner论文《Spanner: Google’s Globally-Distributed Database》之后,Google在SIGMODE'17上发表了第二篇关于Spanner的论文《Spanner: Becoming a SQL System》。从整个的数据库系统角度看,2012年那篇讲是的Spanner的下半部分Storage Engine的一些feature:数据自动分区和全球部署、多副本Paxos高可用、支持外部一致性的分布式事务。2017年这篇主要讲是讲数据库的上半部分...
以史为鉴:数据模型变迁史
这两天看了篇数据模型的论文,What Goes Around Comes Around。这篇论文是2005年Stonebraker和Hellerstein两位泰斗写的,讲的是数据库的数据模型35年的变迁历史,另外论文还总结了一些经验。
这是一个非常有趣的话题,能够让我们更多地去从市场和产品角度看问题,尤其是考虑到不断迭代的甚至是越来越快地迭代的数据库技术。
数据模型Data Model的9个历史阶段:
Hierarchical(IMS): 1960年代末到197...
数据库系统组件
读了Architecture of a Database System这篇经典论文,挑了些不太熟悉的内容做了笔记。
论文内容基本上谈不上是在讲架构吧,基本上就是罗列了下有哪些组件,而且内容基本上针对原来传统数据库的。
主要包括几个组件:
Client Communication Manager
Process Manager
Relational Query Processor
Transaction Storage Manager
Shared Components and Utilities
Client Session Manager
两层...
What's Really New with NewSQL?
这篇文章介绍的面很广,提到了诸多系统,不过每个点都不太细。另外虽然是16年的文章,但不知道为啥还是感觉有点陈旧了。。。简单来说,当个手册看吧,遇到具体细节问题,可以找文中提到的具体系统参考下。这里捡我感兴趣的点罗列了一下,详细内容读者可以看原文。
DBMS简史
1968年第一个DBMS上线,IBM在数据库领域发力甚早,比如System R,不过没有对外。
70年代,Oracle发布了第一个版本。
...
关于事务的一点琐碎思考
最近又零散地看了一些mvcc/snapshot的东西,有了一些新的理解和观点,记录一下,内容比较碎,不一定正确,欢迎大家讨论拍砖。
在某些实现下,2PC会影响MVCC ?
MVCC相比lock-based的并发控制,可以使得写不阻塞读。不过如果如果使用基于时间戳的行级多版本,在有分布式事务时,有可能遇到类似于下面的问题:2PC中参与者prepare之后收到协调者的commit/abort通知之前是未决的状态,该参与者不知道事务是提交...
浅谈数据库隔离级别
本文介绍了关系型数据库的隔离性。ANSI标准里面定义了Read Committed, Repeatable Read, Serializable隔离级别,Jim Gray等针对ANSI的标准提出了改进,并介绍了Cursor Stability, Snapshot Isolation等隔离级别。