Первый конспект лекции с HighLoad был встречен позитивно, поэтому продолжаю.
Второй лекцией выбрал интересный материал, который нашел отклик как по конспекту, так и в зале. На мой взгляд, этот доклад может быть интересен всем, особенно начинающим специалистам.
В докладе затронуты вопросы:
- Кем собственно мы хотим стать?
- Надо-ли оно нам?
- Теоретические навыки
- Практические навыки (технические)
- Практические навыки (нетехнические)
БД — вещь простая, а люди сложные, поэтому советы могут не всем подойти.
Сам следовал не всем советам.
Карта навыков сегодня (завтра может изменится):
Любой роли полезно иметь навыки из соседних областей.
Облака добавились недавно. В них добавляется зона ответственности по бюджетированию.
Надо ли оно нам?
- Скучно точно не будет. БД — это интересно.
- Пока есть данные, будут и базы. Они могут стать другими, но они точно будут.
- DBA — как сантехник, но в тепле и за клавиатурой.
Получить хорошее профильное образование почти нельзя. Нет такого образования. Но есть ВУЗы, которые этому хорошо учат. Но выйдя из ВУЗа вы не станете спецом.
Нужно уметь быстро осваивать разные профессии.
Задачи, которые надо уметь быстро решать (экзамен в идеальном мире на dba):
- На время починить базу (увиденную в первый раз). В чем проблема не понятно, но все «тормозит»
- Экзаменаторов 10, а лучше 20-30
- 3 спрашивают в slack «ну как»
- Ещё трое по телефону
- 1 требует залогировать время
- 3 внедряют скрам прямо сейчас :) (минутка юмора)
Базовые требуемые знания (теория):
- Реляционная алгебра (минимум, не более 40 часов на изучение)
- B-tree в разных видах и формах (глубокие знания нужны только если стоит задача писать свою бд)
Хорошая вводная книга: Новиков, Домбровский, настройка приложений баз данных.
Суть: Субд — это Фреймворк, позволяющий работать с данными:
- Универсально
- Надежно
- Производительно
(!) Как оно делает — нужно знать досконально.
Практические технические навыки (!) (Важно и обязательно)
- Concurrency control
- 2 phase locking
- Deadlock detection
- Multi version concurrency control
- Recovery
- Write ahead log
- Redo
- Undo
- Distributed transactions
- 2-фазный коммит
- Distributed recovery
Читать минимум википедию. Лучше книжку — G. Weikum, G. Vossen, Tranactional Informatino Systems: Theory, Algorithms, and the Practice of Concurrencty Control and Recovery.
Если тяжело, в первый раз можно не читать про объекты и поисковые структуры. Потом перечитывать.
Подводные камни
- Не путать 2pl и 2pc (двухфазовое блокирование и двухфазный коммит).
- Не противопоставлять 2pl и mvcc.
- Это пессимистические алгоритма шедулинга транзакций — они самые распространённые, но мир ими не ограничен.
Отвыкать читать книги и читать документацию. Хороших книг по практике мало, они редко и недолго up to date.
Как читать документацию?
Если хотя бы один раз прочитать документацию к каждому параметру конфига (например, postgresql.conf и тп), вы станете намного круче. Это касается любой БД.
Рекомендация завести себе тестовый сервер и экспериментировать, как влияют разные параметры.
Как решать проблемы
- Cпокойно реагировать (keep calm!)
- Ищем причину: do not tune the query / know your data! — думаем как устроен запрос, а не пытаемся решить «в лоб»
- Учите (заранее) средства диагностики (top, iostat, perf и тп)
- Пишите post mortem!
Практические нетехнические навыки:
- Учитесь говорить, писать и читать по-русски и по-английски
- Делайте доклады, учите коллег, выступайте на митапах, подавайтесь на Highload!
- Учитесь общаться с девелоперами (и не только с ними)
Учитесь все это делать одновременно.
Автор: yushkevichv