我正在开发用于学习目的的键值存储数据库,为此我正在使用Java。我的数据库将允许三个简单的操作:
set(String key, String Value)
put(String key)
delete(String key)
我的方法是在数据到达后将其持久保存到磁盘。但是,我正在尝试提出一种有效且高效的方法来对文件进行分段,以进行廉价的删除,设置和获取。
最初,我考虑过管理x个多个文件,并使用可以映射到这些文件的哈希函数,以便将负载分为x个文件。对于每个文件,我想找到一种方法来管理数据,而在\ store \情况下无需进行完全扫描,而在\ delete情况下进行文件复制。我考虑过创建一个文件来存储每个键的指针,每个键的长度都固定,并具有在文件中进行随机访问的能力,以便指针指向数据文件中的相应值。但是我仍然有昂贵的删除和获取。我知道我可以使用哈希表将数据存储在内存中,并选择一种缓存技术来管理缓存替换,但是与此同时,我正在尝试一种方法,以充分利用文件存储。