Как обрабатывать большой объем данных



  • Подскажите как оптимально работать с большим массивом данных. Например надо при каждом выполнении задания проверять ID пользователя в списке уже выполненных. Пробовал через блокнот но это слишком долго, нужны таблицы БД. Родная БД мне кажется не приспособлена для таких целей. SQL что ли прикручивать? Подскажите кто , как решает подобные задачи.



  • встроенная бд спокойно обрабатыет огромное количество данных только если база локально на пк



  • said in Как обрабатывать большой объем данных:

    не приспособлена для таких целей. SQL что ли прикручивать? Подскажите кто , как решает подобные задачи.

    аналог блек листа делаете? Сколько id'шников у вас?



  • Есть еще действие поиск файлов, через него тоже можно быстро узнать о наличии/отсутствии нужной записи



  • @Cruzel Пока маленько другим занят. Но списки будут в несколько десятков тысяч. Потому и возник вопрос о производительности.



  • Кстати кто знает как накладываются блокировки в родной БД. Блокируется целиком таблица или построчно? Тоесть если один поток обращается к таблице, то другому придется ждать или как?



  • @Denis_krsk тоже интересует. Не разобрался случаем?



  • @zeor Нет, это видимо одному @support известно :)



  • @Denis_krsk на днях тоже в одной теме задал этот вопрос не дали конкретного ответа у меня текстовый файл 63мб весит когда открываю зависает Bas



  • @GamiD Ну тут можно наверное выход найти, можно же файл частями читать, так по идее будет правильнее, чем ОЗУ забивать такими размерами.



  • @Denis_krsk у меня тама 600т+_ строк хотел по 10т сделать все равно зависал когда в ресурс ставил



  • @GamiD В экшене читать файл можно указать первый байт и последний байт. В цикле просто брать следующий кусок для работы. Скиньте пример файла, попробую глянуть.





  • @GamiD Эмм, у меня спокойно прочитал весь файл за пару секунд, без всяких зависаний:
    0_1518517353381_на форум5.gif


    0_1518517478310_на форум11.png



  • @Fox Но все равно частями будет оптимальней. К примеру загрузили первый 500 строк, обработали, а затем следующие 500 строк загрузили и т.д. Тем более, если вдруг надо в каждом потоке свой экземпляр иметь то 60mb на 100 потоков это уже дофига.



  • @Denis_krsk Не успел закинуть пример скрипта который берёт частями.
    А на счёт многопотока, то проще использовать ресурсы. Читать файл в ресурс >> цикл >> добавить элемент (в ресурс).



  • @Denis_krsk @GamiD Вот пример работы с файлом по частям, берёт по 1000 байт за итерацию.
    Но парсить в список придётся вручную. Так же может обрывать слова, но для примера пойдёт.



  • @Fox у меня зависает наверно у тебя комп по мощнее чем у меня



  • @Fox щас посмотрим что там



  • @Fox спасибо это уже другое дело =)