Я предполагаю, что вопрос здесь заключается в том, «как я могу эффективно выполнять эти задачи?»
Ответ таков: не стоит.Похоже, вы пытаетесь сделать OLAP по дешевке (за исключением того, что, возможно, это не происходит строго в Интернете), и для этого уже есть множество решений.
Поскольку у вас уже есть установленная процедура использования таблицы Excel, PALO может удовлетворить ваши потребности ( edit: бесплатно).
В качестве альтернативы, то, что у вас естьявляется денормализованным набором записей;если вы нормализуете его в несколько наборов и вводите его в базу данных (очевидно, используя скрипт), вы можете позволить своей базе данных позаботиться об интенсивных вычислениях. Редактировать: Существует множество бесплатных баз данных, которые вы можете использовать ( SQL - это язык, а не бренд).Например, PostgrSQL , MySQL
Если вы настаиваете на синтаксическом анализе файлов и анализе файлов самостоятельно, то я предлагаю вам изменить свой алгоритм, чтобы сделать 2 вещи:
Во-первых, получите набор из 50 тыс. Записей, чтобы поместиться в как можно меньший объем памяти.Очевидно, что вы не хотите хранить свои записи в виде строк размером 50 Кб: проанализируйте их и создайте структуру памяти, которая позволит вам получать доступ только к той информации, которая вам нужна. Редактировать: Неважно, неправильно ваш вводdata.
Во-вторых, измените ваш алгоритм так, чтобы он мог выполняться по частям.В настоящее время у вас есть 1 набор записей по 50 КБ и еще один набор записей по 450 КБ. Похоже, вы ожидаете, что ваша программа будет запускаться каждый месяц (или чаще) с полным набором записей + независимо от того, какие записи были добавлены в набор 450 КБ.записей.Если вы начнете хранить инкрементные результаты, вы можете структурировать свой сценарий так, чтобы он обрабатывал (например) до 10 тыс. Записей за раз из набора записей 450 тыс. За раз, а также последовательно запускал несколько экземпляров сценария.- анализировать все 450 тыс. записей каждый месяц, а также иметь удобный способ остановить и запустить процесс на полпути (используя некоторый родительский сценарий).
Для более сложного подхода, посмотрите Разделяй и властвуй в применении к алгоритмам.