Зачем знать алгоритмы Основная секция
Пишет код на всём подряд, показывает другим как. В удачные дни код удается сносить, это обязательно показывает другим и заставляет "точно так же" втройне сильнее. Всю сознательную жизнь из этого выходят разные движки, прямо проклятие какое-то.
Тезисы
Синопсис
Исходник можешь ты не знать, но алгоритмы знать обязан. Это потому, что даже минимальные познания о том, как что устроено внутри разных серверных программных систем позволяют ловко оптимизировать всякое, проводить правильные бенчмарки, принимать осознанные решения о разработке или неразработке своего велосипеда, и т.д. и т.п.
Тезисы:
1. О чем вообще доклад: как довольно-таки базовые знания всякого помогают понять происходящее в чужих (!) системах, с которыми приходится работать, типа СУБД.
2. Пронзаем мозгом базу данных.
2.1. Теория. Потроха любой SQL базы на пальцах за 10 минут: хранение rows (тупое и кластерное); индексы (вечный Btree и как он устроен); covering индексы; вычисление запросов с точки зрения банальной эрудиции (row lookup, WHERE, ORDER, GROUP); зачем и как бывают буфера.
2.2. Практика. Как внутри работает выборка по PK, по индексу, по covering индексу, как примерно может работать JOIN. Как идеал, бывает, расходится с реальностью на примере MySQL (LIMIT, выбор индекса, subselect). Отчего иногда случается fullscan и отчего иногда это хорошо. Полубоевые примеры "как по книжке" про разгон запросов при помощи covering index, форсирования fullscan, итд.
3. Пронзаем мозгом полнотекстовый поиск.
3.1. Теория. Потроха любого поиска на пальцах за 10 минут: что такое инвертированный индекс; как, в принципе, могут храниться атрибуты; вычисление запросов с точки зрения банальной эрудиции (пересечение списков, прыжки по чекпойнтам, row lookup).
3.2. Практика. Отчего и почему FT индекс нельзя хранить в базе, как и почему для него НЕ работает Btree. Отчего, почему, и как в Sphinx работают ловкие трюки про замену ключевых слов фильтрами и наоборот. Отчего не обязаны хорошо работать где-то еще. Почему нужны стоп-слова. Откуда взялся max_matches и почему оно влияет на скорость поиска.
4. Бонус-трек: пронзаем мозгом компилятор. "Зачем ассемблеру второй проход", чего нельзя ожидать от скриптовой среды типа PHP, почему в идеальном мире победит Java, а в реальном C++.
5. Выводы. Зачем же таки знать алгоритмы. Какие конкретно, те, что остались за бортом доклада. На какой позиции или в какой стране можно не знать.