Вы можете сделать это с LINQ to Objects, если вы находитесь в среде .NET. Потоковое / отложенное выполнение, модель функционального программирования и все операторы SQL. Объединения будут работать в потоковой модели, но одна таблица извлекается, поэтому вам нужно соединить большую таблицу с таблицей меньшего размера.
Простота формирования данных и возможность написания собственных выражений действительно проявились бы в научном приложении.
LINQ для текстового файла с разделителями - это обычная демонстрация LINQ. Вам необходимо предоставить возможность кормить LINQ табличной моделью. Google LINQ для текстовых файлов для некоторых примеров (например, см. http://www.codeproject.com/KB/linq/Linq2CSV.aspx, http://www.thereforesystems.com/tutorial-reading-a-text-file-using-linq/, и т. Д.).
Ожидайте обучения, но это хорошее решение вашей проблемы. Одним из лучших методов лечения по этому вопросу является C # Джона Скита . Возьмите версию «MEAP» у Мэннинга для раннего доступа к его последней редакции.
Я уже проделал такую работу с большими списками рассылки, которые необходимо очищать, удалять и добавлять. Вы неизменно связаны с IO. Попробуйте использовать твердотельные накопители, в частности, серию Intel "E", которая обеспечивает очень высокую производительность записи, и RAID-массив как можно более параллельный. Мы также использовали сетки, но должны были скорректировать алгоритмы, чтобы сделать многоходовые подходы, которые позволили бы уменьшить данные.
Примечание. Я бы согласился с другими ответами, которые требуют загрузки в базу данных и индексации, если данные очень регулярные. В этом случае вы в основном делаете ETL, что является хорошо понятной проблемой в сообществе складов. Однако, если данные нерегулярны, у вас есть ученые, которые просто помещают свои результаты в каталог, у вас есть необходимость в преобразованиях «быстро / точно по времени», и, если большинство преобразований являются однопроходными, выберите ... где ... присоединяйтесь, тогда вы подходите к нему правильно.