Работа на проекте TourIndex

Работа в TourIndex / Архитектура БД, оптимизация запросов

Архитектура БД, оптимизация запросов

Требования:

• Опыт работы c любой БД из MSSQL, Oracle, PostgreSQL от двух лет, на уровне оптимизации запросов, написания функций, триггеров.
• Опыт работы с PostgresSQL
• Наличие выделенного Интернет-канала‚ возможность работы с трафиком от 1 Гб/мес.
• Наличие настроенной программы Skype и гарнитуры‚ возможность свободно общаться.
• Готовность выполнить тест.

Необходимые навыки:

• Умение работать.
• Знания алгоритмов сортировки, поиска.
• Хорошее понимание архитектуры баз данных.
• Умение оптимизировать запросы.
• Знание любого языка для создания web-приложений.
• Приветствуется знание архитектуры PostgreSQL.
• Приветствуется знание PHP.
• Умение работать в команде (приветствуется опыт работы с CVS/SVN).
• Терпеливое отношение к чужому коду.
• Умение читать и понимать техническую литературу на английском языке.
• А также‚ активно перенимать опыт коллег и делиться собственным опытом.
• Желание учиться.
• Личные качества
• Бесстрашный
• Коммуникабельный
• Умение делиться опытом
• Умение и желание выражать своё мнение
• Умение человека “заставлять” себя работать.
• Работа удаленная, т.е. самомотивация, активный поиск информации. Ответственность за результат.
• Желание \ способность учиться

Обязанности:

• Разработка и поддержка механизма поиска информации на базе PostgreSQL (большая БД, highload).
• Написание вспомогательных инструментов в виде web-приложений (PHP).

Продемонстрируйте свои знания

Вопрос 1

Что такое сложность алгоритма? Какова сложность алгоритма вычисления определителя матрицы nxn через миноры, если вычисляется он следующим образом: detA = СУММА((-1)^(1+j)*a1j*Mj) по j=1..n где Mj - дополнительный минор к j-ому элементу (т.е. определитель матрицы (n-1)x(n-1))?


Вопрос 2

Существуют внутренние и внешние алгоритмы сортировки и поиска данных. Внутренние - в оперативной памяти, внешние - на внешних носителях. Какие на ваш взгляд требования должны предъявляться к тем и другим алгоритмам?


Вопрос 3

Какие операции позволяет ускорить B-tree индекс? Какие не позволяет? Почему?


Вопрос 4

Что такое R-tree индекс, для чего используется?


Вопрос 5

Что такое hash join, merge join, nested loop join?


Вопрос 6

Какие преимущества есть у применения последовательностей по сравнению с автоинкрементными полями?


Вопрос 7

Опишите механизм появления взаимной блокировки для двух процессов.


Вопрос 8

Предположим что есть таблица с полем date_create типа date (только дата). В таблице есть индекс по этому полю. Будет ли он использоваться в запросе с условием WHERE date_create>='2010-09-18 12:10:11' ? Если нет, то что нужно сделать чтобы использовался?


Вопрос 9

Предположим есть две таблицы, tbl_countries и tbl_cities. В каждой есть числовое поле id и первичный ключ по нему. В таблице tbl_cities есть поле country_id, которое связано с id из таблицы tbl_countries отношением многие к одному. Напишите своими словами наиболее типичный план который мог бы быть для запроса SELECT * FROM tbl_cities ct JOIN tbl_countries co ON co.id=ct.country_id WHERE ct.id>100 and ct.id<200;


Вопрос 10

Для схемы из предыдущего вопроса. Пусть есть запрос - SELECT * FROM tbl_countries WHERE id<=100 ORDER by name LIMIT 50, с каким максимальным объемом записей придется работать БД во время выполнения запроса, если считать что всего стран в таблице 200, и все идентификаторы для них идут последовательно от 1 до 200?


Расскажите нам о себе