Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Где лучше обрабатывать строки - на сервере или в приложении?  [new]
fgarfield
Member

Откуда:
Сообщений: 20
Доброго всем времени суток!
Возник такой вопрос. Скажем, у меня в SQL Server есть представление (с данными для клиентского приложения C#) со следующими столбцами: Наименование, Производитель, Цена. В приложении я хочу отображать все эти 3 данных в одном столбце. Как правильнее поступить - добавить в представление ещё один вычисляемый столбец с конкатенацией этих столбцов или же конкатенировать их уже в приложении? и почему?
4 дек 17, 15:14    [21004602]     Ответить | Цитировать Сообщить модератору
 Re: Где лучше обрабатывать строки - на сервере или в приложении?  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
В приложении у Вас есть String.Format. А чтобы лишних вопросов не возникало почитайте про нормализацию данных (три нормальные формы и тд).
4 дек 17, 15:24    [21004635]     Ответить | Цитировать Сообщить модератору
 Re: Где лучше обрабатывать строки - на сервере или в приложении?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7754
fgarfield,

вам все комбинации ситуаций перечислить и все последствия? Какую конкретно задачу решаете?
4 дек 17, 15:27    [21004641]     Ответить | Цитировать Сообщить модератору
 Re: Где лучше обрабатывать строки - на сервере или в приложении?  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
fgarfield
Доброго всем времени суток!
Возник такой вопрос. Скажем, у меня в SQL Server есть представление (с данными для клиентского приложения C#) со следующими столбцами: Наименование, Производитель, Цена. В приложении я хочу отображать все эти 3 данных в одном столбце. Как правильнее поступить - добавить в представление ещё один вычисляемый столбец с конкатенацией этих столбцов или же конкатенировать их уже в приложении? и почему?

Коллега, вот даже с точки зрения нагрузки на сеть. У Вас есть 100 строк с 2 столбцами по 1000 символов. Вы внутри view добавляете третий в 2000 символов как связку первых двух. При селекте по сети полетит в сторону клиента уже 100 строк по 4000 символов в каждой вместо 2000 символов в каждой.
А оно Вам таки надо?
4 дек 17, 15:29    [21004653]     Ответить | Цитировать Сообщить модератору
 Re: Где лучше обрабатывать строки - на сервере или в приложении?  [new]
fgarfield
Member

Откуда:
Сообщений: 20
Владислав Колосов,
AlanDenton,

Есть разные формы отчетов, по которым формируется отчетный перечень товаров. Данные для этих перечней приложение берёт из представления SQL Server. В некоторых формах для экономии места присутствуют составные столбцы, например "Наименование/Производитель/Цена". То есть это типовой столбец, жестко определенный. Вот передо мной и встал выбор - где собирать этот столбец: на сервере или в приложении. В приложении пользователь должен отмечать галочками нужные для отчета столбцы. Вариант собирать такие столбцы на сервере мне нравится больше, потому что этих галочек довольно много, и мне проще написать динамическое создание чек-боксов, чтобы при изменении этих столбцов ничего не менять в коде приложения.
Вот мне и стало интересно - правильный ли это подход (с точки зрения быстродействия, например)
4 дек 17, 15:39    [21004711]     Ответить | Цитировать Сообщить модератору
 Re: Где лучше обрабатывать строки - на сервере или в приложении?  [new]
fgarfield
Member

Откуда:
Сообщений: 20
Andy_OLAP,

Спасибо за ответ. А с точки зрения процессора - где выгоднее делать такие операции - на сервере или на клиентском ПК?
4 дек 17, 15:41    [21004723]     Ответить | Цитировать Сообщить модератору
 Re: Где лучше обрабатывать строки - на сервере или в приложении?  [new]
invm
Member

Откуда: Москва
Сообщений: 9345
fgarfield
Вариант собирать такие столбцы на сервере мне нравится больше...
Вот мне и стало интересно - правильный ли это подход
Правильный.

Подумайте над:
- В дальнейшем данные в таком виде понадобились на стороне сервера.
- Изменились правила конкатенации. Если делать на клиенте потребуется перекомпиляция приложения. Если на сервере - только изменить представление.
4 дек 17, 16:31    [21004927]     Ответить | Цитировать Сообщить модератору
 Re: Где лучше обрабатывать строки - на сервере или в приложении?  [new]
dvim
Member

Откуда: Санкт Петербург
Сообщений: 679
AlanDenton
почитайте про нормализацию данных

Вопрос Тс проще - данные склеивать в запросе или уже на клиенте.

Мне кажется, что простые операции - в запросе.
Если операции строковые сложные, то можно и на клиенте.
4 дек 17, 16:41    [21004962]     Ответить | Цитировать Сообщить модератору
 Re: Где лучше обрабатывать строки - на сервере или в приложении?  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Я вот считаю, что все, что можно выполнить штатными средствами сервера надо делать на сервере.
Абстрактно, логику предоставления данных надо держать на уровне представления в одном месте.
4 дек 17, 16:48    [21004991]     Ответить | Цитировать Сообщить модератору
 Re: Где лучше обрабатывать строки - на сервере или в приложении?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7754
Если есть повторное использования вычисляемых колонок в разных отчетах, то лучше формировать на сервере. Сервер, как правило, мощнее ПК и при этом проще сопровождать проект, если изменится вычисляемый набор.
4 дек 17, 17:19    [21005081]     Ответить | Цитировать Сообщить модератору
 Re: Где лучше обрабатывать строки - на сервере или в приложении?  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Лично я давно забил на best-practices и всю бизнес-логику реализую на сервере, и преобразования - на сервере.
Потому что pivot любую фичу на SQL написать легче, чем компоненту на клиенте, которая эту фичу отрисует.
4 дек 17, 17:34    [21005109]     Ответить | Цитировать Сообщить модератору
 Re: Где лучше обрабатывать строки - на сервере или в приложении?  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
Владислав Колосов
Если есть повторное использования вычисляемых колонок в разных отчетах, то лучше формировать на сервере. Сервер, как правило, мощнее ПК и при этом проще сопровождать проект, если изменится вычисляемый набор.

Все верно. Только вот у автора темы задача другая "со следующими столбцами: Наименование, Производитель, Цена. В приложении я хочу отображать все эти 3 данных в одном столбце.".
И именно поэтому склеивать числовые цены в текстовые представления нужно на клиенте. Потому что сервер выдаст наименование "товар1" и производителя "производитель2" и цену 1234.56. А клиент - по выставлению разных галочек - один захочет увидеть как "товар1;производитель2;1,234.56", другой захочет "Товар1 /10 пробелов/ Производитель1 /5 пробелов/ 1.234,56", а третий захочет "ТОВАР1|ПРОИЗВОДИТЕЛЬ2|1 234.56".
Потому что это не логика, а показ в склеенном виде так, как хотят увидеть. И возможно дальше скопировать в Excel и обработать.
4 дек 17, 17:36    [21005115]     Ответить | Цитировать Сообщить модератору
 Re: Где лучше обрабатывать строки - на сервере или в приложении?  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Andy_OLAP
.
Потому что это не логика, а показ в склеенном виде так, как хотят увидеть. И возможно дальше скопировать в Excel и обработать.

Но поскольку все это хранится... на сервере (*chimes*), то проще отдавать клиенту уже все в готовом виде, реализовав склейку на сервере, чем реализовывать логику склейки на клиенте. потому что в идеале должно быть - DB (данные) - middle ware (преобразование) - client (вывод/ввод). А раз нет середины, где реализовывать функционал - на откуп погромиста.
4 дек 17, 17:41    [21005131]     Ответить | Цитировать Сообщить модератору
 Re: Где лучше обрабатывать строки - на сервере или в приложении?  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1364
Andy_OLAP,

а потом какой либо еще клиент захочет видеть "товар1;производитель2;1,234.56$" и вы ради одного единственного знака "$" полезете компилировать клиента? классно.
4 дек 17, 17:43    [21005134]     Ответить | Цитировать Сообщить модератору
 Re: Где лучше обрабатывать строки - на сервере или в приложении?  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
fgarfield
Andy_OLAP,

Спасибо за ответ. А с точки зрения процессора - где выгоднее делать такие операции - на сервере или на клиентском ПК?

Слейку текстовых символов выгоднее делать на клиенте, зная точно архитектуру его CPU, длину регистров, размер кэша L1 и подставляя уникальные конкретно для него инструкции в машинном коде, написанные на c/c++ и ассемблере. Точно понимая, что сервер перегружен, все его ядра заняты, а на CPU клиента малая загрузка потоков в ядре и не будет сбиваться конвейер инструкций.
Ну это если совсем академично подойти к данному вопросу.
4 дек 17, 17:45    [21005140]     Ответить | Цитировать Сообщить модератору
 Re: Где лучше обрабатывать строки - на сервере или в приложении?  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Ага, и вот у тебя есть клиент для винды, клиент для мака, клиент для ведроида, и клиент для иоса.
И при очередной хотелке бизнеса типа "поменять Иванов И.И. на И.И. Иванов" ты поехал пересобирать 4 клиента вместо апдейта одной вьюхи. Норм план.
4 дек 17, 17:48    [21005147]     Ответить | Цитировать Сообщить модератору
 Re: Где лучше обрабатывать строки - на сервере или в приложении?  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
felix_ff
Andy_OLAP,

а потом какой либо еще клиент захочет видеть "товар1;производитель2;1,234.56$" и вы ради одного единственного знака "$" полезете компилировать клиента? классно.

Именно! Только так! Клиент ВСЕГДА прав. Выложил деньги за товар - и я не только ему ПО перекомпилирую, но еще и при этом станцую Хава-нагилу, при всем моем почтенном возрасте, да еще и спою как Лучано Паваротти.
Или заранее продумаю галочки, при которых будет и "$", и ",", и "." как разделители. Все для любимых клиентов - это не руководители нам зарплату платят, а они платят. Из их кармана наши премии и бонусы. И это нужно помнить.
4 дек 17, 17:48    [21005148]     Ответить | Цитировать Сообщить модератору
 Re: Где лучше обрабатывать строки - на сервере или в приложении?  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
Cammomile
Ага, и вот у тебя есть клиент для винды, клиент для мака, клиент для ведроида, и клиент для иоса.
И при очередной хотелке бизнеса типа "поменять Иванов И.И. на И.И. Иванов" ты поехал пересобирать 4 клиента вместо апдейта одной вьюхи. Норм план.

Минимум безработицы, максимум прибыли, клиент при этом считает деньги и думает - ему заранее прописать в ТЗ, чтобы "поменять Иванов И.И. на И.И. Иванов" менялось одной галочкой, или отказаться от этой идеи как бредовой.
Но я не брезгливый. И шекели не пахнут. Нужно реализовывать хотелки бизнеса не бесплатно, а за счет денег бизнеса - таки разве я против? Таки всегда пожалуйста.
4 дек 17, 17:50    [21005156]     Ответить | Цитировать Сообщить модератору
 Re: Где лучше обрабатывать строки - на сервере или в приложении?  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Только у нас тут форум не про то, как доить бизнес, а про то, как писать вменяемые коды.
4 дек 17, 17:51    [21005159]     Ответить | Цитировать Сообщить модератору
 Re: Где лучше обрабатывать строки - на сервере или в приложении?  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1364

*ищет свой попкорн*


И тут Остапа понесло.
4 дек 17, 17:52    [21005162]     Ответить | Цитировать Сообщить модератору
 Re: Где лучше обрабатывать строки - на сервере или в приложении?  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
Cammomile
Только у нас тут форум не про то, как доить бизнес, а про то, как писать вменяемые коды.

Нет, коллега, у нас тут форум и про то, как писать вменяемые коды и потом на кафедре программирования рассказывать про это студентам, и форум про то, как реализовывать хотелки бизнеса за его деньги.
А что значит "доить бизнес"? Лицензии SQL Enterprise вместо SQL Standard - доить? Поменять view на сервере - доить? Или Вы view будете бесплатно менять?
4 дек 17, 17:53    [21005165]     Ответить | Цитировать Сообщить модератору
 Re: Где лучше обрабатывать строки - на сервере или в приложении?  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
felix_ff,

А потом приходит еще раз заказчик и говорит - Иванову показывайте цену как "1,234.56", а Петрову как "1 234,56". Они потом выгрузку разным получателем будут отправлять, а копипастить из окошка ПО.
И Вы такой гордый весь в белом - "я сейчас view поменяю, и Иванов с Петровым будут унифицированным вариантом пользоваться. И не нужны мне Ваши деньги, я не собираюсь Вас доить, все сделаю бесплатно и однотипно. Мне так виднее, я творец"...
4 дек 17, 17:55    [21005172]     Ответить | Цитировать Сообщить модератору
 Re: Где лучше обрабатывать строки - на сервере или в приложении?  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Десктоп-приложение но все равно оно webМне кажется, вам сюда, коллеги :)
4 дек 17, 18:02    [21005185]     Ответить | Цитировать Сообщить модератору
 Re: Где лучше обрабатывать строки - на сервере или в приложении?  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1364
Andy_OLAP,

на случай вариативности - я постараюсь заранее спроектировать систему так что бы потом не обосраться кирпичами лезть в исходники лишний раз. необходимо правильно выстраивать приоритеты коллега и ценить собственное время. MVVM не зря был придуман.
4 дек 17, 18:06    [21005197]     Ответить | Цитировать Сообщить модератору
 Re: Где лучше обрабатывать строки - на сервере или в приложении?  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
felix_ff
Andy_OLAP,

на случай вариативности - я постараюсь заранее спроектировать систему так что бы потом не обосраться кирпичами лезть в исходники лишний раз. необходимо правильно выстраивать приоритеты коллега и ценить собственное время. MVVM не зря был придуман.

Так я согласен с Вами полностью. Но если у автора темы нет сервера приложений - где ему текстовые поля клеить, внутри view жестко однотипно для всех клиентов, или внутри ПО, где галочками можно предусмотреть хотя бы несколько типовых вариантов склейки? В данном конкретном примере считаю view злом большим, чем все прочие...
4 дек 17, 18:10    [21005202]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить