Database Schema Reviews в англійській мові: Vocabulary for Data-Intensive Systems

Освоєння англійської мови для перегляду схем баз даних — стратегія перенесення, зворотна сумісність, рішення щодо індексування, нормалізація і мова проектування схем.

Перегляди схеми бази даних є критичним воротом якості в будь-якій системі, що використовує багато даних. Недосконала схема може спричинити проблеми з продуктивністю, помилки перенесення і перерви зворотньої сумісності, які коштують дорого, щоб виправити у виробництві. Для не-англомовних носіїв англійської мови, ці огляди включають в себе певний технічний словник - той, який використовується послідовно в переглядах коду, проектних документах і пост-мортемах інцидентів. У цій статті описано умови, які вам слід знати, щоб безпечно брати участь у проекті.

Ключовий словник

Схема Схема є формальною структурою бази даних — визначенням таблиць, стовпчиків, типів, обмежень і зв’ язків. У перегляді схеми команда оцінює, чи буде ця структура ефективно і безпечно підтримувати потреби програми. “Перед тим, як ми об’єднаємо цей PR, я б хотів запланувати перегляд схеми — є декілька проектних рішень, які можуть мати значні наслідки для продуктивності в масштабі.”

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

  • “Під час міграції до таблиці з 50 мільйонами рядків буде додано стовпчик NOT NULL — нам потрібно обговорити стратегію розгортання, щоб уникнути блокування таблиці.” *

** Зворотна сумісність ** Зворотньо сумісна зміна схеми — це така, яка не порушує існуючий код програми. Відкидання стовпчика, перейменування стовпчика або зміна типу даних у несумісному напрямку є поширеними причинами проблем зі сумісністю.

  • “Додання стовпчика з можливістю нульового значення є зворотньо сумісним — існуючі запиту і вставки продовжать працювати без змін.” *

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

  • « Поточний розклад денормалізовано для швидкості читання — дані користувача дублюють у трьох таблицях, що створює ризики несумісності. » *

** Індекс ** Індекс — це структура даних, яка покращує швидкість отримання даних зі стовпчика або набору стовпчиків. Рішення щодо індексування є центральною частиною переглядів схем, оскільки відсутні і надмірні індекси мають наслідки для продуктивності. “У стовпчику created_at немає індексу, що призведе до пошуку всієї таблиці для кожного запиту на діапазон дат — це не буде масштабовано.”

Кардинальність Кардинальність стосується кількості унікальних значень у стовпчику. Стовпчики з високою кардиналістю (наприклад, ідентифікатори користувачів) є хорошими кандидатами для індексування; стовпчики з низькою кардиналістю (наприклад, булівські прапорці) зазвичай не індексуються. “Додання індексу в стовпчик status малоймовірно допоможе — він має низьку кардинальність з лише трьома можливими значеннями.”

** Обмеження зовнішнього ключа ** Обмеження зовнішнього ключа забезпечує посилання на цілісність між таблицями — забезпечує, що значення у одній таблиці відповідає коректному значення у іншій таблиці. Вилучення або не додавання обмежень зовнішнього ключа є поширеним джерелом помилок цілісності даних. “Я рекомендую додати обмеження зовнішнього ключа — без нього, ми можемо залишити записи сиротами у таблиці orders, якщо користувача буде вилучено.”

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

  • “Щоб досягти перенесення без перерв, ми використаємо шаблон розширення- скорочення: додамо новий стовпчик, заповнимо його, а потім відкинемо старий стовпчик у окреме розгортання.” *

Корисні фрази

    • “У мене є деякі зауваження щодо стратегії індексування — чи можемо ми проаналізувати очікувані шаблони запитів перед завершенням роботи над схемою?” *
  • “Ця міграція не є зворотньо сумісною — якщо ми розгорнемо зміну схеми до коду програми, існуючі запиту будуть невдалими.”
    • “У цьому випадку нормалізація обмінює простоту запису на складність читання — я хочу переконатися, що ми обговорили наслідки запиту.” *
    • “Додання обмеження NOT NULL до існуючої колонки є руйнівною міграцією на великій таблиці — нам потрібен план поетапного розгортання.” *
    • “Який план відновлення, якщо ця міграція спричинить проблеми у виробництві?” *

Поширені помилки

** Промовити “змінити” замість “перенести” або “змінити” ** “Ми повинні змінити базу даних” не вказано. У обговореннях перегляду схеми використовуйте « migrate » (для змін з версіями, керованих за допомогою інструменту міграції) або « alter » (для операції SQL- сировини). Бути точним уникнути плутанини щодо стратегії розгортання.

