2012-02-25 2 views
2

В компании, в которой я работаю, мы создаем приложение для хранения данных, которое будет веб-интерфейсом для большого количества запросов, которые мы запускаем. [Использование ASP.net]Экспорт больших объемов данных с SQL Server с использованием ASP.Net

Некоторые из этих запросов будет приносить более миллиона записей (и к концу года может быть около 2 миллионов записей) -

Большинство будут тысячи, и т.д.

Что такое хороший способ архитектовать приложение таким образом, чтобы вы могли просмотреть запрос, который вы хотите, экспортировать и создать CSV-файл с запрошенными данными.

Я думал о веб-интерфейсе, который вызывает BCP сгенерировать файл и показать вам, когда отчет был создан, чтобы он мог быть загружен, и истекает в течение 24 часов после bei ng создано -

Любые идеи?

Sas

ответ

1

Я архитектуру нечто подобное в прежней жизни. По сути, это приложение командной строки C#, которое выполняло запросы против нашего сервера отчетов.

Некоторые ключевые моменты:

  • Это не имеет значения, как долго они взяли, потому что он был на заднем плане - когда файл был готов, он будет отображаться в интерфейсе пользователя, и пользователь может загрузить его , Они не ждали в реальном времени.

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

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

  • Мы использовали C# и DataReader, а не массовые методы экспорта из-за различных требований к данным. Нам нужно было предоставить гибкость для включения заголовков столбцов или нет, для цитирования данных или нет, для обработки тысяч разделителей и десятичных точек, поддерживающих различные культуры, для применения разных окончаний строк (\ r \ n, \ n, \ r), разных расширений, форматов Unicode/non-Unicode и разных разделителей (запятая, вкладка, канал и т. д.). Были также разные требования для разных клиентов и даже для разных отчетов - некоторые хотели получить уведомление по электронной почте, как только был завершен отчет, другие хотели получить копию отчета, отправленного на какой-либо FTP-сервер, и т. Д.

Есть, вероятно, много требований, о которых вы еще не думали, но я надеюсь, что вы начнете.

+0

Спасибо, это было очень полезно - –

Смежные вопросы