Я разрабатываю базу данных хранилища значений ключей для учебных целей и использую для этого Java.Моя база данных позволяет выполнять три простые операции:
set(String key, String Value)
put(String key)
delete(String key)
Мой подход заключается в сохранении данных на диске после их поступления.Тем не менее, я пытаюсь найти хороший и эффективный способ сегментировать мой файл для дешевого удаления, установки и получения.
Изначально я думал об управлении x несколькими файлами и использовал хеш-функцию, которая может сопоставляться с этими файлами, чтобы разделить нагрузку на x файлов.Для каждого файла я хочу найти способ управления данными без необходимости полного сканирования в случае \ store \ и дублирования файлов в случае \ delete.Я подумал о создании файла для хранения указателей для каждого ключа с фиксированной длиной и возможностью произвольного доступа к файлу, чтобы указатели указывали на соответствующее значение в файле данных.Но у меня все еще есть дорогие удаления и получения.Я знаю, что могу использовать Hash-таблицу для хранения данных в памяти и выбрать один из методов кэширования для управления заменой кэша, но с этим я пытаюсь найти способ извлечь максимальную пользу из файлового хранилища.