Это не является прямым ответом на ваш вопрос, но у меня есть некоторый опыт использования произвольного доступа для (больших) больших двоичных объектов в SQLite, и я советую вам не использовать его, если можете. И вот почему:
Капли полностью нарушают формат запроса SQL. Если данные вашего блоба нуждаются в какой-либо обработке, они, безусловно, в какой-то момент будут нуждаться в фильтрации. Какой бы механизм вы ни использовали для фильтрации в SQL, это будет бесполезно в этом отношении.
Работа с двоичными двоичными объектами, размещенными в базах данных, в отличие от двоичных данных в необработанных файлах, ограничивает ваши возможности. Вы не сможете произвольно читать и записывать данные одновременно из нескольких процессов, что возможно для файлов. Вы не можете использовать какой-либо инструмент, который работает с этими данными и предоставляет только интерфейс ввода-вывода файлов. Вы не можете обрезать или изменить размер BLOB-объекта. Файлы просто намного более универсальны.
Может показаться удобным иметь все содержимое одного файла, поскольку это упрощает резервное копирование и передачу, но боль от работы с BLOB-объектами просто не стоит.
Поэтому, как ваш адвокат, я советую вам записывать ваши двоичные объекты как необработанные файлы в файловую систему и просто сохранять ссылку на имя файла в вашей базе данных. Если ваши пятна довольно маленькие и гарантированно не растут, забудьте мой совет.