|
to /7y3uK
В базе данных скорее всего при удалении вставке не всегда, ИМХО, происходит изменение размера файла. Это говорит о том, ИМХО, что не вся часть файла используется. И с помощью этого можно ускорить быполнение операций (например, при удаления записи, она реально не удаляется, а перестраиваются ссылки, при вставке дописывать одну запись в конец, или образовавшуюся пустоту).
Что насчёт реализации удаления оптимальным образом, то скорее всего лучше сохранить послеудаляемый участок файла в памяти, скопировать его на новое место (с момента удаления), а потом обрезать файл (ИМХО, отерация "обрезки" файла или изменения размера) стандартная. Один минус при нажатии резет или при отключении питания получим мусор. Можно осуществлять и побуферное копирования (не весь остаток файла сохранять, а только 1024 байта, например (потом, после копирования первой порции буфер обновлять)). Но первый вариант, ИМХО, побыстрее будет, исклячая очень больших файлов, когда Винде пришодится "свопится".
Для вставки использовать похожий подход.
Лучше, ИМХО, навскидку ничего не придумаю. Ести очень интересуют алгоритмы, то можно выбрать какой-нибудь Open Source проект, где явно эта операция реализована и посмотреть в исходники как разработчики умудрились это сделать. Понимаю геморно, но если очень хочется ...
P.s. думаю эти функции не стандартные оттого, что не существует эффективной их реализации в данной файловой системе.
Последний раз редактировалось Crazy_kettle; 25.12.2004 в 01:14.
|