LIME пишет:Я выше писал что обычно новички чего-то попарсят и думают что умеют
Это не так
Теперь понимаешь к чему я это говорил?
Не все так просто в реалиях кровавого девелопмента))
(Добавление)
А если полезная инфа занимает более строки?
Боль
Опыт приходит со временем ))
(Добавление)
LIME пишет:Никак не правильно
Нетривиально решается
По ситуации
О, это полезный совет, спс )
ОК
Дам более полезный
Например можно брать блоки по 1мб
И их парсить как маленькие файлы
Тогда нужно учесть границы блоков
И их отдельно обработать как еще маленькие файлы
Чтобы не дублировать инфу надо ее класть с ключем
Как то так
Так легче?))
Так ещё вопросы появляются
По какому принципу организовывать эти блоки? Ведь нельзя же ровно на 1-ом мегабайте разорвать файл и воткнуть какой-то ограничитель?
И ещё мне не понятно, что из себя должен представлять ограничитель блока? Это может быть обычный возврат каретки с переводом строки?
Так потому и работать с границами блоков отдельно
И чтобы инфу не повторять придумать ключ
Вот вот
Вопросы лавинообразно
А я о чем
(Добавление)
Распарси лог на 30 Гибибайт
Бинарный
Не текстовый
И купи себе медаль смело
LIME пишет:И чтобы инфу не повторять придумать ключ
Ну всё, ты меня запутал окончательно
))
Ну типа если читаем инфу по человекам то номер паспорта делаем ключем
Тогда читаем поблочно
И заносим в бд
И отдельно читаем +- две строки-на границах блоков
Чтоб не терять инфу на разрывах
Тогда можем дублировать инфу
Чтоб на такое не нарваться пишем данные с ключем например по-номеру паспорта
Фуууух
Это примерный вариант
(Добавление)
Границы без признака
Тупо читаем по 1мигибайту
LIME пишет:Ну типа если читаем инфу по человекам то номер паспорта делаем ключем
Тогда читаем поблочно
И заносим в бд
И отдельно читаем +- две строки-на границах блоков
Чтоб не терять инфу на разрывах
Тогда можем дублировать инфу
Чтоб на такое не нарваться пишем данные с ключем например по-номеру паспорта
Фуууух
Это примерный вариант
Мне ещё не приходилось на практике объёмные файлы парсить, но теоретически мне было не понятно, как это реализовывается. Теперь понял, правда пока тоже теоретически. Благодарю за инфу )
Это не инфа о решении
Это инфа о камнях под водой
Не за что
Удачи
LIME, ещё один вопрос возник -- а как же потом "склеивать" разорванный файл?
Никак
Прочли блок
Прочли границу с предыдущим
Обработали
Забыли
Прочли следующий
(Добавление)
Вопросов больше чем ответов)
И это в порядке вещей
LIME пишет:Никак
Прочли блок
Прочли границу с предыдущим
Обработали
Забыли
Прочли следующий
Я протупил )) Исходный же файл мы не меняем, мы извлекаем из него требуемые данные. Поэтому никакой "сборки" исходника не требуется.
Агась)
Менять большой файл это отдельная тема
А еще он может лежать удаленно
И быть архивом
Ооой
Начать и кончить
Страшно тебе?))
LIME пишет:Агась)
Менять большой файл это отдельная тема
А еще он может лежать удаленно
И быть архивом
Ооой
Начать и кончить
Страшно тебе?))
Не, наоборот интересно ))
Тогда еще подкину
Если другие его тоже читают и изменяют?
Блокировка?
Возможно
На каком уровне?
Страшно?
Могу еще придумать траблы но это уже совсем теоретические будут)
(Добавление)
Короче не тривиально
Удачки
LIME пишет:Если другие его тоже читают и изменяют?
Блокировка?
Ну вроде бы да, блокировка.
LIME пишет:На каком уровне?
Не понял этого вопроса... О каких уровнях блокировки идёт речь? Я знаю только одну блокировку, с помощью функции flock().
LIME пишет:Могу еще придумать траблы но это уже совсем теоретические будут)
Пока достаточно и этой инфы ))