log-structured-storage
lss
一句话概括
基于log能够完成数据库操作,且会带来各种好处
大纲
1- 传统数据库模型在将数据持久化到磁盘上时操作会很复杂.
2- 基于log的数据库模型避免了上述复杂性
3- 下面是介绍如何通过log来完成数据库的各项操作
3-1 增加一个元素(两条log,一条新元素,一条新元素表)
3-2 如何找到最新的元素表(读最后一条 记录,或者单独的存一个block记录最后的元素表位置,虽然不怎么log base了)
3-3 如何解决磁盘爆炸的问题
3-3-1 传统模型在磁盘爆炸时表现糟糕
3-3-2 logbase 可以将log分为固定长度的chunk,在磁盘不够时选一个chunk进行重建
3-3-3 介绍这种操作的好处
3-3-3-1 这种重建操作实际上带来了很大的灵活性,1. 我们实际上可以选择任意的chunk进行重建(这样的话与传统模型不同我们实际上可以不用去重写那些没有变的数据) 2. 我们可以挑选重建chunk的时间,可以等到某个chunk完全被重写在重建(实际上直接删掉就行)
4- 其他优点
4-1 1. crash后恢复很容易. 2. 可以将写请求缓存在内存中 然后定时的同步到磁盘上. 3. 备份可以增量备份 4. 因为只会在最后面写log而不会修改已有的数据 所以可以无锁的直接并发读,对于写请求可以使用乐观锁?
5- 列举其他已经使用这用这种技术的系统
作者的话
log base用在数据库上超赞
bitcask
问题在于merge process 如何与work process 合作,假设使用两个线程则in-memory-index就必须加锁