欢迎来到 fcicq's blog-beta - 敏锐的嗅觉,精准的分析,深刻的探究

版权声明: 网络转载请保留作者(fcicq)及原文链接,其他转载请事先联系(联系方式 留言板)

谈 Project Voldemort

1 关于 Index:
对非树结构的数据查询, 不要用二分查找.
对于不需要修改数据的 Index File, 使用 CDB, 24 bytes (override) per item.
如果还想快就用内存 Hash Table, 对于大小远小于内存的索引来说怎么搞都差不多.

2 Data File:
[ Size ] 可以放在 Data File 中, 但需要推荐的做法是
(1) Offset (Location) + Size 存储在 CDB / Memory. (Index)
正常方法, 先从磁盘上读 Size, 这里隐式使用了 Kernel Readahead.
—没有看代码, 如果不是用下面的方法的话, 上面这句就说中了.
而显式使用 mmap / sendfile (), 因为文件, offset, size 均已知, 可以节省一次磁盘寻道 (SSD 不明显).
—你可能会说, 把 Index 中的下一条也读进来, 两个 offset 经过简单运算不就是 size 吗?
如果可行 & 不会有太大性能损失, 倒也是可以接受的.
(2) 如果没有数据恢复的需求, 去掉 Data File 中的 Size 字段.
(留着倒是也无妨, 如果非二进制数据居多的话也有一定的恢复作用, 应该用不上)

3 目标?
Worker 定位 —这是架构问题. 略
类似 memcached 的内存缓存 O(1). 命中则直接返回.
索引查询 O(1), 倾向于内存.
磁盘开 O_DIRECT, 一次磁盘查询.
(如果不用传统文件系统, 直接块操作则更好)

Reference & Thanks to:
LinkedIn Voldemort 简单介绍

最新文章:

Powered by WordPress 不告诉你几点几点几版, 反正是个崭新的版本...