purebasic.info

PureBasic forum
Текущее время: Вт июл 07, 2020 6:38 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Чтение очень больших файлов
СообщениеДобавлено: Ср июн 24, 2020 12:45 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 1025
Благодарил (а): 2 раз.
Поблагодарили: 59 раз.
Пункты репутации: 9
Пётр писал(а):
Сергейчик, нужно много памяти, а значит приложение для x64. В коде асм для x86.

Нужно отработать сценарий на x86 загрузки части файла по объёму,по сдвигу на оптимальное время выполнения. :roll:
PS:Базы данных также хронят данные на диске только обработка через доайвер с приоритетом но всё же это время чтения записи,а как многие устроенны по запросам строки и её разбору внутри просто некий тормоз? я типа свою базу самописную так через память сделал на пользовательском уровне в разы быстрее всяких запросов.
Есле хочет пусть попытает счастье с базой типа https://www.cronos.ru/download-demo.html :D


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Чтение очень больших файлов
СообщениеДобавлено: Ср июн 24, 2020 1:13 pm 
Не в сети
ассистент

Зарегистрирован: Чт окт 02, 2014 8:55 am
Сообщений: 18
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
jobless писал(а):
olmak писал(а):
Есть такая задача - читать очень большие файлы (до 10 Гб) для последующей обработки.
...
Нужен конструктивный совет , как лучше решить проблему


Что вы понимаете под последующей обработкой?
Чуть более подробней, если не тайна.
Если обработка каждой строки не зависима, откройте для себя pipe, если зависима sql/nosql (т.е. сначала импорт в СУБД, потом обработка) и т.д. и т.п.

p.s. Постарайтесь серьёзно отнестись к вопросу, если совет действительно нужен.

После считывания из логов предполагается заливка в базу для возможности последующего различного формирования всяческих отчетов. Пока предварительно остановился на mariadb. Но были мысли несложных анализов своими силами , поэтому вначале была такая схема - чтение большого фала (лога) в массив , ну а с масивом уже можно много чего делать. просто объемы информации очень большие , пока с подобным масштабом не сталкивался. Надо обрабатывать дневные логи размером в среднем 2Г, их может быть несколько сотен в день. Поэтому скорость важна


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Чтение очень больших файлов
СообщениеДобавлено: Ср июн 24, 2020 1:18 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 1025
Благодарил (а): 2 раз.
Поблагодарили: 59 раз.
Пункты репутации: 9
olmak писал(а):
jobless писал(а):
olmak писал(а):
Есть такая задача - читать очень большие файлы (до 10 Гб) для последующей обработки.
...
Нужен конструктивный совет , как лучше решить проблему


Что вы понимаете под последующей обработкой?
Чуть более подробней, если не тайна.
Если обработка каждой строки не зависима, откройте для себя pipe, если зависима sql/nosql (т.е. сначала импорт в СУБД, потом обработка) и т.д. и т.п.

p.s. Постарайтесь серьёзно отнестись к вопросу, если совет действительно нужен.

После считывания из логов предполагается заливка в базу для возможности последующего различного формирования всяческих отчетов. Пока предварительно остановился на mariadb. Но были мысли несложных анализов своими силами , поэтому вначале была такая схема - чтение большого фала (лога) в массив , ну а с масивом уже можно много чего делать. просто объемы информации очень большие , пока с подобным масштабом не сталкивался. Надо обрабатывать дневные логи размером в среднем 2Г, их может быть несколько сотен в день. Поэтому скорость важна

А что обрабатываемая инфа только строковая?ведь базы хранят секции(поля)и числовые и под данные типа картинок. :?:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Чтение очень больших файлов
СообщениеДобавлено: Ср июн 24, 2020 1:24 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вт апр 14, 2009 7:22 pm
Сообщений: 412
Благодарил (а): 1 раз.
Поблагодарили: 21 раз.
Пункты репутации: 0
olmak писал(а):
jobless писал(а):
olmak писал(а):
Есть такая задача - читать очень большие файлы (до 10 Гб) для последующей обработки.
...
Нужен конструктивный совет , как лучше решить проблему


Что вы понимаете под последующей обработкой?
Чуть более подробней, если не тайна.
Если обработка каждой строки не зависима, откройте для себя pipe, если зависима sql/nosql (т.е. сначала импорт в СУБД, потом обработка) и т.д. и т.п.

p.s. Постарайтесь серьёзно отнестись к вопросу, если совет действительно нужен.

После считывания из логов предполагается заливка в базу для возможности последующего различного формирования всяческих отчетов. Пока предварительно остановился на mariadb. Но были мысли несложных анализов своими силами , поэтому вначале была такая схема - чтение большого фала (лога) в массив , ну а с масивом уже можно много чего делать. просто объемы информации очень большие , пока с подобным масштабом не сталкивался. Надо обрабатывать дневные логи размером в среднем 2Г, их может быть несколько сотен в день. Поэтому скорость важна


