Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / PBM + DDL говнокод / 25 сообщений из 54, страница 1 из 3
06.02.2018, 12:42
    #39597374
Kopilogus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
Коллеги, доброго времени суток!

Поделитесь опытом, кто каким образом ограничивает пользователей БД от написания плохого t-sql кода?

На вскидку, есть простые очевидные рекомендации , но к сожалению разработчики их не всегда соблюдают, соответсвенно стоит задача - минимизировать влияние плохого кода на производительность DB и сервера в целом.
К примеру - нельзя создать процедуру в которой используется ORDER BY, GROUP BY, SELECT *, DISTINCT и т.д.

Не сложно написать триггер, который будет обрабатывать такие события, но все таки хотелось бы узнать есть ли возможность использовать политики?

С политиками именования DDL объектов проблем не возникло, а вот с примером выше реализовать рабочую схему ON CHANGE не удалось.

Есть идеи?
...
Рейтинг: 0 / 0
06.02.2018, 12:50
    #39597386
Kopilogus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
Коллеги, также приветствуются прмеры "как не надо делать", для пополнения коллекции шаблонов..
...
Рейтинг: 0 / 0
06.02.2018, 13:34
    #39597422
Кусочек
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
KopilogusК примеру - нельзя создать процедуру в которой используется ORDER BY, GROUP BY, SELECT *, DISTINCT и т.д.



А как же -

Код: sql
1.
2.
WHERE EXISTS  
(SELECT * 



Ну и по Вашей же ссылке:

Use GROUP BY, ORDER BY, or DISTINCT in your query only when absolutely necessary.
...
Рейтинг: 0 / 0
06.02.2018, 13:37
    #39597424
.Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
Запретить разработчикам использование ORDER BY, GROUP BY, SELECT *, DISTINCT и т.д. без отдельного высочайшего разрешения?
Это конгениально!
Достал попкорн, уселся поудобнее.
...
Рейтинг: 0 / 0
06.02.2018, 13:45
    #39597433
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
.ЕвгенийЗапретить разработчикам использование ORDER BY, GROUP BY, SELECT *, DISTINCT и т.д. без отдельного высочайшего разрешения?
Это конгениально!
Достал попкорн, уселся поудобнее.
Ну select * запретить вполне можно. Насчет остального - улыбнуло.
...
Рейтинг: 0 / 0
06.02.2018, 13:51
    #39597440
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
KopilogusК примеру - нельзя создать процедуру в которой используется ORDER BY, GROUP BY, SELECT *, DISTINCT и т.д.

Почему нельзя? А как вы собираетесь выводить сгруппированный результат. Или использовать TOP, OFFSET или оконные функции без ORDER BY ?
Автор статьи имел ввиду что не нужно их лепить везде где хочется, а только исходя их условий задач. А такие задачи каждая вторая будут.
...
Рейтинг: 0 / 0
06.02.2018, 13:51
    #39597441
Kopilogus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
Сон Веры Павловны.ЕвгенийЗапретить разработчикам использование ORDER BY, GROUP BY, SELECT *, DISTINCT и т.д. без отдельного высочайшего разрешения?
Это конгениально!
Достал попкорн, уселся поудобнее.
Ну select * запретить вполне можно. Насчет остального - улыбнуло.

Коллеги, это всего лишь пример, сабж - можно ли реализовать при помощи политик управления?
...
Рейтинг: 0 / 0
06.02.2018, 13:53
    #39597443
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
KopilogusПоделитесь опытом, кто каким образом ограничивает пользователей БД от написания плохого t-sql кода?

На вскидку, есть простые очевидные рекомендации , но к сожалению разработчики их не всегда соблюдаютЭэээ, как можно сделать это автоматически? :-)

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

Всякие анализаторы кода помогут в настолько малом числе случаев, что ИМХО их применение будет сильно вредить, успокаивая "всё хорошо".

Квалифицированный специалист увидит, что человек пишет кривой код, и его не нужно брать с испытательного срока. И он должен этим управлять, даже если вы напишете триггер ,который ругнётся (в 5% случаев) на кривой код и не даст его вставить.

Т.е., затраты на "анализатор" будут, а прибыли в компанию с этих затрат - нет. Так какой смысл?
KopilogusК примеру - нельзя создать процедуру в которой используется ORDER BY, GROUP BY Ээээ, как можно не делать ORDER BY ,если в задании написано "сделать ORDER BY"? Или вы про то, что делают ORDER BY тогда, когда этого не надо? Тогда способ борьбы описан выше.
...
Рейтинг: 0 / 0
06.02.2018, 14:01
    #39597447
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
alexeyvgKopilogusПоделитесь опытом, кто каким образом ограничивает пользователей БД от написания плохого t-sql кода?

