Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2018, 23:37   #1
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию А что если Все измененный данные буду дописываться в конец файла, а их старое место в файле будет затираться пробелами ?

Есть данные поступающие с прибора. Текстовые файлы. Что бы их не засовывать в базу данных (много чести) были подготовлены простейшие скрипты для работ с ними, аналоги команд Insert, select, delete, update. Так работает уже лет 8.
В настоящий момент провожу ревизию всего этого добра и возник такой вопрос.
Команды delete, update реализованы так что происходит переписывание всего файла. Это не страшно так как на каждый день свой файл и объем на файл не большой до 2000-7000 строк. А эти операции крайне редки.
Удобно тем, что не меняется порядок строк.

Появилась мысль, а что если сделать по другому. Все измененный данные буду дописываться в конец файла, а их старое место в файле будет затираться пробелами (так же в случае удаления).
Должно быть быстрее, но менятся порядок строк и нужны дополнительные операции по "чистке" базы и, возможно, сортировки строк.

Хочу узнать мнение более опытных товарищей, какой из методов более "правильный" будет? Или реализовать оба, а нужный указывать в команде?
С уважением, Алексей.

Последний раз редактировалось tae1980; 16.03.2018 в 07:59.
tae1980 вне форума Ответить с цитированием
Старый 16.03.2018, 08:17   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Изобретаете СУБД
Black Fregat вне форума Ответить с цитированием
Старый 16.03.2018, 08:56   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
Сообщение от tae1980 Посмотреть сообщение
Что бы их не засовывать в базу данных (много чести)
Зато мозгов мало. БД для этого и придуманы, шоп данные накапливать.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 16.03.2018, 08:57   #4
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
Зато мозгов мало. БД для этого и придуманы, шоп данные накапливать.
Чудесно. А по существу сказать нечего? И это у меня мало мозгов?

Не нужны мне чужие программы, за которые не могу отвечать. Особенно в примитивных задачах. Вам шнурки до сих пор родители завязают? Нет? А как так? Ведь это одни из их задач.
Система проработала без сбоя 8 лет, имея нагрузку в 20 раз больше расчетной. Показатели меня более чем устраивают. Сейчас подшаманим, и оставим ещё лет на 10.
А вы пользуйтесь чем угодно - ваше право. Моё право, пользоваться тем, чем я сочту нужным.
С уважением, Алексей.

Последний раз редактировалось tae1980; 16.03.2018 в 09:08.
tae1980 вне форума Ответить с цитированием
Старый 16.03.2018, 09:21   #5
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Изобретаете СУБД
Вообще-то я её уж написал 4 года назад. И успел раз 5 переписать. Ряд показатель уникальны, аналогов не знаю. Но главное она на 150% меня устраивает, так как подстроенная под мои задачи.
Неужели все тупо пользоваться результатом чужого труда, не понимая, что именно делает чужая программа? А такой примитив как прочить файл в массив (несколько сот строк), обработать его в цикле, выгрузить и так 31-365 раз - это уже сверх сложная задача, для решения которой в обязательном порядке нужны внешние программы?

Но это лирика. Мне же интересна теория. Читал об этой задаче в одной книжке, лет 15 назад (если не больше). Там был подробный разбор всех подобных операций. Но, за давностью лет, вспомнить название и автора не могу.
С уважением, Алексей.

Последний раз редактировалось tae1980; 16.03.2018 в 09:29.
tae1980 вне форума Ответить с цитированием
Старый 16.03.2018, 09:30   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
А по существу сказать нечего?
А что по существу? Устраивает старый вариант - не ломай. Хочется новых ощущений - измени, проверь, устроит - оставь, не устроит - вернись к исходному.
Цитата:
А эти операции крайне редки
зачем ломать тогда?
Цитата:
Должно быть быстрее, но менятся порядок строк и нужны дополнительные операции по "чистке" базы и, возможно, сортировки строк.
а может и медленней станет ))
Цитата:
Не нужны мне чужие программы, за которые не могу отвечать.
ОС тоже чужая прога, свою написал уже ?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.03.2018, 10:07   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Еще веселее - все CISC процессоры содержат чужую прогу...
p51x вне форума Ответить с цитированием
Старый 16.03.2018, 10:19   #8
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А что по существу? Устраивает старый вариант - не ломай. Хочется новых ощущений - измени, проверь, устроит - оставь, не устроит - вернись к исходному.
Так то так. "Работает не трогай" (с) Но интересна теория. Сделать оба варианта не сложно. Но что будет грамотнее с точки зрения теории? Или оба вариант равнозначны и я зря мучу воду? А может есть третий вариант.

