Skip to content

Latest commit

 

History

History
26 lines (18 loc) · 3.03 KB

02-KeyValueStorage.md

File metadata and controls

26 lines (18 loc) · 3.03 KB

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

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

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

Библиотека должна предоставлять реализацию интерфейса KeyValueStorage. При создании экземпляра KeyValueStorage в конструктор нужно передать директорию, в которой будет сохраняться содержимое базы. Все данные должны храниться в этой директории, в компактном, предпочтительно, бинарном формате.

Хранилище должно быть персистентным, т.е. данные не должны теряться после выключения хранилища. Для этого данные должны писаться на диск. Обратите внимание, что нет необходимости писать данные на диск после каждого изменения. Но после закрытия хранилища методом close() нужно гарантировать, что на диске остался актуальный слепок данных.

Кроме методов чтения и модификации хранилища по ключам также нужно предоставить возможность проитерироваться по всем ключам хранилища.

Согласно спецификации интерфейса, хранилище должно иметь возможность работы с разными типами данных. При этом в этом задании разрабатывать универсальный сериализатор для всех типов данных не требуется. Достаточно продемонстрировать возможность работы с типами данных, которые используются в юнит-тестах.

Для проверки работоспособности решения воспользуйтесь юнит-тестом.

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

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