На вскидку, есть простые очевидные рекомендации , но к сожалению разработчики их не всегда соблюдаютЭэээ, как можно сделать это автоматически? :-)

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

Всякие анализаторы кода помогут в настолько малом числе случаев, что ИМХО их применение будет сильно вредить, успокаивая "всё хорошо".

Квалифицированный специалист увидит, что человек пишет кривой код, и его не нужно брать с испытательного срока. И он должен этим управлять, даже если вы напишете триггер ,который ругнётся (в 5% случаев) на кривой код и не даст его вставить.

Т.е., затраты на "анализатор" будут, а прибыли в компанию с этих затрат - нет. Так какой смысл?
KopilogusК примеру - нельзя создать процедуру в которой используется ORDER BY, GROUP BY Ээээ, как можно не делать ORDER BY ,если в задании написано "сделать ORDER BY"? Или вы про то, что делают ORDER BY тогда, когда этого не надо? Тогда способ борьбы описан выше.Добавлю, что если уж заговорили о технических средствах избавления от говнокода, то начать нужно с:
- средств разработки,
- хранения исходников в базе версионного контроля,
- привязки изменений к требованиям,
- тестировании,
- автоматических ночных сборках,
- деплоях,
- работать с цепочкой разработка - стабильный тест - продакшен.
и т.п.

А то народ зачастую правит код в продакшене прямо внутри базы (практически как в экзешнике в кодах), и потом рассуждает, как избавиться от говнокода :-)
...
Рейтинг: 0 / 0
06.02.2018, 14:11
    #39597451
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
Kopilogusможно ли реализовать при помощи политик управления?
ну конечно же нет.
вы вот попробуйте сперва свои хотелки формализовать:

звезду в пронципе нельзя использовать, но вообще-то можно, если это часть строки,
умножение, или кусок exists

order by нельзя, но вообще-то можно, если это часть top-а
или же это вставка в кластерный с целью минимального логирования

и т.д.

вы в состоянии всю эту логику запихнуть в политику?
это ж прям парсер надо свой писать,
причем офигительный такой парсер...
...
Рейтинг: 0 / 0
06.02.2018, 14:16
    #39597454
Kopilogus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
X-CiteKopilogusК примеру - нельзя создать процедуру в которой используется ORDER BY, GROUP BY, SELECT *, DISTINCT и т.д.

Почему нельзя? А как вы собираетесь выводить сгруппированный результат. Или использовать TOP, OFFSET или оконные функции без ORDER BY ?
Автор статьи имел ввиду что не нужно их лепить везде где хочется, а только исходя их условий задач. А такие задачи каждая вторая будут.

Это уже другой вопрос, всегда можно временно отключить проверки.
...
Рейтинг: 0 / 0
06.02.2018, 14:24
    #39597460
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
Yasha123вы в состоянии всю эту логику запихнуть в политику?
это ж прям парсер надо свой писать,
причем офигительный такой парсер...И, главное, этим не убрать остальные 90% мест, где можно наговнокодить. Это же только некоторые простые правила.
То есть это не избавит от необходимости читать код, учить, увольнять и т.д. А при контроле "глазами" все перечисленные ляпы будет видно моментально, так зачем делать этот анализатор?
...
Рейтинг: 0 / 0
06.02.2018, 14:24
    #39597461
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
alexeyvgЭэээ, как можно сделать это автоматически? :-)

в студии можно,
если проверок не хватает - можно написать свою, в инете есть примеры
...
Рейтинг: 0 / 0
06.02.2018, 14:35
    #39597468
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
Критикесли проверок не хватает - можно написать свою, в инете есть примеры
так мы как раз про это самое,
про "написать свою"
вы напишите плиз свою, особенно ту, что оценит,
действительно ли в данном коде не нужен order by.
а то на словах-то все можно
...
Рейтинг: 0 / 0
06.02.2018, 14:37
    #39597471
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
alexeyvgИ, главное, этим не убрать остальные 90% мест, где можно наговнокодить. Это же только некоторые простые правила.
То есть это не избавит от необходимости читать код, учить, увольнять и т.д. А при контроле "глазами" все перечисленные ляпы будет видно моментально, так зачем делать этот анализатор?
я думаю, ТС и Критик хорошо споются.
один в состоянии формализовать задачу
и предоставить исчерпывающий список потенциально говнокодных конструкций,
ну а второй запросто это выразит кодом ;)
...
Рейтинг: 0 / 0
06.02.2018, 15:21
    #39597517
Alexander Us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
Kopilogus,

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

Наверное Вам стоит уделить внимание мониторингу (находить пользователей имеющих проблемы с запросами) и помогать/объяснять как улучшить.

Не оспаривая правила которые Вы привели, замечу, что 99% проблем лежит в другом.

