编写键值存储
我想写一个键值存储(可能用Python),主要是为了积累经验,因为我觉得这是一个非常有用的产品。我有几个问题。一般来说,键值对是如何在内存和磁盘中存储的?怎么把存储在磁盘上的东西加载回内存?键值存储会一次性把所有的键值对都放在内存里吗?还是说是从磁盘中读取的?
我试着找一些相关的资料,但没找到太多,希望这里有人能帮我解答。
7 个回答
3
如果你想在Python中做一个键值存储来学习,最简单的办法就是使用pickle模块。这个模块可以快速方便地把任意的Python数据写入一个持久的存储中,然后再把它读回来。
24
这完全取决于你想深入了解的复杂程度。如果你从一个简单的 Python dict
开始,把它以各种方式保存到文件中(其中使用 pickle 可能是最简单的),你可以一直深入到实现一个完整的数据库系统。
你可以了解一下 redis
—— 这是一个用 C 语言写的键值存储系统,像一个服务器“数据库”一样运行。它有很好的文档和易于理解的代码,所以你可以从中借鉴一些想法来实现你的 Python 版本。
如果想更深入,可以看看 B 树的相关内容。
关于你具体的问题:当数据库的大小超过某个限制时,你无法把所有数据都放在内存里,所以你需要一种可靠的方法从硬盘加载数据。此外,还要考虑这个存储是单客户端还是多客户端,这对实现方式有很大的影响。