Серверы и ИИ: практическое применение
SQLite mode=ro и immutable: разные обещания о файле архива
Mode=ro открывает базу только для чтения данным connection. Immutable сообщает SQLite гораздо больше: файл не может измениться вообще, даже со стороны другого процесса. На этом предположении библиотека пропускает блокировки и обнаружение изменений. Эти режимы не следует считать взаимозаменяемыми способами запретить запись своему отчётному модулю.
Если файл всё же меняется при заявленном immutable, документация допускает неверные результаты запросов и ошибки повреждения. Поэтому активный архив телеметрии нельзя объявлять неизменяемым только ради устранения блокировок или удобства чтения. Требуется реальный отдельный снимок с подтверждённой границей создания и отсутствием последующей записи.
В проекте фиксируют, кто владеет файлом и какие процессы способны его открыть на запись. Права одного пользователя не всегда описывают весь жизненный цикл, особенно при службах обслуживания и обновления архива. Признак read-only в интерфейсе приложения сам по себе не доказывает физическую неизменяемость носителя или файла.
Приёмка сравнивает чтение работающей базы и чтение завершённой отдельной копии. Проверяют корректный режим открытия и наблюдаемость обновлений там, где они ожидаются. Исчезновение BUSY после изменения URI-параметра не является доказательством правильного и поддерживаемого способа доступа к данным.
Основание — SQLite official unversioned documentation snapshot; Download index observed 3.54.1, individual pages not version-tagged, разделы mode=ro; immutable. Сохранён текст публичной справочной публикации; конкретная реализация может поддерживать только часть возможностей. Установленная библиотека, сборка, файловая система и база узла не проверялись. Это проектный сценарий; SQL и сервисные операции на реальных данных не выполнялись.