РУС | EN

14 июня(суббота) 2014 Москва

Телефон: +7 (499) 403-10-11 (многокан)
E-mail: 2014@devconf.ru

Создание узкоспециализированных баз данных на примере дерева рассылок aviasales

Каплуновский Борис
CTO aviasales.ru

Доклад(30 мин)

1) В каких случаях могут понадобиться специальные базы данных.
2) Протокол взаимодействия - только HTTP
3) Прототип на скриптовом языке Ruby/Python/PHP
4) Рассылка aviasales:


Подробно:
1) В каких случаях могут понадобиться специальные базы данных.
- Недостаточная производительность существующих решений
- Большая ресурсоёмкость существующих решений
- Недостаточная гибкость существующих решений
- Рассылка aviasales, эффективность прошлого решения, требования к гибкости

2) Протокол взаимодействия - только HTTP
- Мощный и самый распространённый протокол
- Высокороизводительные реализации серверов и клиентов для любых платформ
- Простота отладки, простота интеграции в любой инфраструктуре (nginx/haproxy)
- В фильтрующем дереве рассылки http используется и для получения запросов и для отправки данных во внешний мир

3) Прототип на скриптовом языке Ruby/Python/PHP
- Можно за один два рабочих дня написать прототип
- Если задумка хорошая то скорости прототипа будет достаточно
- Если в прототипе более 200 строк кода, лучше бросить это дело
- Для фильтрующего дерева рассылки мы взяли python и отказались от ООП
- Ядро базы данных дерева рассылки содержащее всю логки умещается в 150 строк кода

4) Рассылка aviasales:
- Разные варианты подписок гибкие точные, с ограничениями
- Поток данных сотни мегабайт данных в минуту
- Почему с sql не получалось эффективно решить задачу
- Python/Tornado и In-Memory storage
- Использование domain-specific database для работы в реальном времени
- Использование mysql в качестве надёжного хранилища
- Детали реализации:
- Хэш дерево
- Вставка в дерево
- Удаление из дерева
- Фильтрация документа при обходе дерева
- Ограничения решения


Программа конференции