** Ігнорування шаблону розширення- скорочення для розриву змін ** Нерідні носії, які є новими для управління виробничою базою даних, іноді пропонують застосовувати зміни в одній міграції. Завжди обговорюйте поетапність: спочатку додайте (розгорніть), потім вилучіть старе використання з коду, а потім вилучіть старий елемент схеми (згорніть). Це стандартний шаблон для перенесення без перерви.

** Плутанина між « анульованими » і « необмеженими » на рівні програми ** Стовпчик може бути нульовим у базі даних, але вимагати його логіка програми. Стовпчик може бути NOT NULL у базі даних, але мати типове значення, яке робить його необов’ язковим з точки зору програми. Це різні поняття — будьте ясно ознайомленими з тим, який шар ви обговорюєте у перегляді схеми.

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

Національний гімн: практичний посібник для мовців рідної мови

Погляньмо правді в очі. Технічний жаргон може бути складно зрозуміти, особливо коли ви вивчаєте нову мову. Перегляди схем баз даних повні термінів, які звучать вражаюче, але не завжди легко перекладаються у повсякденну розмову. Цей розділ зосереджений на тому, щоб заповнити цю прогалину - надати контекст і практичні приклади, щоб допомогти не рідним англомовним впевнено брати участь в обговореннях про дизайн та еволюцію баз даних. Мета полягає не тільки в тому, щоб знати слова, але й розуміти, як вони використовуються і коли їх застосовувати. Ключовою частиною цього є розпізнавання тонких відмінностей у значенні; наприклад, «нормалізація» може бути інтерпретована по-різному залежно від розмови - чи ми говоримо про 3NF або про щось більш спокійне? Не бійтеся задати прояснюючі питання! Краще визнати, що не розумієш, ніж робити припущення, які можуть призвести до непорозумінь. Пам’ятайте, ефективне спілкування побудовано на спільному розумінні і готовності навчатися у інших. Сфокусуйтеся на передачі вашого наміру – того, що ви хочете сказати – а не на тому, щоб щоразу використовувати «ідеальний» технічний термін. Найважливіше, бути уважним до різних думок; дизайн схеми часто дуже контекстуальний і не завжди є одна «правильна» відповідь.

Зазвичай, таке трапляється під час перегляду запиту на звантаження змін до бази даних. Уявіть, що ви отримали такий коментар у Slack: «Ця зміна схеми вводить деякі потенційні проблеми з продуктивністю. Ми повинні безумовно розглянути можливість додавання індексу на поле customer_id, щоб оптимізувати запиту на цю таблицю. ” Ключовим тут є розуміння * чому * зроблено пропозицію. Рецензент не просто стверджує факт; вони визначають можливу проблему і пропонують рішення — рішення про індексацію. Аналогічно, при написанні опису PR, ви можете сказати: “Це оновлення вводить нову колонку order_status для поліпшення точності звітів. Ми також реалізуємо індекс на customer_id, щоб поліпшити продуктивність запиту для часто доступних замовлень клієнтів.” Зауважте, як ми пояснили * чому * зміна була зроблена, а не тільки те, що це.

Інший приклад: під час перегляду коду ви можете почути, як хтось обговорює « зворотну сумісність ». Цей термін стосується забезпечення того, щоб нові версії баз даних залишалися сумісними зі старими програмами — запобігання пошкодження змін. Часто це пов’язано зі стратегіями міграції. Розробник може пояснити: « Щоб підтримувати зворотну сумісність, ми використаємо стратегію еволюції схеми, яка додасть новий стовпчик як додаткове поле на початку, що дозволить існуючим запитам продовжувати працювати без змін. » Це демонструє передбачуваність і планування.

Давайте розглянемо простий приклад того, як ви можете скористатися psql (засіб командного рядка PostgreSQL) для швидкого створення індексу:

CREATE INDEX idx_customer_id ON orders (customer_id);

Ця команда створює індекс з назвою idx_customer_id у стовпчику customer_id таблиці orders. Це базовий приклад, але він демонструє, як лексика – індексування рішень – може бути застосована на практиці. Ключовим моментом є розуміння того, * що * робить ця команда і * чому * вона може бути потрібна, з огляду на потреби вашого проекту бази даних.

Поширені запитання

Про що ця стаття "Database Schema Reviews в англійській мові: Vocabulary for Data-Intensive Systems"?

Освоєння англійської мови для перегляду схем баз даних — стратегія перенесення, зворотна сумісність, рішення щодо індексування, нормалізація і мова проектування схем.

Чи безкоштовна ця стаття?

Так. Усі статті на CoderSlingo, включно з цією, доступні безкоштовно без реєстрації.

Скільки часу займає читання "Database Schema Reviews в англійській мові: Vocabulary for Data-Intensive Systems"?

Приблизно 9 min.