Являются ли эти концепции SQL для начинающих, промежуточных или продвинутых разработчиков? [закрыто]

16

Недавно я изучал SQL и практиковался с MySQL / Postgres и вскоре с Oracle DB. Я также искал в интернете исследование «дорожной карты» баз данных, но, к сожалению, не смог его найти.

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

Пожалуйста, объясните, как изложить навыки, перечисленные ниже, в последовательности Beginner -> Intermediate -> Advanced для того, какой уровень разработчика должен их знать:

  • Где пункты
  • Обновить синтаксис
  • присоединяется
  • Изменить и создать заявления
  • Временные таблицы
  • курсоры
  • Индексы
  • Внешние ключи
  • Ограничения
  • операции
  • подзапросов
  • Повороты
  • Агрегатные функции
  • Профилирование
  • OLAP и OLTP
  • Триггеры
  • Планы выполнения
  • Советы по выполнению
  • Счетчики производительности
  • нормализация
Даниил
источник

Ответы:

20

Я бы сказал, что есть два типа вещей, которые нужно знать в отношении SQL (на самом деле это верно для многих технологий), есть конкретные технические вещи, такие как объединения, подзапросы, объединения и т. Д., Которые вы понимаете или не понимаете, а затем есть вещи как дизайн базы данных и моделирование данных, в котором есть градиент навыков, как искусство. Со временем эти вещи становятся лучше, но вы никогда их не «знаете», потому что с ними «они так не работают».

Тем не менее, вот общий план, с которым я бы пошел, и я абсолютно открыт для комментариев / мыслей других, где я могу ошибаться.

начинающий

  • Где пункты (между, и т. Д.)
  • Обновить синтаксис
  • Внутреннее и левое против правого объединения понимание и использование
  • Синтаксис для изменения и создания структур
  • Временные таблицы и их использование
  • курсоры
  • Основная идея для чего нужны индексы, но не как они работают
  • Понимание того, для чего нужны внешние ключи и как их обойти (каскадное удаление и т. Д.)
  • Понимает основы транзакций
  • Понимает ограничения

промежуточный

  • Как работают индексы, разница между кластеризованными, некластеризованными и т. Д., Что такое страница и как они размещаются
  • Понимание подзапросов и умение использовать их в соединениях
  • Повороты
  • Может придумать, когда уместно присоединиться к столу.
  • Может генерировать сложные отчеты данных через группы с агрегатными функциями
  • Может выполнять базовое профилирование только в режиме мониторинга / отладки, например, при чтении журнала
  • Понимает разницу между OLAP и OLTP и когда / где использовать структуры OLAP
  • Умеет использовать триггеры и не использовать их
  • Понимает транзакции и может наслоить их на обработку ошибок в стеке

продвинутый

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

Это все, что я мог придумать с моей головы. Пожалуйста, оставьте комментарии с упоминанием других, которые я пропустил, или если я поставил что-то не туда Я не достаточно продвинут, чтобы знать огромный список продвинутых техник, чтобы бросить хе

Джимми Хоффа
источник
Интересно просто увидеть два наших списка рядом
Крис Питман
11

Вот шкала, которую я использую при опросе кандидатов. Это, очевидно, мое личное мнение, весы могут легко варьироваться:

Во-первых, я ищу навыки работы с базами данных, а не "SQL".

Начинающий:

  • Знает базовый синтаксис SQL
  • Может выбирать и фильтровать данные по нескольким таблицам
  • Понимает внутренние / внешние / перекрестные соединения
  • Смутное понимание нормализации, индексации, транзакций, блокировки

Промежуточное:

  • Понимает различия между процедурным и декларативным стилями для SQL
  • Опыт работы как минимум с одним расширением SQL для БД (PSQL, TSQL и т. Д.)
  • Понимает и может проектировать базу данных в третьей нормальной форме
  • Понимает и может осуществлять индексацию
  • Понимает транзакции и может использовать их в одной базе данных
  • Знает, когда и как анализировать план выполнения

Дополнительно:

  • Понимает, когда и как денормализовать базу данных
  • Понимает, как настроить распределенные транзакции в базе данных и интегрированных системах
  • Может установить базу данных для высокой доступности, восстановления данных и т. Д.
  • Глубокое понимание внутренней работы каждого механизма БД (не менее двух)
  • Дополнительные баллы за значительный доступ к хранилищу данных и отчетности
  • Дополнительные баллы за значительное знакомство с вариантами NoSQL и рациональный набор критериев того, когда и что использовать.
Крис Питман
источник
Забавно, твой список очень похож на мой; хотя я ставлю планы выполнения на один шаг вверх, иначе у нас в основном то же самое. Я почти поместил третью нормальную форму в промежуточную, но я действительно думаю, что моделирование данных не может быть приписано начинающему / промежуточному / продвинутому, это просто слишком много художественного таланта, который настолько серый. Знание того, как выполнять 3-й нормальный курс, - это навык, знание того, когда искусство. Тем не менее, отношение имеет отношение к делу, и я почти поставил его на промежуточный уровень, хе-хе
Джимми Хоффа