Вы мой вопрос поняли, его уточняющую часть?
Повторюсь по другому, например при обработке записи № 666 нужно помнить, что было в 66-й и/или 6-й?
Пока подозрение, что проблемы вы сами себе придумали и решаете.
Ещё раз что такое по вашему обработка?
p.s. "для возможности последующего различного формирования всяческих отчетов." - хоть намекните про всяческие!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Чтение очень больших файлов
СообщениеДобавлено: Ср июн 24, 2020 1:46 pm 
Не в сети
ассистент

Зарегистрирован: Чт окт 02, 2014 8:55 am
Сообщений: 18
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
kvitaliy писал(а):
Проверил с List вместо массива, где то на треть быстрее вышло.
[/code]

Вот этот вариант получился совсем неплохо. На фале 3.07 Гб Результаты такие :
Общее время = 35сек
Скорость обработки 89мб/c
Скорость обработки 588698стр/c
Большое спасибо . Это может уже быть приемлимым вариантом. Хотя крутятся все-таки мысли про чтение в память и паралельную мнгопроцессорную обработку


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Чтение очень больших файлов
СообщениеДобавлено: Ср июн 24, 2020 1:48 pm 
Не в сети
ассистент

Зарегистрирован: Чт окт 02, 2014 8:55 am
Сообщений: 18
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Пётр писал(а):
В коде должны быть хотя бы элементарные проверки.
Спасибо за правки кода


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Чтение очень больших файлов
СообщениеДобавлено: Ср июн 24, 2020 2:00 pm 
Не в сети
ассистент

Зарегистрирован: Чт окт 02, 2014 8:55 am
Сообщений: 18
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
jobless писал(а):
Вы мой вопрос поняли, его уточняющую часть?
p.s. "для возможности последующего различного формирования всяческих отчетов." - хоть намекните про всяческие!

По-моему , указано уже более чем достаточно входных данных . Честно говоря я не понимаю , какие еще детали тут важны. Я написал , что это логи , могу уточнить : логи прокси-сервера . Каждая строка содержит данные типа - пользователь(login) ip url получено-принято данных . Нужно будет анализировать траффик , кол-во запросов пользователя , максимально посещаемые ресурсы и возможно многое другое. Как я уже писал , планируется заливка в СУБД , чтобы можно было делать удобно и быстро формировать запросы, например используя SQL


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Чтение очень больших файлов
СообщениеДобавлено: Ср июн 24, 2020 2:11 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вт апр 14, 2009 7:22 pm
Сообщений: 412
Благодарил (а): 1 раз.
Поблагодарили: 21 раз.
Пункты репутации: 0
olmak писал(а):
jobless писал(а):
Вы мой вопрос поняли, его уточняющую часть?
p.s. "для возможности последующего различного формирования всяческих отчетов." - хоть намекните про всяческие!

По-моему , указано уже более чем достаточно входных данных . Честно говоря я не понимаю , какие еще детали тут важны. Я написал , что это логи , могу уточнить : логи прокси-сервера . Каждая строка содержит данные типа - пользователь(login) ip url получено-принято данных . Нужно будет анализировать траффик , кол-во запросов пользователя , максимально посещаемые ресурсы и возможно многое другое. Как я уже писал , планируется заливка в СУБД , чтобы можно было делать удобно и быстро формировать запросы, например используя SQL


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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Чтение очень больших файлов
СообщениеДобавлено: Чт июн 25, 2020 6:23 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вт апр 14, 2009 7:22 pm
Сообщений: 412
Благодарил (а): 1 раз.
Поблагодарили: 21 раз.
Пункты репутации: 0
Нашёл у себя фрагмент логов одного из хостингов.
записей(строк) 47078
Самое ресурсное поле UserAgent и суммарно для него нужно 4261438.
Но как и должно быть уникальных из 47 тысяч только 968 и для хранения нужно всего 102552.
Плюс память под индексацию ссылок на словари естественно, но это зависит от реализации.
На моих объёмах достаточно 2 байт соответственно в основной записи и в словаре.
В результате (4261438 + (2 * 47078)) / (102552 + (2 * 968)) = без копеек в 41 раз меньше памяти требуется.

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

Естественно могут быть случаи заставляющие держать в памяти что то на пределах её размеров или заведомо превышающее, но тогда организуется страничная подкачка, всякие индексы активности страниц и т.д и т.п.
И рассуждения в категориях стандартных функций PureBasic в таком случае так же не уместны.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Чтение очень больших файлов
СообщениеДобавлено: Ср июл 01, 2020 6:24 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вт апр 14, 2009 7:22 pm
Сообщений: 412
Благодарил (а): 1 раз.
Поблагодарили: 21 раз.
Пункты репутации: 0
https://habr.com/ru/company/dcmiran/blog/509126/
замечательная статья, на мой взгляд в тему!


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB