Форум программистов, компьютерный форум CyberForum.ru

Удаление одной записи из БД без перезаписи всего файла - C++

Восстановить пароль Регистрация
 
sion5
1 / 1 / 0
Регистрация: 15.10.2013
Сообщений: 42
23.04.2014, 18:09     Удаление одной записи из БД без перезаписи всего файла #1
Здравствуйте
Наверное, по моему вопросу много информации в интернете, но я не знаю, как сформулировать его поисковику.

Я собираюсь хранить в бинарном файле небольшую БД. Допустим, имена друзей и номера их телефонов. Как бы так сделать, чтоб удаление одной записи из БД не требовало полной перезаписи всего файла?

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

Для тех, кто считает, что мне не стоит "изобретать велосипед" и создавать что-то своё, а стоит воспользоваться SQLite:
Кликните здесь для просмотра всего текста

Не забудьте эту мысль, когда соберетесь завести детей.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2014, 18:09     Удаление одной записи из БД без перезаписи всего файла
Посмотрите здесь:

C++ Удаление записи из файла
Удаление записи из файла C++
C++ Удаление из файла указанной записи.С++
C++ Удаление файла записи
C++ Удаление записи из бинарного файла
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
23.04.2014, 20:15     Удаление одной записи из БД без перезаписи всего файла #2
Цитата Сообщение от sion5 Посмотреть сообщение
не создавая лишней нагрузки на винчестер
Все операции ввода-вывода выполняются через буфер обмена.
Поэтому, особо не беспокойтесь за винчестер.
nmcf
4265 / 3696 / 1243
Регистрация: 14.04.2014
Сообщений: 14,478
23.04.2014, 20:42     Удаление одной записи из БД без перезаписи всего файла #3
Т. е. ты хочешь свой формат придумать, что ли?
sion5
1 / 1 / 0
Регистрация: 15.10.2013
Сообщений: 42
23.04.2014, 21:07  [ТС]     Удаление одной записи из БД без перезаписи всего файла #4
Да, свой форматик...
Уже придумал кое-что, почитав про FAT и NTFS, но думал, что вдруг кто-то еще идей или чтива подкинет.
newbie666
Заблокирован
23.04.2014, 21:37     Удаление одной записи из БД без перезаписи всего файла #5
Цитата Сообщение от sion5 Посмотреть сообщение
Уже придумал кое-что, почитав про FAT и NTFS, но думал, что вдруг кто-то еще идей или чтива подкинет.
ну расскажи что сам придумал, а так то, если у тебя файл 100 магабайт, почему бы его не загрузить в память и не работать с ним сколько надо, потом один раз сохранить на хард. Или ты хочешь после изменения каждой записи файл на харде менять? Не очень рационально, можешь погуглить в сторону кеша - если уж свсем ничего не придумаешь - так и быть - мозги поднапрягу ))))

Добавлено через 54 секунды
P.S.: Неужели ты думаешь, что, скажем, Oracle, при изменению каждой записи в БД на хард её пишет?
sion5
1 / 1 / 0
Регистрация: 15.10.2013
Сообщений: 42
24.04.2014, 00:06  [ТС]     Удаление одной записи из БД без перезаписи всего файла #6
Цитата Сообщение от newbie666 Посмотреть сообщение
если у тебя файл 100 магабайт, почему бы его не загрузить в память и не работать с ним сколько надо, потом один раз сохранить на хард.
Ну пусть будет 100Гб, а не 100Мб... Не хватало еще его полностью перезаписывать в конце каждого сеанса работы с программой...
Да ладно... Попробую сделать по аналогии с файловой системой. Думал, вдруг есть какие-то более хитрые методики.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2014, 08:12     Удаление одной записи из БД без перезаписи всего файла
Еще ссылки по теме:

Удаление записи из бинарного файла C++
Как без перезаписи удалить строку из файла? C++
Функция getc() и удаление из файла всего, что было считано C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
newbie666
Заблокирован
24.04.2014, 08:12     Удаление одной записи из БД без перезаписи всего файла #7
ты имеешь ввиду не удалять запись в файле, а на харде помечать кластеры как не занятые - типа как при стирание или форматирование?
Yandex
Объявления
24.04.2014, 08:12     Удаление одной записи из БД без перезаписи всего файла
Ответ Создать тему
Опции темы

Текущее время: 10:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru