Лучше группировать по данным на сервере или на клиенте? - PullRequest
2 голосов
/ 15 июля 2011

Я занимаюсь разработкой приложения с использованием c # и sql server 2008 для автоматизации спортивного клуба, и я почти закончил. Теперь я делаю отчеты для своего приложения, создавая хранимую процедуру на сервере sql, которая возвращает данные из приложения c # после передачи некоторых параметров, и в результате отчета, например группировки, количество возвращаемых полей изменяется в зависимости от отправленных параметров. Мой вопрос лучше сделать группировку на сервере SQL и вернуть последний результат и показать его в C # отчет или получить данные без группировки или сортировки и сделать это в C # отчет, который вы знаете, в C # отчеты вы можете создавать группы и выбирать, какие поля для сгруппировать по

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 15 июля 2011

Это зависит.Если опция LINQ является опцией (то есть вы используете платформу сущностей или не используете хранимые процедуры), вы можете программно изменить group by в своем коде C #, продолжая группировать на сервере.

Если вы не можете использовать модель LINQ / Entity, но ваш group by может динамически меняться, выполните группировку на уровне приложения, чтобы вы могли сгруппировать данные так, как вам нужно, на основе пользовательских параметров без использования миллиарда различных параметров запроса.

В противном случае, выполните это на сервере, потому что это уменьшает потребление полосы пропускания, быстрее с точки зрения времени передачи и в целом быстрее, потому что группировка SQL (и общей базы данных) намного быстрее, чем то, что вы делали бы в C #.

Вот интересующие ссылки:

3 голосов
/ 15 июля 2011

Есть несколько конкурирующих факторов:

  • Передача данных по сети относительно медленная (по сравнению с обработкой на сервере, где они хранятся). Кроме того, если вы отправляете слишком много исходящих данных с вашего SQL-сервера, вы рискуете насытить сетевой интерфейс. SQL разработан (помимо прочего), чтобы хорошо агрегировать / группировать данные. Это способствует группировке на SQL Server.
  • SQL-серверы - самый сложный слой для масштабирования. Это позволяет минимизировать обработку на этом сервере и перенести интенсивную обработку на другие уровни приложений (веб-сервер, сервер приложений, клиентское приложение). Альтернативный подход заключается в использовании слоя данных, который хорошо масштабируется (решения NoSQL).

Я подозреваю, что для приложения спортивного клуба вы не будете перегружать свой SQL-сервер. Если это так, я бы сделал группировку на сервере SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...