Есть ли недостатки в sqlite как формате архивации?

У меня есть несколько огромных папок с небольшими файлами, которые я хочу заархивировать для длительного хранения (около 200 ГБ).

Вместо того, чтобы просто использовать что-то вроде gzip/tar/dar/7zip, я подумываю использовать sqlite

sqlite3 Backup.db ".ar -cv Data"

Независимо от сжатия, я иду к некоторым подводным камням? Есть ли какие-то преимущества у старой простой смолы?

1 ответ

Основной недостаток: вам нужен sqlite3 исполняемый файл с поддержкой архива, когда вам нужно восстановить ваши данные. В зависимости от обстоятельств, у вас может не быть под рукой, но вы с большей вероятностью найдете работающий gzip, tar и др.

Вот почему я особенно педантичен по этому поводу:

  • система MacOS sqlite3 версии, как правило, находятся в пределах досягаемости от актуальных версий, но Apple лишь время от времени обновляет свое программное обеспечение, и многие пользователи Mac могут запускать устаревшие ОС по разным причинам. Следовательно, система MacOS sqlite3 до того, как Mojave не поддерживает архивирование, поэтому для переносимости вам определенно нужно будет установить и обновить пакет Homebrew sqlite3.
  • Homebrew в Linux по умолчанию устанавливает бутылочный (т.е. предварительно скомпилированный двоичный файл) sqlite v3.26, который каким-то образом не поддерживает архивирование. Мне пришлось brew install --build-from-source sqlite3 чтобы исправить это.

Это всего лишь два примера, с которыми у меня есть личный опыт. Платформы, на которых вы планируете работать, могут иметь аналогичные ошибки. Сравните это с "это работает везде" gzip/tar/так далее.

Итак, если вы хотите использовать формат sqlar всерьез, внимательно рассмотрите все обстоятельства и условия, в которых вы будете это делать. Например, на аварийном диске может отсутствовать архивация sqlite3и вы действительно не хотите создавать sqlite с нуля во время аварийного восстановления.


Помимо наличия архива, способного sqlite3Вы также должны рассмотреть вопрос о размерах файлов.

Поскольку sqlar - это, по сути, БД SQLite, он наследует все ограничения этого формата файла. В частности, данные каждого файла хранятся в виде большого двоичного объекта, максимальный размер которого по умолчанию составляет 1 миллиард байт. Кроме того, обработка запросов SQLite приводит к тому, что каждая строка обрабатывается как один большой двоичный объект, что еще больше снижает размер файла.

Сравните это с ZIP (232 для "классического ZIP", 264 для ZIP64) или GNU tar (без ограничений), и у вас может быть еще одна причина выбрать традиционный маршрут.

Другие вопросы по тегам