Skip to content

Latest commit

 

History

History
32 lines (23 loc) · 2.34 KB

02-KeyValueStorage.md

File metadata and controls

32 lines (23 loc) · 2.34 KB

2. Работа с бинарными данными

Внимание! Это задание - черновик.

Файловая база данных

Нужно реализовать библиотеку для работы с файловым хранилищем.

Библиотека должна предоставлять реализацию интерфейса KeyValueStorage. Также нужно реализовать фабрику KeyValueStorageFactory, которая будет порождать объекты хранилища. Также потребуется написать стратегии сериализации для ключей и значений.

Все данные должны храниться в указанной при создании хранилища директории, в файле storage.db Данные лежат в бинарном файле следующего формата:

Ключ 1, Смещение значения 1, Ключ 2,
Смещение значения 2, ..., Ключ N,
Смещение значения N, Значение 1,
Значение 2, ..., Значение N

Запятой и пробелов в формате нет, там должно лежать только бинарное представление требуемых величин. Ключи внутри файла должны быть отсортированы.

TODO тестирование через юнит-тест

Подводные камни

  • При запуске приложения нужно убедиться, что директория, в которой предлагается работать, существует.
  • Если файла для хранилища нет, его надо создать; если он есть - надо убедиться, что с ним все в порядке.
  • При чтении из файла нужно проверять его валидность, избегать слишком больших и маленьких значений буферов.
  • Бинарный формат должен быть строго соблюден.