Необходимо разработать свою простую БД (вообщем, файл) для хранения некоторой информации.
Данные у меня для быстроты выборки в файле должны быть отсортированны.
Например, у меня уже есть файл моей БД с данными. Происходит событие, которое заставляет приложение вписать новые данные в файл (БД). При этом программа определяет (сортировка) что данные надо вставить примерно в середину файла (не в конец!!!).
Как в этом случае поведет себя файловая система?
То есть был файл ==========================
Были новые данные +++
И я вставляю эти данные в файл ========+++===============
Получается, если у меня файл размером 1гб, а я вставляю данные в место в файле, например, примерно в 600мб, то остальные 424мб будут сдвинуты файловой системой? Или файловая система как-то выделит новый блок (не среди блоков файла) и запишет быстро данные в этот блок, но файл станет фрагментирован? То есть, как я понял, информация о том, где искать данные файла хранится в списке. Каждый элемент списка содержит адрес блока данных на ЖД, где лежит очередная порция данных файла. То есть файловая система может взять два соседних блока и вставить между ними новый блок данных (то есть мои новые данные) и связать блоки в нужную последовательность. В данном случае сдвигать 424мб не понадобится.
То есть я имею ввиду, есть два соседних блока 1 и 2 Мне надо вставить между ними новые данные, т.е. блок данных 3.
При этом есть список, где блок 1 указывает что после него идет блок 2. Но теперь берется и меняется последовательность. То есть 1 => 3 => 2
Так как поведет себя современная файловая система?
Насчет файловой системы интересует конкретно работа ext3 и ReiserFS. Ну или какую файловую систему порекомендуете для максимальной производительности в данном случае.
Выбор данных у меня производиться мгновенно. НО волнует вопрос производительности при вставке новых данных. А вставки данных будут очень часто.
Надеюсь, я смог правильно донести суть вопроса :-)