Проблемы производительности при написании моей собственной файловой системы
Я пишу файловую систему, используя Dokan. Чего я хочу добиться, так это разрешить пользователям доступ к файлам из нескольких источников, как если бы они все были в локальной папке. то есть файл может быть доступен локально, удаленно или в памяти.
Первоначально я создавал заполнители, которые описывают, где на самом деле доступен файл (например, Win8.1 OneDrive). Когда пользователь обращается к файлу, я сначала читаю заполнители. Зная реальное местоположение этого файла, я прочитал реальный и отправил данные обратно в пользовательское приложение.
Примерно через час кодирования я обнаружил, что эта идея серьезно ошибочна. Если реальное местоположение файлов в Интернете, это будет работать. Но если файл доступен локально, мне нужно запросить у моего жесткого диска два файла (заполнитель и реальный файл). Кроме того, если файл доступен в памяти (пользователи делают это для повышения производительности), мне все равно требуется доступ к жесткому диску, что делает бессмысленным кэширование файла в оперативной памяти.
Итак... Я думаю, мне нужно написать свою собственную таблицу файлов, например NTFS MFT. Ну, концепция файловой таблицы проста. Но я не уверен, что смогу написать такой же эффективный, как NTFS. Затем я начал рассматривать базу данных. Но я также не уверен, что это хорошая идея...
Что я должен делать?
Спасибо!
PS. У меня есть только базовые знания о файловых системах.