Вам надо разобраться что люди не понимают, найти те 3% фишек, которые дадут основную часть увеличения производительности,
а не долбить людей догматическими правилами.

Например, в моей практике пришлось однажды обяснить пользователю (кстати, прекрасный специалист в своей области),
что на таблице можно создать ключ или индекс чтобы запросы выполнялись быстрее.

Короче, просто помогите/обясните людям и будет Вам счастье.
...
Рейтинг: 0 / 0
06.02.2018, 15:27
    #39597525
StarikNavy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
KopilogusК примеру - нельзя создать процедуру в которой используется GROUP BY, DISTINCT и

GROUP BY, DISTINCT то чем вам не угодили?
...
Рейтинг: 0 / 0
06.02.2018, 15:29
    #39597527
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
Alexander Us,

а теперь представьте, что разработчиков у вас 50 штук (у меня примерно столько), добавьте сюда текучку кадров - и вы утоните в этих объяснениях
...
Рейтинг: 0 / 0
06.02.2018, 15:29
    #39597528
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
КритикalexeyvgЭэээ, как можно сделать это автоматически? :-)

в студии можно,
если проверок не хватает - можно написать свою, в инете есть примерыЯ писал про другое. Такое да, можно, и есть много средств для этого.
...
Рейтинг: 0 / 0
06.02.2018, 15:32
    #39597531
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
Kopilogusесть простые очевидные рекомендации Да уж...
Редкостный бред.
...
Рейтинг: 0 / 0
06.02.2018, 15:40
    #39597536
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
invmKopilogusесть простые очевидные рекомендации Да уж...
Редкостный бред.Ладно, многие из них выглядят вполне разумно. Только если без формализма, и понимая, "почему".
Вот ещё есть, пошире списочек: https://www.dbrnd.com/2016/12/database-design-common-practices-for-database-developers-and-application-developers/

Но смысл предложения ТС в другом - можно нанять плохих разработчиков, уволить хороших, настроить средство автоматического запрета говнокода, и получить профит.
Так вот, идея неудачная. Не получиться так сделать.
...
Рейтинг: 0 / 0
06.02.2018, 15:50
    #39597541
.Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
alexeyvgЛадно, многие из них выглядят вполне разумно. Только если без формализма, и понимая, "почему".
Вот ещё есть, пошире списочек: https://www.dbrnd.com/2016/12/database-design-common-practices-for-database-developers-and-application-developers/
При желании можно раскритиковать любые рекомендации, включая указанные.
alexeyvgНо смысл предложения ТС в другом - можно нанять плохих разработчиков, уволить хороших, настроить средство автоматического запрета говнокода, и получить профит.
Так вот, идея неудачная. Не получиться так сделать.
Я думаю, это Админ Роскомнадзор.
...
Рейтинг: 0 / 0
06.02.2018, 16:02
    #39597548
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
alexeyvginvmпропущено...
Да уж...
Редкостный бред.Ладно, многие из них выглядят вполне разумно.
авторAvoid Using GROUP BY , ORDER BY, and DISTINCT
Avoid using GROUP BY , ORDER BY, and DISTINCT as much as possible

Reason: When using GROUP BY, ORDER BY, or DISTINCT, SQL Server engine creates a work table and puts the data on the work table. After that, it organizes this data in work table as requested by the query, and then it returns the final result.
ну вот это вот уж ни в какие ворота не лезет.
неужели же кто-то станет писать group by,
только потому, что ему нечего делать?
ведь или тебе нужны агрегаты,
или у тебя просто будет неверный результат,
схлопнуть группы в строки и не поменять при этом результат -- это как?
не полениться перечислить все нужные колонки еще раз, но уже не в SELECT,
а в GROUP BY?
это типа всем назло?
...
Рейтинг: 0 / 0
06.02.2018, 16:18
    #39597559
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
alexeyvgЛадно, многие из них выглядят вполне разумно.Выглядят может и разумно, только не для оптимизации производительности.
А в причинах описаны, в большинстве, чьи-то фантазии.
...
Рейтинг: 0 / 0
06.02.2018, 16:53
    #39597599
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PBM + DDL говнокод
invmalexeyvgЛадно, многие из них выглядят вполне разумно.Выглядят может и разумно, только не для оптимизации производительности.
А в причинах описаны, в большинстве, чьи-то фантазии.Вообще да, неквалифицированность автора прямо выпирает, если приглядеться :-)
Что то разумно, да, но в целом, как будто автор совсем начинающий.

Впрочем, понятно, если посмотреть на профиль - опытный программист, с неслабым самомнением, но совсем не специалист по MSSQL, высказывает о нём своё мнение, пишет "правила" (!). Я встречал таких, бывало.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / PBM + DDL говнокод / 25 сообщений из 54, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]