Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
sion5
1 / 1 / 0
Регистрация: 15.10.2013
Сообщений: 42
#1

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

23.04.2014, 18:09. Просмотров 309. Ответов 6
Метки нет (Все метки)

Здравствуйте
Наверное, по моему вопросу много информации в интернете, но я не знаю, как сформулировать его поисковику.

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

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

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

Не забудьте эту мысль, когда соберетесь завести детей.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2014, 18:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаление одной записи из БД без перезаписи всего файла (C++):

Изменение строки из файла без перезаписи - C++
Привет, пробую без перезаписи файла заменить все буквы строки на большие. Пока что вышло только так: bool...

Как без перезаписи удалить строку из файла? - C++
У мну задание такое есть именно удалить надо строку а не перезаписовать или копировать файл я вот сделал все ето с векторамы,записовал...

Файлы C++. Запись в конец файла, без его перезаписи - C++
Доброго времени суток, уважаемые форумчане! Изучаю работу с файлами в C++ с использованием fstream. Возник вопрос: как сделать так, чтобы...

Функция getc() и удаление из файла всего, что было считано - C++
Функция getc() она считывает по символьно, как сохранить этот считанный текст в переменную ? И как считанный текст удалить из файла? ...

Удаление файла записи - C++
Подскажите пожалуйста функцию удаления файла .txt

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

6
zss
Модератор
Эксперт С++
6537 / 6099 / 2009
Регистрация: 18.12.2011
Сообщений: 15,870
Завершенные тесты: 1
23.04.2014, 20:15 #2
Цитата Сообщение от sion5 Посмотреть сообщение
не создавая лишней нагрузки на винчестер
Все операции ввода-вывода выполняются через буфер обмена.
Поэтому, особо не беспокойтесь за винчестер.
0
nmcf
5547 / 4857 / 1647
Регистрация: 14.04.2014
Сообщений: 19,725
23.04.2014, 20:42 #3
Т. е. ты хочешь свой формат придумать, что ли?
0
sion5
1 / 1 / 0
Регистрация: 15.10.2013
Сообщений: 42
23.04.2014, 21:07  [ТС] #4
Да, свой форматик...
Уже придумал кое-что, почитав про FAT и NTFS, но думал, что вдруг кто-то еще идей или чтива подкинет.
0
newbie666
Заблокирован
23.04.2014, 21:37 #5
Цитата Сообщение от sion5 Посмотреть сообщение
Уже придумал кое-что, почитав про FAT и NTFS, но думал, что вдруг кто-то еще идей или чтива подкинет.
ну расскажи что сам придумал, а так то, если у тебя файл 100 магабайт, почему бы его не загрузить в память и не работать с ним сколько надо, потом один раз сохранить на хард. Или ты хочешь после изменения каждой записи файл на харде менять? Не очень рационально, можешь погуглить в сторону кеша - если уж свсем ничего не придумаешь - так и быть - мозги поднапрягу ))))

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

Удаление записи из файла - C++
Вот код который добавляет 10 записей в файл..(не компилил, но работать он должен) #include <iostream> #include <fstream> using...

Удаление из файла определенной записи - C++
Новые записи сохраняются в файле нормально, а вот как удалить определённую запись не могу понять. Подскажите, если можно то в самой функции...

Удаление из файла указанной записи - C++
Имеется текстовый файл из которого нужно удалить указанную пользователем запись.Каким образом можно реализовать?

Удаление записи из бинарного файла - C++
Задача - удалить запись из бинарного запись по имени find находит запись, которую нужно удалить cur - текущая позиция del - удаляемая...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru