Да, в отдельный поток разумно..
Задано много вопросов, может и не мне, но попытаюсь ответить
Я бы не стал так легковесно решать "свой файл", хотя питаю к СУБД глубокую неприязнь. Свой файл хорош если данные фиксированного размера. Понадобится строка напр 100 символов, пусть 1 раз - и что будете делать? Появятся новые поля - вставить их в свой файл не 5 минут. Понадобится сортировка, поиск и.т.п.
"Подушка" далеко не проста в реализации, придется довольно мучительно отлавливать все скроллы. Кэш намного приятнее т.к. его можно сбросить на нижний уровень и забыть. Др. словами есть ф-ция "прочитать запись", если она в кэше то берется оттуда, иначе загружается с диска и помещается в кэш