Работа с очень большим количеством файлов

В настоящее время я работаю над исследовательским проектом, который включает в себя индексацию большого количества файлов (. ] 240k ); в основном это html, xml, doc, xls, zip, rar, pdf и текст с размерами файлов от нескольких КБ до более 100 МБ.

Со всеми распакованными файлами zip и rar я получаю окончательный итог в один миллион файлов.

Я использую Visual Studio 2010, C #и.NET 4.0 с поддержкой TPL Dataflow и Async CTP V3. Для извлечения текста из этих файлов я использую Apache Tika (, преобразованный с помощью ikvm ), и использую Lucene.net 2.9.4 в качестве индексатора. Я хотел бы использовать новую библиотеку потоков данных TPL и асинхронное программирование.

У меня есть несколько вопросов.:

  1. Получу ли я преимущества в производительности, если буду использовать TPL? В основном это процесс ввода-вывода, и, насколько я понимаю, TPL не дает особых преимуществ, когда вы интенсивно используете ввод-вывод.

  2. Будет ли подход «производитель/потребитель» лучшим способом справиться с этим типом обработки файлов, или есть другие модели, которые лучше? Я думал о создании одного производителя с несколькими потребителями, используя блокирующие коллекции.

  3. Будет ли библиотека потоков данных TPL полезна для такого типа процессов? Кажется, TPL Dataflow лучше всего использовать в какой-нибудь системе обмена сообщениями...

  4. Должен ли я использовать асинхронное программирование или придерживаться синхронного в этом случае?

9
задан svick 6 May 2012 в 01:41
поделиться