Использование SQLite в качестве файлового кэша - PullRequest
0 голосов
/ 13 марта 2020

Мое приложение C ++ должно поддерживать кэширование файлов, загруженных из сети. Я начал писать собственную реализацию LRU, когда кто-то предложил мне использовать SQLite для хранения идентификатора, файлового блоба (обычно аудиофайлов) и даты и времени добавления / изменения для каждой записи.

У меня есть подтверждение концепции работает хорошо для простого случая, когда один клиент обращается к файлу локальной базы данных SQLite.

Однако мне также необходимо поддерживать множественный доступ различными процессами в моем приложении, а также поддерживать несколько экземпляров приложения - все чтение / запись в / из одной базы данных.

Я нашел кучу постов для исследования, но я хотел бы спросить и здесь экспертов - это разумный вариант использования SQLite и, если да, то какие функции / настройки мне нужно глубже изучить, чтобы поддержать мой случай множественного доступа.

Спасибо.

M.

1 Ответ

0 голосов
/ 13 марта 2020

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

Основным преимуществом SQLite может быть несколько более простая поддержка сортировка списка записей, хотя за счет использования отдельного API запроса. Конечно, БД также предлагает в будущем возможность хранения дополнительных описательных атрибутов без необходимости кодировать их в имени файла или в некоторых дополнительных файлах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...