man1 пишет:нужно ведь чтобы все операции выполнялись примерно с одинаковыми затратами
Уверены?
Зависит от задач. В вебе характерно сильное преобладание чтения над записью, разница доходит до порядка и больше.
Если вы можете читать в 2 раза быстрее, хотя при этом писать в 5 раз медленнее - это окажется выигрышной стратегией.
А любая транзакционная среда принципиально не делает update, это всегда insert + delete - очевидно, что update не может выполняться с той же скоростью, но СУБД отлично при этом живёт.
Но не о том спорите. Что делать на конкурентном r/w? Как не дать читать данные, которые ещё пишутся? Ставить эксклюзивный лок? Тогда имейте в виду, что этой штуке даже до тупого mysql как до луны пешком.
Как разбирать, что корректно, а что нет, если в момент записи блока (а пуще того - перезаписи!) оборвали электричество? И случайный объём файла состоит из новых данных, а остаток - из старых?
Саня_1991 пишет:А по выборке файлов скажем поиск будет быстрее чем по одному большому файлу
Если известен offset - то вы не правы. Как ни парадоксально, поиск по известному смещению быстрее поиска по пути ФС. Такой подход практикуется как минимум одним хайлоадом (но не помню, каким) - писать загружаемые файлы в датафайл, в базу - смещение от начала и длину. Потом по смещению указанное число байт читать.
Если это делается для понимания всей той кухни, что за 4 десятилетия работы наработали РСУБД и с пониманием, что весь этот код никогда не будет использоваться - то отличное начинание. Вооружайтесь книгам по транзакционности и ACID. Наработано много всего, и на то есть причины. Грабель весьма много, начиная с банального вопроса "как безопасно изменить данные в строке".