欢迎来到 fcicq's blog-beta - 敏锐的嗅觉,精准的分析,深刻的探究
谈 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 简单介绍
最新文章:
- (06.21) Google.cn, 请离开中国大陆, 让 Google.com 成为真正的资讯窗口.
- (06.21) Ideapool v2.
- (06.15) 聊 FastCGI.
- (06.03) 万物存在为今时
- (06.03) Services Supervision.
- (05.29) 加入 Debian 阵营.
- (05.25) fcicq 出题你来答: 解答 (7) - Scale Levels.
- (05.21) I still love lighty + lua.
- (05.16) 创始人背景论?
- (05.10) MySQL Scalability.
- (05.07) php-5.2.9-r2 installation notes
- (05.03) RSS & Twitter.
- (04.28) Something interesting in mixi Engineers’ Blog.
- (04.25) Really need Session?
- (04.22) Google Reader API Test.
- (04.20) 关于态度
- (04.17) json-head clone on GAE.
- (04.12) fcicq 出题你来答: 解答 (6) - Key-Values and Indexes Again
- (04.08) 纯属道听途说的笔记
Powered by WordPress 不告诉你几点几点几版, 反正是个崭新的版本...