Це концепції SQL для початківців, проміжних або просунутих розробників? [зачинено]


16

Я нещодавно вивчав SQL і практикуюсь з MySQL / Postgres і незабаром Oracle DB. Я також шукав в Інтернеті дослідження "дорожньої карти" баз даних, але, на жаль, не зміг його знайти.

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

Поясніть, будь ласка, як викласти навички, перелічені нижче, в процесі просування для початківців -> проміжних -> розширених, для якого рівня розробник повинен їх знати:

  • Де пункти
  • Оновити синтаксис
  • Приєднується
  • Змінювати та створювати заяви
  • Темп-таблиці
  • Курсори
  • Покажчики
  • Іноземні ключі
  • Обмеження
  • Операції
  • Підзапити
  • Повороти
  • Сукупні функції
  • Профілювання
  • OLAP та OLTP
  • Тригери
  • Плани виконання
  • Підказки щодо виконання
  • Лічильники продуктивності
  • Нормалізація

Відповіді:


20

Я б сказав, що щодо SQL слід знати два типи речей (це справді стосується багатьох технологій), є конкретні технічні речі, такі як приєднання, підзапроси, об'єднання тощо, які ви розумієте чи ні, і тоді є речі як дизайн баз даних та моделювання даних, що має градієнт майстерності, як мистецтво. З часом ти стаєш кращим з тими більш м'якими речами, але ніколи не знаєш їх, тому що немає «вони працюють так».

Однак, ось, з якою я б пішов із загальною схемою, я абсолютно відкритий для коментарів / думок інших, де я можу помилятися.

Новачок

  • Де пункти (між, між тощо)
  • Оновити синтаксис
  • Внутрішня vs ліва проти права приєднайтеся до розуміння та використання
  • Синтаксис для зміни та створення структур
  • Темп-таблиці та їх використання
  • Курсори
  • Основна ідея, для чого призначені індекси, хоча і не те, як вони працюють
  • Розуміння того, для чого призначені закордонні ключі та як обходити їх (каскадні делети тощо)
  • Розуміє основи угод
  • Розуміє обмеження

Проміжний

  • Як працюють індекси, різниця між кластеризованою, некластеризованою тощо, що таке сторінка та як вони розміщуються
  • Розуміння підзапитів і може продумати їх використання в об'єднанні та десь
  • Повороти
  • Можна продумати приєднання таблиці до себе, коли це доречно
  • Може створювати складні звіти даних за допомогою групових байтів із сукупними функціями
  • Можна виконати базове профілювання лише в моніторинговій / налагоджувальній функції, як-от читання журналу
  • Розуміє різницю між OLAP та OLTP та коли / де використовувати структури OLAP
  • Знає, як використовувати тригери, а не використовувати їх
  • Розуміє транзакції і може зрівняти їх, обробляючи збої в стеці

Розширений

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

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


Цікаво просто побачити наші два списки поряд
Кріс Пітман

11

Ось масштаб, який я використовую під час опитування кандидатів. Це, очевидно, моя особиста думка, ваги можуть легко змінюватися:

По-перше, я шукаю навички бази даних, а не конкретно "SQL".

Новачок:

  • Знає базовий синтаксис SQL
  • Можна вибирати та фільтрувати дані в декількох таблицях
  • Розуміє внутрішнє / зовнішнє / перехресне
  • Неясне розуміння нормалізації, індексації, транзакцій, блокування

Проміжні:

  • Розуміє відмінності між процедурними та декларативними стилями для SQL
  • Досвід роботи з принаймні одним розширенням SQL SQL (PSQL, TSQL тощо)
  • Розуміє і може спроектувати базу даних у третій нормальній формі
  • Розуміє та може реалізувати індексацію
  • Розуміє транзакції та може використовувати їх у єдиній базі даних
  • Знає, коли і як проаналізувати план виконання

Розширений:

  • Розуміє, коли і як денормалізувати базу даних
  • Розуміє, як налаштувати розподілені транзакції в базі даних та інтегрованих системах
  • Можна встановити базу даних для високої доступності, відновлення даних тощо
  • Глибоке нерозуміння внутрішньої роботи кожного двигуна БД (принаймні дві)
  • Додаткові бали для значного впливу на зберігання даних та звітність
  • Додаткові бали за значну експозицію варіантів NoSQL та раціональний набір критеріїв, коли використовувати що

Смішно, ваш список досить схожий на мій; хоча я поклав плани виконання на один крок, інакше у нас однаково. Я майже переклав 3-ю нормальну форму в проміжну, але я дійсно думаю, що моделювання даних не можна приписувати початківцям / проміжним / просунутим, це просто занадто великий художній талант, який так сірий. Знати, як зробити 3-е нормальне - це навичка, знаючи, коли це мистецтво. Наскільки це актуально, хоча я майже поклав це на проміжне, а також для цього хе
Джиммі Хоффа
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.