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

Откуда: Москва
Сообщений: 9913
alexeyvg
Может, лучше вынести такие справочники в рид-онли файлгруппу?
Если БД одна, то можно и в файл-группу.

Если же БД не одна, то отдельная служебная БД, имхо, предпочтительнее т.к. может, помимо общеупотребимых таблиц, содержать еще и общеупотребимый код, как нетивный, так и CLR.
25 май 16, 13:08    [19217574]     Ответить | Цитировать Сообщить модератору
 Re: Список дат между двумя заданными  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Jovanny
Т.е., вместо использования in-line табличной функции, генерирующей диапазон дат, надо так много телодвижений?
invm
таблицы типа календаря и т.п. выносят в отдельную read-only БД, а в основной БД пользуются синонимами.

iap
От совсем тупого дурака поможет просто пустой триггер INSTEAD OF DELETE,INSERT,UPDATE.
А права на таблицу-календарь отнять у всех, кроме администратора на всё, кроме SELECTа.

Насчёт справочников возражений нет, но для простой последовательности создавать таблицу - это так в духе SQL Server 2000.

вы наверное и в остальном так: распечатали календарь, посмотрели, сожгли и другим смотреть в него запрещаете, пусть свои печатают ...
25 май 16, 13:09    [19217588]     Ответить | Цитировать Сообщить модератору
 Re: Список дат между двумя заданными  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32167
Jovanny
Случай из практики. Было у нас приложение, использующее таблицу-календарь для различных отчётов.
И как-то кто-то по недомыслию или злому умыслу удалил там несколько строк.
Да, вот вспомнил.
У нас как то работа системы остановилась, потому что календарь кончился :-)

Ну и что, баг есть баг, он всегда возможен.

Теперь представьте, что используется код для генерации.
Код этот вкорячен в тысячу мест, где требуется календарь; кто то делает паст-копи, кто то находит новый код в инете, ветки размножаются.
Разные разработчики, за 10 лет, плодят этот код в разных видах, и ещё форматируют его по разному, они появляются и увольняются, один, другой...
В разработчиках у нас бывали англичане, индусы, американцы, exUSSR из разных республик и городов, разной квалификации, с разным стилем оформления кода, и даже без стиля (индус-у него каждый фрагмент кода хаотично отформатирован, с произвольными переводами строки, отступами и т.д.).

И вот такие баги в коде будут появляться (проявляться) регулярно, в разных местах и в разное время.

Вот, скажите, что проще поддерживать, и где меньше вероятность появления багов?
25 май 16, 13:10    [19217594]     Ответить | Цитировать Сообщить модератору
 Re: Список дат между двумя заданными  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32167
Jovanny
Т.е., вместо использования in-line табличной функции, генерирующей диапазон дат, надо так много телодвижений?

Отлично, уже приходим не просто к коду, а к функции :-)

Теперь скажите, зачем делать функцию, генерирующую тысячи раз в секунду одинаковую таблицу, а не записать эту таблицу в память, и использовать?

И скажите, какая будет скорость, учитывая, что сервер не сможет построить адекватной статистика по этим вот перемножениям типа 19211437?
25 май 16, 13:14    [19217630]     Ответить | Цитировать Сообщить модератору
 Re: Список дат между двумя заданными  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
alexeyvg
Код этот вкорячен в тысячу мест, где требуется календарь; кто то делает паст-копи, кто то находит новый код в инете, ветки размножаются.
Разные разработчики, за 10 лет, плодят этот код в разных видах, и ещё форматируют его по разному, они появляются и увольняются, один, другой...
В разработчиках у нас бывали англичане, индусы, американцы, exUSSR из разных республик и городов, разной квалификации, с разным стилем оформления кода, и даже без стиля (индус-у него каждый фрагмент кода хаотично отформатирован, с произвольными переводами строки, отступами и т.д.).

И вот такие баги в коде будут появляться (проявляться) регулярно, в разных местах и в разное время.

Вот, скажите, что проще поддерживать, и где меньше вероятность появления багов?

Как по мне, идеальное решение - системная табличная функция. Везде доступна, хранится в одном месте, не зависит ни от каких объектов, ни от диапазона задаваемый дат.
Тоже свои недостатки.