Цитата:
Сообщение от Аватар Посмотреть сообщение
зачем ломать тогда?а может и медленней станет ))
Мне интересно, можно назвать это хобби.
Для оценки создается стенд и код гоняется в экстремальных условиях.
ИМХО он и должен быть медленнее, особенно с учетом времени на "чистку" и сортировку файлов. Но эти операции можно вынести за скобки для конечного пользователя, и проводить на автомате скажем ночью.

Цитата:
Сообщение от Аватар Посмотреть сообщение
ОС тоже чужая прога, свою написал уже ?
Это тоже верно. В бытность работы на спекки мы писали и свои ОС и детально, на уровне кода, лазили в CP/M. Сейчас нет такой возможности. Но ВСЕ функции, которые использую, многократно тестирую, что быть в них хоть как-то уверенным. Несколько штук уже было забраковано, так как давали не стабильные результаты. Приходилось искать обходные пути.
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 16.03.2018, 10:21   #9
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

если обновленные данные займут РОВНО столько же места, то имеет смысл работать на старом месте.(вам же все одно надо будет ПОМЕНЯТЬ это место на пробелы)
Цитата:
а их старое место в файле будет затираться пробелами (так же в случае удаления).
отказ от двойной работы.
1.Переписать файл чтобы ЗАМЕНИТЬ запись на пробелы
2.и ПОТОМ добавить новую(обновленную) запись.
P.S. конечно же это будет только одна запись файла, но всего.
прочитать поменять добавить ЗАПИСАТЬ.
Вы этого точно еще хотите?
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 16.03.2018, 10:41   #10
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
если обновленные данные займут РОВНО столько же места, то имеет смысл работать на старом месте.(вам же все одно надо будет ПОМЕНЯТЬ это место на пробелы)
отказ от двойной работы.
1.Переписать файл чтобы ЗАМЕНИТЬ запись на пробелы
2.и ПОТОМ добавить новую(обновленную) запись.
P.S. конечно же это будет только одна запись файла, но всего.
прочитать поменять добавить ЗАПИСАТЬ.
Вы этого точно еще хотите?
1. Я не могу гарантировать, что новые данные занимают столько же места, что и старые. Это конечно не сложно определить. Но что делать если они занимают меньше места? Добить пробелами, не хорошее решение, так как пробелы, в этом случае, станут частью данных (иногда может быть критично).
2. Затирка не потребует перезаписи всего файла, так как можно выставить маркер на нужное место и посимвольно записать информацию/пробелы (её размер известен). А новые данные дописать в конец файла уже как строку. То есть файл не будет переписываться вообще. За счет этого и должно быть быстрее (прочитать можем несколько сот строк, а запишем только две).
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Имеется программа, которая заменяет определенное слово в файле, что изменить чтобы вместо файла, писать в консольном режиме предложение в котором будет меняться слово.-Delphi broiler747 Помощь студентам 0 08.12.2017 20:51
А что если у клуба будет своё физическое место в реале? Alar Свободное общение 41 15.03.2015 17:25
Фалы,паскаль-Найти самое большое число в файле.Если оно чётное вывести его повторно в конец файла Vika2112 Помощь студентам 0 13.12.2012 08:14
Если СЕГОДНЯ не вчера, то что будет завтра? r_tem Microsoft Office Excel 4 12.10.2010 12:16
Что мне будет за то, если я взломаю сайт? Лукманов Александр Безопасность, Шифрование 28 08.03.2009 21:32