如何设计一个K-V存储系统?
自己设计的话,单机基本思路是用hash函数把key映射到数组,数组元素存放数据的索引,用链表来解决冲突。这样通过key到索引,再直接取出数据。数据存放的话,内存和文件都可以,内存可存放热点数据。效率提升的话,可以延迟写操作/批量处理的等方式来提升。
分布式设计的话,考虑partition和replication。
详细参考:
http://www.crazyshell.org/blog/?p=176
http://forchenyun.iteye.com/blog/744935
www.unclejoey.com/tag/key-value/
http://www.oschina.net/question/16840_45384