работа с бинарной базой

ns

Новичок
работа с бинарной базой

Имеется сторонняя база и нужно сделать возможность ее правки, но возник вопрос , как реализовать сохранение измененых данных ?

Ведь fputs и т.д. только заменяют, следовательно нужно :
1) сдвинуть данные следующие за устаревшим блоком для возможности сохранения нового блока данных вместо старого
2) сохранить новый блок.

Но если размер файла будет большой, то это будет очень долго. Может я что-то упустил и есть более разумные методы?

Также надо учитывать, что файл не должен загружаться полностью в память из-за его размеров.
 

rotoZOOM

ACM maniac
Конечно есть более разумные методы. Например работа с БД, используя соответсвующий API для работы с этой конкретной БД. Если этого нет и вы знаете формат файла(ов), где хранятся данные, то быстрее, скорее всего, не получится, если не использовать специальные алгоритмы, а действовать "в лоб". Если другого пути нет, то в твоем случае, IMHO, разумно будет создавать новый файл, в который записывать новую информацию (если это требует вставки/вырезания в середину файла), после чего переименовывать этот новый файл в старый.
 

SiMM

Новичок
> создавать новый файл, в который записывать новую информацию (если это требует вставки/вырезания в середину файла), после чего переименовывать этот новый файл в старый.
И не забывать при этом, что возможна ситуации одновременной работы двух пользователей.
 

ns

Новичок
>>спользуя соответсвующий API для работы с этой конкретной БД.
база в библиотечном формате USMark.
под него написал класс, который пока умеет только считывать данные.

>>после чего переименовывать этот новый файл в старый.
Я тоже так думаю.... для безопасности данных.

А как в этом случае поступают настоящие БД, например mySQL?
Как они производят изменение записей с НЕфиксированной длинной строки? и их удаление?
 

SiMM

Новичок
> Как они производят изменение записей с НЕфиксированной длинной строки?
Заменяют поверх либо добавляют в конец, например.
> и их удаление?
Помечают блок как удалённый, что не исключает возможности дальнейшего использования.
 
Сверху