|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
SERG1257 Никогда не задумывались - почему этот миф столь устойчив, у людей реально работающих с самыми разными системами: старыми и новыми, сделаными с ORM и без. SERG1257 И ведь вам даже в голову не приходит задуматся - откуда появляются навороченные переоптимизированные хранимки. Мазохисты их какие-то так пишут, небось боятся, чтобы их не уволили. Заменить надо старую систему у нее пепельница переполнилась вот как раз новый продукт вышел. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2018, 02:17 |
|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
stenford Megabyte 1) Еще раз повторю, что это был ответ на ваш комментарий про то, что: "А вот разрабочик захочет по такому фильтру(кол-во детей) отфильтроовать. На SQL это надо новый параметр или новую процу, а в коде с использованием ОРМ все просто". Получается, что никакого смысла в этой реплике нет в общем случае и данный вариант подходит только для маленьких таблиц. И я согласился, что здесь можно юзать ОРМ. Megabyte 2) По статистике: необходимые индексы\неиспользуемые индексы; запросы, которые больше всего грузят ЦПУ; запросы, которые больше всего грузят диск; какие типы блокировок(для MS SQL) преобладают, чтобы понять, куда копать; монитор текущих запросов. Megabyte 3) Как правило, фулл стэк разрабочики - это как аникейщики, знают все в среднем\плохо и какую-то одну область хорошо. У нас на фирме тоже, считай, все фулл стэк, запросы пишут к базе и т.п., но по факту оптимизацией кода за всех занимаюсь я один. Из остальных, один хорошо шарит по бизнес-процессам, другой со всякими апи\джон на ты, третий хорошо пишет скрипты - сценарии на нашем ПО и т.д. Специализация - это двигатель производительности. Невозможно сразу везде быть спецом, за редким исключением. Megabyte Я так вообще наблюдаю рост запросов на ДБА, в и постоянных вакухах, и на фрилансе. Megabyte 5) Как меряли производительность? И это, никто не сказал, что в SQL\хп можно наговнокодить. Такое есть, безусловно. Ну и да, в скобках бред какой-то написан, вам уже сообщили... 2) Когда ты отловишь adhoc запрос из какого-то клиентского кода(ОРМ\не ОРМ не важно), ты понятия не имеешь, откуда он вызывается. В случае с индексами фиг бы с ним, а если надо изменить логику запроса? Надо искать, где этот код вызывается. Чаще всего это знает только тот один разработчик, который это делал. А он уволился\заболел или еще что. Когда все запросы лежат централизованно, в ХП, то вопрос доработки серверного кода решается просто. Найти вызов ХП из клиента по имени тоже проще, чем проще, чем какой-то сгенерированный непонятно где и кем код. 3) Для ОРМ, конечно, не требуется. Только ОРМ не используют повсеместно. Но ОРМ появились довольно таки давно. Значит не все их юзают и\или планируют юзать. Кое-кто даже отказывается от них или ограничивает сферу применения. Думаю, все зависит от бизнес-процессов. 4) Та я только рад за коллег. :) Каждому свое) 5) Во-первых, проблемы в связи с устарением плана решаются без проблем. Да и возникает это редко. И каждое изменение процедуры естетвенно вызывает перекомпиляцию. Во-вторых, код процы не обязательно должен быть с кучей параметров и несколькими сотнями строк, с ветвлением. Говорю же, наговнокодить можно везде. Через какое-то время, возможно, потребуется рефакторинг, как и в клиентском коде. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2018, 11:55 |
|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
stenford SERG1257 Никогда не задумывались - почему этот миф столь устойчив, у людей реально работающих с самыми разными системами: старыми и новыми, сделаными с ORM и без. SERG1257 И ведь вам даже в голову не приходит задуматся - откуда появляются навороченные переоптимизированные хранимки. Мазохисты их какие-то так пишут, небось боятся, чтобы их не уволили. Заменить надо старую систему у нее пепельница переполнилась вот как раз новый продукт вышел. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2018, 11:56 |
|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
stenford почитайте про аппсервера и все встанет на свои места Megabyte Трехзвенка(аппсервера) и использование ХП - вещи, в общем-то, перпендикулярные. Тут либо stenford не знает о проблемах логики на клиенте, либо скрывает их (этого не может быть, потому что не может быть никогда). В первом случае дискуссия имеет смысл, во втором же, как и во многих других холиварах, стороны разойдутся каждый со своим мнением, оплёванные, но не сломленные. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2018, 16:59 |
|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
Megabyte 2) Когда ты отловишь adhoc запрос из какого-то клиентского кода(ОРМ\не ОРМ не важно), ты понятия не имеешь, откуда он вызывается. В случае с индексами фиг бы с ним, а если надо изменить логику запроса? Надо искать, где этот код вызывается. Чаще всего это знает только тот один разработчик, который это делал. А он уволился\заболел или еще что. Когда все запросы лежат централизованно, в ХП, то вопрос доработки серверного кода решается просто. Найти вызов ХП из клиента по имени тоже проще, чем проще, чем какой-то сгенерированный непонятно где и кем код. тыкать на каждый Package в БД и искать? где в SQL Developer функция View Call Hierarchy?)) В ОРМ кстати можно логить все запросы ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2018, 17:03 |
|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
stenford это вы еще не видели рост запросов на full stack dev'ов ;) stenford То-же самое для запросов от ОРМ, но с той разницей что когда у вас хранимка в сотни строк, с ветвлением по массе условий и прочего - то good luck получить там оптимальный план на последующие вызовы Простой пример - дай клиентов из города N (для пущей простоты я даже джойн делать не буду) Код 1.
В плане скан, значит нужен. Но citi_id=1234 это дефолт-сити, значит не нужен. В ХП с ветвлением по массе условий и прочего есть шанс это выправить, причем здесь и сейчас, не дожидаясь новой версии, которая, заметим, вполне может принести новые баги особенности. Да, это грязно, это заплатка, это сопля, но это будет работать здесь и сейчас. По правильному надо бы уведомить разработчика, он должен засунуть мой код из ХП на клиента и в следующем релизе, я верну ХП обратно и все будут счастливы. Однако, если я не единственный клиент, а у других такой проблемы нет, программист будет всячески упиратся. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2018, 17:41 |
|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
yabs Megabyte 2) Когда ты отловишь adhoc запрос из какого-то клиентского кода(ОРМ\не ОРМ не важно), ты понятия не имеешь, откуда он вызывается. В случае с индексами фиг бы с ним, а если надо изменить логику запроса? Надо искать, где этот код вызывается. Чаще всего это знает только тот один разработчик, который это делал. А он уволился\заболел или еще что. Когда все запросы лежат централизованно, в ХП, то вопрос доработки серверного кода решается просто. Найти вызов ХП из клиента по имени тоже проще, чем проще, чем какой-то сгенерированный непонятно где и кем код. тыкать на каждый Package в БД и искать? где в SQL Developer функция View Call Hierarchy?)) В ОРМ кстати можно логить все запросы Во все популярные СУБД встроены средства для логирования. :) Причем есть куча фильтров и море инфы по запросу. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2018, 17:59 |
|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
Megabyte 1) Я не говорил про улучшение, а про то, что кол-во вариантов обращения будет фиксировано, и бесконечно дорабатывать хп\добавлять параметры не потребуется. Megabyte 2) Когда ты отловишь adhoc запрос из какого-то клиентского кода(ОРМ\не ОРМ не важно), ты понятия не имеешь, откуда он вызывается. В случае с индексами фиг бы с ним Megabyte , а если надо изменить логику запроса? Надо искать, где этот код вызывается. Чаще всего это знает только тот один разработчик, который это делал. А он уволился\заболел или еще что. Когда все запросы лежат централизованно, в ХП, то вопрос доработки серверного кода решается просто. Найти вызов ХП из клиента по имени тоже проще, чем проще, чем какой-то сгенерированный непонятно где и кем код. Megabyte 3) Для ОРМ, конечно, не требуется. Megabyte 5) Во-первых, проблемы в связи с устарением плана решаются без проблем. Да и возникает это редко. И каждое изменение процедуры естетвенно вызывает перекомпиляцию. Во-вторых, код процы не обязательно должен быть с кучей параметров и несколькими сотнями строк, с ветвлением. Говорю же, наговнокодить можно везде. Через какое-то время, возможно, потребуется рефакторинг, как и в клиентском коде. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2018, 04:56 |
|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
SERG1257 Тут речь идет о старом холиваре - где хранить логику: на клиенте (аппсервере) или в базе (ХП). SERG1257 stenford топит за клиента, причем утверждает что логика в базе это устаревший подход, который ВСЕГДА хуже. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2018, 05:02 |
|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
SERG1257 Да ну. Простой пример - дай клиентов из города N (для пущей простоты я даже джойн делать не буду) Код 1.
В плане скан, значит нужен. Но citi_id=1234 это дефолт-сити, значит не нужен. В ХП с ветвлением по массе условий и прочего есть шанс это выправить, причем здесь и сейчас, не дожидаясь новой версии, которая, заметим, вполне может принести новые баги особенности. Да, это грязно, это заплатка, это сопля, но это будет работать здесь и сейчас. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2018, 05:05 |
|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
stenford SERG1257 Да ну. Простой пример - дай клиентов из города N (для пущей простоты я даже джойн делать не буду) Код 1.
В плане скан, значит нужен. Но citi_id=1234 это дефолт-сити, значит не нужен. В ХП с ветвлением по массе условий и прочего есть шанс это выправить, причем здесь и сейчас, не дожидаясь новой версии, которая, заметим, вполне может принести новые баги особенности. Да, это грязно, это заплатка, это сопля, но это будет работать здесь и сейчас. и почему то что требует recompile в хранимке внезапно не требует recompile в случае с ORM ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2018, 17:30 |
|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
Wizandr непонятно чем recompile так плох и почему то что требует recompile в хранимке внезапно не требует recompile в случае с ORM ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2018, 01:37 |
|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
stenford Wizandr непонятно чем recompile так плох и почему то что требует recompile в хранимке внезапно не требует recompile в случае с ORM И разумеется «по цепочке» план в хп не ухудьшается. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2018, 10:52 |
|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
stenford если потрудитесь отмотать несколько страниц назад, то увидите, что я такого не говорил. stenford под "грязной соплей" подразумевается опция recompile, верно? stenford Но определяется это не "размером" и "сложностью" системы как настойчиво тут пытаются утверждать некоторые, а ее типом. 1 Лишние накладные расходы на перенос данных. Клиент либо просит много сразу, либо просит мало, но часто. Да у нас быстрая сеть, да аппсервер лежит рядом, но для обработки на сервере этого трафика вообще нет. То бишь в некоторых случаях эти накладные расходы критичны. 2 Размазывание данных между клиентом и сервером, нарушение принципа SPOT: после того как данные ушли к клиенту, СУБД никак их не контролирует. СУБД конечно сама это любит делать: шардинги, кластеры и т.п. но там СУБД старается поддержать непротиворечивость и актуальность кэшей. А как это будет для аппсервера ложится на плечи программиста. Причем у разработчика, то все в порядке, это у заказчика есть несколько разных клиентов к базе. Посмотрите сколько топиков типа "как заставить базу работать только через мою программу". Повторю, проблема не нова, способы ее решения известны, но прикладные программисты не любящие SQL гораздо чаще забивают на эту заумь. Ruuu Уже начиная с версии 2008 можно рекомпилировать отдельные запросы в хп. Еще один момент: stenford противопоставляет ORM vs хранимки, забывая что его ORM это новая программа, а та что с хранимками это старая программа, над которой топталась толпа разных разработчиков, подпирая костылями ибо концепция менялась несколько раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2018, 17:08 |
|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
stenford, вот вам входные данные: Есть исторический справочник, размер таблицы 200Гб (да, именно таблицы :) ). Нужно получить состояние десятка объектов из этого справочника на дату 2000/01/01. Сам справочник организован как через таймштамп модификации поля с величины А на Б, для начальной точки реализовано через признак создания, таймштампы созданий естественно разные. У вас в наличие 3 аппсервера, по 64Гб RAM на каждом, БД с 128Гб RAM, шкаф хранилища на оптике RAID 10 на HDD. Ну и можете теперь рассказать о преимуществах ORM для данной конкретной задачи, либо предложить решение без того чтобы крутить данные сервере баз данных. * И это только один такой пример, а ведь в реальности их очень даже много... Чего только импорт/экспорт (ETL), аналитика стоят. Повторю свою мысль еще раз - ORM хороши для маленьких/средних задач, но как только решение вырастает, то тут уже отсутствие возможности ювелирной юстировки какой-либо из частей системы - это минус, при этом минус серьезный. Ну и в критически важных местах, где требуется действительно хороший отклик - места ORM тоже нет. ORM это так - решение типичных задач, типичными способами, за среднее время. Т.е. просто ширпотребное решение, не дающее особых плюсов, но помогающее избегнуть типичных проблем и понизить планку требуемых специалистов. ** Написанное выше - личное мнение, исходя из собственного опыта работы как с различного рода подходами, как комбинированных так и без ORM или исключительно ORM-ориентированных. Собственно мое текущее мнение простое - набросать каркас, заготовку можно с использованием ORM, ну а как в жизнь пойдет, то быть готовым, что очень многое нужно будет либо выкинуть, либо переписать еще и казня себя за то, что сразу нормально не делали, а связались с кодогенерацией ORM. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2018, 18:50 |
|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
stenford Megabyte 1) Я не говорил про улучшение, а про то, что кол-во вариантов обращения будет фиксировано, и бесконечно дорабатывать хп\добавлять параметры не потребуется. Megabyte 2) Когда ты отловишь adhoc запрос из какого-то клиентского кода(ОРМ\не ОРМ не важно), ты понятия не имеешь, откуда он вызывается. В случае с индексами фиг бы с ним Megabyte , а если надо изменить логику запроса? Надо искать, где этот код вызывается. Чаще всего это знает только тот один разработчик, который это делал. А он уволился\заболел или еще что. Когда все запросы лежат централизованно, в ХП, то вопрос доработки серверного кода решается просто. Найти вызов ХП из клиента по имени тоже проще, чем проще, чем какой-то сгенерированный непонятно где и кем код. Megabyte 3) Для ОРМ, конечно, не требуется. Megabyte 5) Во-первых, проблемы в связи с устарением плана решаются без проблем. Да и возникает это редко. И каждое изменение процедуры естетвенно вызывает перекомпиляцию. Во-вторых, код процы не обязательно должен быть с кучей параметров и несколькими сотнями строк, с ветвлением. Говорю же, наговнокодить можно везде. Через какое-то время, возможно, потребуется рефакторинг, как и в клиентском коде. 2) не логика работы системы, а логика работы запроса! Разницу понимаете? 3) языки, знаете ли, развиваются. Расширения sql под конкретную СУБД - тоже. Да и работа с множеством данных в определенных аспектах в sql намного проще, чем на клиенте. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2018, 20:39 |
|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
Ruuu Уже начиная с версии 2008 можно рекомпилировать отдельные запросы в хп. Ruuu И разумеется «по цепочке» план в хп не ухудьшается. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2018, 01:45 |
|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
SERG1257 Зачем несколько страниц назад, предложение выше описываю как разрабатываются современные системы, стало быть обработка на сервере это несовременно. SERG1257 Дело в том, что у обработки на клиенте я вижу два недостатка. 1 Лишние накладные расходы на перенос данных. Клиент либо просит много сразу, либо просит мало, но часто. Да у нас быстрая сеть, да аппсервер лежит рядом, но для обработки на сервере этого трафика вообще нет. То бишь в некоторых случаях эти накладные расходы критичны. 2 Размазывание данных между клиентом и сервером, нарушение принципа SPOT: после того как данные ушли к клиенту, СУБД никак их не контролирует. СУБД конечно сама это любит делать: шардинги, кластеры и т.п. но там СУБД старается поддержать непротиворечивость и актуальность кэшей. А как это будет для аппсервера ложится на плечи программиста. Причем у разработчика, то все в порядке, это у заказчика есть несколько разных клиентов к базе. Посмотрите сколько топиков типа "как заставить базу работать только через мою программу". Повторю, проблема не нова, способы ее решения известны, но прикладные программисты не любящие SQL гораздо чаще забивают на эту заумь. На все это есть причины, и ноги этих причин вырасли из проблем, которые и вызывали системы с логикой в базе SERG1257 Еще один момент: stenford противопоставляет ORM vs хранимки, забывая что его ORM это новая программа, а та что с хранимками это старая программа ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2018, 02:01 |
|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
kDnZP Есть исторический справочник, размер таблицы 200Гб (да, именно таблицы :) ). Нужно получить состояние десятка объектов из этого справочника на дату 2000/01/01. Сам справочник организован как через таймштамп модификации поля с величины А на Б, для начальной точки реализовано через признак создания, таймштампы созданий естественно разные. У вас в наличие 3 аппсервера, по 64Гб RAM на каждом, БД с 128Гб RAM, шкаф хранилища на оптике RAID 10 на HDD. Ну и можете теперь рассказать о преимуществах ORM для данной конкретной задачи, либо предложить решение без того чтобы крутить данные сервере баз данных. kDnZP * И это только один такой пример, а ведь в реальности их очень даже много... Чего только импорт/экспорт (ETL), аналитика стоят. Повторю свою мысль еще раз - ORM хороши для маленьких/средних задач, но как только решение вырастает, то тут уже отсутствие возможности ювелирной юстировки какой-либо из частей системы - это минус, при этом минус серьезный. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2018, 02:09 |
|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
Megabyte 1) нет, не правильно. Если проблемный код в хп, то доработка на порядок проще. Megabyte 2) не логика работы системы, а логика работы запроса! Разницу понимаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2018, 02:13 |
|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
Megabyte А так, 95% проблем правится на лету, ещё ДО жалоб пользователей на тормоза! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2018, 08:02 |
|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
Megabyte, и как часто при этом происходят релизы? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2018, 08:03 |
|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
stenford kDnZP Есть исторический справочник, размер таблицы 200Гб (да, именно таблицы :) ). Нужно получить состояние десятка объектов из этого справочника на дату 2000/01/01. Сам справочник организован как через таймштамп модификации поля с величины А на Б, для начальной точки реализовано через признак создания, таймштампы созданий естественно разные. У вас в наличие 3 аппсервера, по 64Гб RAM на каждом, БД с 128Гб RAM, шкаф хранилища на оптике RAID 10 на HDD. Ну и можете теперь рассказать о преимуществах ORM для данной конкретной задачи, либо предложить решение без того чтобы крутить данные сервере баз данных. kDnZP * И это только один такой пример, а ведь в реальности их очень даже много... Чего только импорт/экспорт (ETL), аналитика стоят. Повторю свою мысль еще раз - ORM хороши для маленьких/средних задач, но как только решение вырастает, то тут уже отсутствие возможности ювелирной юстировки какой-либо из частей системы - это минус, при этом минус серьезный. skyANA Megabyte А так, 95% проблем правится на лету, ещё ДО жалоб пользователей на тормоза! skyANA Megabyte, и как часто при этом происходят релизы? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2018, 11:12 |
|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
>> план исполнения хранимок (как вы должны быть в курсе) компилится на первом ее вызове для параметров этого вызова я возможно не в курсе mssql, но я вообще хз что такое план исполнения хранимки. для меня всегда был план исполнения запроса. более того, в оракле полно технологий как решать такие вещи. в особенно последних версиях план более чем динамичен и уж точно не привязан к первому вызову. для этого есть целый пласт технологий. dynamic sampling, adaptive optimization и прочее. думаю, mssql не особо отстаёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2018, 11:19 |
|
Что происходит на рынке DB вакансий в ЕС?
|
|||
---|---|---|---|
#18+
Megabyte skyANA пропущено... И как часто проблемы возникают на проде? И почему они туда просачиваются? Megabyte skyANA Megabyte, и как часто при этом происходят релизы? А если система такая, что хоть сто раз в день накатывай/откатывай версии, то и разработчик в случае чего поправит свой код и пользователи ничего не заметят. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2018, 12:07 |
|
|
start [/forum/topic.php?fid=7&msg=21639464&tid=1297162]: |
0ms |
get settings: |
21ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
493ms |
get tp. blocked users: |
1ms |
others: | 304ms |
total: | 913ms |
0 / 0 |