Что касается таблицы,
Таблица эта вкорячена в тысячу мест, где требуется календарь; кто то делает копии, ... .
Разные разработчики, за 10 лет, плодят эту таблицу в разных видах, и ещё модифицируют её по разному, они появляются и увольняются, один, другой...
25 май 16, 13:18    [19217662]     Ответить | Цитировать Сообщить модератору
 Re: Список дат между двумя заданными  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
alexeyvg
Теперь скажите, зачем делать функцию, генерирующую тысячи раз в секунду одинаковую таблицу, а не записать эту таблицу в память, и использовать?

И скажите, какая будет скорость, учитывая, что сервер не сможет построить адекватной статистика по этим вот перемножениям типа 19211437?

Тут да, не поспоришь, особенно для OLTP систем.
25 май 16, 13:20    [19217679]     Ответить | Цитировать Сообщить модератору
 Re: Список дат между двумя заданными  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Jovanny
alexeyvg
Код этот вкорячен в тысячу мест, где требуется календарь; кто то делает паст-копи, кто то находит новый код в инете, ветки размножаются.
Разные разработчики, за 10 лет, плодят этот код в разных видах, и ещё форматируют его по разному, они появляются и увольняются, один, другой...
В разработчиках у нас бывали англичане, индусы, американцы, exUSSR из разных республик и городов, разной квалификации, с разным стилем оформления кода, и даже без стиля (индус-у него каждый фрагмент кода хаотично отформатирован, с произвольными переводами строки, отступами и т.д.).

И вот такие баги в коде будут появляться (проявляться) регулярно, в разных местах и в разное время.

Вот, скажите, что проще поддерживать, и где меньше вероятность появления багов?

Как по мне, идеальное решение - системная табличная функция. Везде доступна, хранится в одном месте, не зависит ни от каких объектов, ни от диапазона задаваемый дат.
Тоже свои недостатки.

Что касается таблицы,
Таблица эта вкорячена в тысячу мест, где требуется календарь; кто то делает копии, ... .
Разные разработчики, за 10 лет, плодят эту таблицу в разных видах, и ещё модифицируют её по разному, они появляются и увольняются, один, другой...

у вас вообще шапито какое-то, а как вы запрещаете не плодить вашу табличную функцию?
автор
Таблица эта вкорячена в тысячу мест, где требуется календарь;
а функцию вы наверно как-то иначе "вкорячиваете"?
25 май 16, 13:23    [19217702]     Ответить | Цитировать Сообщить модератору
 Re: Список дат между двумя заданными  [new]
invm
Member

Откуда: Москва
Сообщений: 9913
Jovanny
Что касается таблицы,
Таблица эта вкорячена в тысячу мест, где требуется календарь; кто то делает копии, ... .
Разные разработчики, за 10 лет, плодят эту таблицу в разных видах, и ещё модифицируют её по разному, они появляются и увольняются, один, другой...
Что мешает нерадивым разработчикам заниматься тем же самым при наличии "системной табличной функции"?
25 май 16, 13:23    [19217706]     Ответить | Цитировать Сообщить модератору
 Re: Список дат между двумя заданными  [new]
iap
Member

Откуда: Москва
Сообщений: 47194
alexeyvg
Jovanny
Случай из практики. Было у нас приложение, использующее таблицу-календарь для различных отчётов.
И как-то кто-то по недомыслию или злому умыслу удалил там несколько строк.
Да, вот вспомнил.
У нас как то работа системы остановилась, потому что календарь кончился :-)

Ну и что, баг есть баг, он всегда возможен.

Теперь представьте, что используется код для генерации.
Код этот вкорячен в тысячу мест, где требуется календарь; кто то делает паст-копи, кто то находит новый код в инете, ветки размножаются.
Разные разработчики, за 10 лет, плодят этот код в разных видах, и ещё форматируют его по разному, они появляются и увольняются, один, другой...
В разработчиках у нас бывали англичане, индусы, американцы, exUSSR из разных республик и городов, разной квалификации, с разным стилем оформления кода, и даже без стиля (индус-у него каждый фрагмент кода хаотично отформатирован, с произвольными переводами строки, отступами и т.д.).

