Cowa писал(а):но все равно найдется несколько байтиков, затерев которые база рухнетzed писал(а):В таком случае, если нет готовых решений, гораздо проще и быстрее сделать свой контейнер изначально не подверженный крушениям.
В том то и дело, что нет таких особенных байтиков Это типа формата RAW для фоток - затирой хоть 99,9% данных нулями, но оставшиеся 0,1% всегда можно просмотреть, а БД можно сравнить с BMP - у которого таки да, есть критические участки, повредив которые, штатными средствами фотку не просмотреть, нужны утилиты по восстановлению.
Простейший контейнер состоит из маркера + собственно данные. Маркер находится непосредственно перед каждой записью с данными, в котором записана вся необходимая инфа (считай все поля таблицы из БД), в том числе размер и CRC следом идущих данных, а также адрес следующего маркера. Вся избыточность инфы - размер маркера, и обычно, хватает 32 байта на всё это дело. Обратите внимание на кэш GE (я приводил ссылки с его подробным описанием) - вот пример такого контейнера, и заметьте - это не БД, а именно контейнер для хранения данных тайлового типа, и ничего балее. Узкоспециализированное решение, которое даёт надёжность и при этом нет избыточности (суммарный размер всех маркеров не превышает 8-15 Мб на 2Гб данных). А SQLite, выходит, слишком унверсален, потому и ненадёжен... Юмор: "Шальной байт - и гигабайты отдыхают", с SQLite становится правдой жизни.
P.S. С возможностями обеспечения надёжности путём резервного копирования данных я знаком, спасибо. Меня интересует не то, как сохранить данные, а как использовать неповреждённые данные, при частичном повреждении БД. Это несколько разные вопросы и задачи.