И вот такие баги в коде будут появляться (проявляться) регулярно, в разных местах и в разное время.

Вот, скажите, что проще поддерживать, и где меньше вероятность появления багов?
Однако, нельзя гарантировать, что все разработчики обязательно будут использовать только таблицу-календарь.
Кто-то будет, а кто-то будет генерировать, как тут рассказано.
Так что таблица сама по себе не спасёт.
25 май 16, 13:33    [19217794]     Ответить | Цитировать Сообщить модератору
 Re: Список дат между двумя заданными  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32167
Jovanny
Таблица эта вкорячена в тысячу мест, где требуется календарь; кто то делает копии, ... .
Разные разработчики, за 10 лет, плодят эту таблицу в разных видах, и ещё модифицируют её по разному, они появляются и увольняются, один, другой...
Да, но таблица то одна. Использование в тысяче мест - это да, но как можно по разному использовать таблицу? Используют одинаково.
Разумеется, разные разработчики, за 10 лет, модифицируют эту таблицу по разному, но это же делается в одном месте.
Вероятность ошибки меньше.

И да, таблица равнозначна функции по большинству критериев "пользы".
Но по производительности функция проигрывает.

Понятно, если в системе календарь используется раз в неделю, то почему бы не написать функцию?
Но по всем параметрам я в функции преимуществ не вижу.
25 май 16, 13:38    [19217837]     Ответить | Цитировать Сообщить модератору
 Re: Список дат между двумя заданными  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
TaPaK
у вас вообще шапито какое-то, а как вы запрещаете не плодить вашу табличную функцию?

Так никто не запрещает ничего плодить - ни таблицы, ни функции.
Ни в моём решении, ни в чьём-либо другом, которые здесь обсуждались.
В этом плане разницы между таблицей и функцией нет, только кроме того, что таблица займёт больше места на диске.
Это уже на совести разработчиков.
автор
Таблица эта вкорячена в тысячу мест, где требуется календарь;
Это была шутка, если вы не поняли.
TaPaK
а функцию вы наверно как-то иначе "вкорячиваете"?
Вы упустили из внимания слово "системная". Знаете, что это значит?
25 май 16, 13:40    [19217846]     Ответить | Цитировать Сообщить модератору
 Re: Список дат между двумя заданными  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32167
iap
Однако, нельзя гарантировать, что все разработчики обязательно будут использовать только таблицу-календарь.
Кто-то будет, а кто-то будет генерировать, как тут рассказано.
Так что таблица сама по себе не спасёт.
Всё таки тут маленькая вероятность.
По крайней мере тогда, когда календарь используется активно.

Вот у нас из 1000 процедур календарь, наверное, в 900
Новый разработчик будет как то смотреть код, смотреть систему, наверное, он календарь заметит. А если заметит, то вряд ли будет искать в инете генератор :-)
По крайней мере, у нас такого не было. А даже если и будет, то это легко поправить.
25 май 16, 13:42    [19217860]     Ответить | Цитировать Сообщить модератору
 Re: Список дат между двумя заданными  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32167
Jovanny
В этом плане разницы между таблицей и функцией нет, только кроме того, что таблица займёт больше места на диске.
Ну, один мегабайт на 100 лет, это не так много :-)
Зато производительность.
25 май 16, 13:44    [19217869]     Ответить | Цитировать Сообщить модератору
 Re: Список дат между двумя заданными  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Я, если честно, пользуюсь и таблицей, и функцией, в зависимости от ситуации.
Просто все как-то уж сильно в пользу таблиц высказывались.)
25 май 16, 13:54    [19217957]     Ответить | Цитировать Сообщить модератору
 Re: Список дат между двумя заданными  [new]
invm
Member

Откуда: Москва
Сообщений: 9913
Jovanny
Я, если честно, пользуюсь и таблицей, и функцией, в зависимости от ситуации.
А можете показать какой-нибудь пример, когда функция оказывается выгоднее таблицы по производительности?
25 май 16, 14:03    [19218043]     Ответить | Цитировать Сообщить модератору
 Re: Список дат между двумя заданными  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
TaPaK
а функцию вы наверно как-то иначе "вкорячиваете"?
Вы упустили из внимания слово "системная". Знаете, что это значит?[/quot]
системная функция принципиально иначе "вкорячивается" в запросы?
25 май 16, 14:04    [19218056]     Ответить | Цитировать Сообщить модератору
 Re: Список дат между двумя заданными  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
этот балаган логично должен завершиться фразой "Ой всё" :)
25 май 16, 14:17    [19218144]     Ответить | Цитировать Сообщить модератору
 Re: Список дат между двумя заданными  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
TaPaK, не вижу смысла по легкому троллить человека... Вот честно :)

Каждый выбирает сам чем пользоваться. Хоть функцией, хоть таблицей. Я например таблицами генеренными пользуюсь на продакшене. Когда у меня на горизонте маячит проверить запрос на миллиарде данных. Зачем мне их в таблицу пихать и оттуда потом читать. Много разных ситуаций, а оттого и возможных решений :)
25 май 16, 14:24    [19218201]     Ответить | Цитировать Сообщить модератору
 Re: Список дат между двумя заданными  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
invm
А можете показать какой-нибудь пример, когда функция оказывается выгоднее таблицы по производительности?
Вряд ли. Так дело не только в производительности. Я стараюсь придерживаться компромиса между производительностью и простотой реализации там, где это возможно.
25 май 16, 14:29    [19218235]     Ответить | Цитировать Сообщить модератору
 Re: Список дат между двумя заданными  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
AlanDenton
TaPaK, не вижу смысла по легкому троллить человека... Вот честно :)

Каждый выбирает сам чем пользоваться. Хоть функцией, хоть таблицей. Я например таблицами генеренными пользуюсь на продакшене. Когда у меня на горизонте маячит проверить запрос на миллиарде данных. Зачем мне их в таблицу пихать и оттуда потом читать. Много разных ситуаций, а оттого и возможных решений :)

мы ж тут не абстракцию обсуждаем, а календарь... Он менялся последний раз 4 октября 1582 года :)
25 май 16, 14:29    [19218236]     Ответить | Цитировать Сообщить модератору
 Re: Список дат между двумя заданными  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Jovanny
invm
А можете показать какой-нибудь пример, когда функция оказывается выгоднее таблицы по производительности?
Вряд ли. Так дело не только в производительности. Я стараюсь придерживаться компромиса между производительностью и простотой реализации там, где это возможно.

вот честно, компромисс в таком разрезе ну ни как не в пользу функций и т.п
25 май 16, 14:30    [19218251]     Ответить | Цитировать Сообщить модератору
 Re: Список дат между двумя заданными  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
TaPaK
мы ж тут не абстракцию обсуждаем, а календарь... Он менялся последний раз 4 октября 1582 года :)

Да? Наверное, я не так понял название топика "Список дат между двумя заданными".))
25 май 16, 14:32    [19218261]     Ответить | Цитировать Сообщить модератору
 Re: Список дат между двумя заданными  [new]
invm
Member

Откуда: Москва
Сообщений: 9913
Jovanny
Так дело не только в производительности. Я стараюсь придерживаться компромиса между производительностью и простотой реализации там, где это возможно.
Что вы имеете в виду под реализацией и чем реализация функцией проще реализации таблицей?
25 май 16, 14:35    [19218291]     Ответить | Цитировать Сообщить модератору
 Re: Список дат между двумя заданными  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Jovanny
TaPaK
мы ж тут не абстракцию обсуждаем, а календарь... Он менялся последний раз 4 октября 1582 года :)

Да? Наверное, я не так понял название топика "Список дат между двумя заданными".))

а даты нынче нечто отстраненное и не связанное с привычной многим, кроме вас (естественно) календарём...
25 май 16, 14:36    [19218294]     Ответить | Цитировать Сообщить модератору
 Re: Список дат между двумя заданными  [new]
Jovanny
Member

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

Как-то у вас с терминами не всё в порядке. Путаете понятия "дата" и "календарь", "функция" и "вызов функции", даёте определение "здравого смысла", правда, непонятно на чём основанное. Вы случайно, не философский факультет заканчивали? )
25 май 16, 14:46    [19218373]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить