SlideShare une entreprise Scribd logo
1  sur  32
"Когда стоит написать свою БД"
Олег Краснов
Системный Архитектор
SEMrush
o.krasnov@semrush.com
2013 dev.it-portfolio.net
Что такое SEMrush
- Ведущий сервис анализа конкурентов
- Позволяет узнать ключевые слова
- Позволяет анализировать не только ваши
собственные данные
- Сведения об бюджетах конкурентов на
продвижение в поисковиках
- Данные о затратах на каждое конкретное
объявление и его содержимое
dev.it-portfolio.net 2
Как выглядит SEMrush
dev.it-portfolio.net 3
Картина пользователей
- Рядовые пользователи: более 300 тысяч
- Крупные клиенты: более 50
- Интеграторы: более 100
dev.it-portfolio.net 4
Объёмы данных
- 90 миллионов слов
- 10 языковых баз
- > 2 миллиардов URL
- 30% AdWords объявлений
- 3 терабайта актуальных данных
- 40 терабайт исторических данных
dev.it-portfolio.net 5
Характер данных
- Ключевые слова
- Числовые данные
- URL
- Небольшие тексты объявлений
dev.it-portfolio.net 6
Хорошие примеры
- youtube.com : ~ 30 миллионов слов
- wikipedia.org : ~ 20 миллионов слов
- t-v-links.blogspot.com : 51 слово
- tiffanytunes.com : 28 слов
dev.it-portfolio.net 7
Распределение данных
dev.it-portfolio.net 8
Как это было в 2009 году
- MySQL 5.0.76 для хранения посчитанных
индексов по всем полям (MyISAM)
- Большие файлы для хранения текстовых
данных
- PHP 5.2.x для объединения данных и отдачи
отчётов
dev.it-portfolio.net 9
Что же стало понятно
Наличие прототипа – это прекрасно!
dev.it-portfolio.net 10
Но присутствовали проблемы
- Очень медленно строилось
- Плохо масштабировалось
- Для каждого столбца нужен был отдельный
индекс
- Занимало излишнее место
- Никто не понимал как это было написано
dev.it-portfolio.net 11
А чего же хотелось
- Быстрой отдачи данных
- Асинхронной отдачи данных
- Отказоустойчивости
- Масштабируемости
- Простоты
dev.it-portfolio.net 12
Может быть SQL
- MySQL : медленное построение
- PostgreSQL : схожие проблемы
- ORACLE : платный
- MSSQL : чуждая среда
dev.it-portfolio.net 13
Может быть NoSQL
- Redis: первый коммит 22 марта 2009 года
- MongoDB: первый релиз версии 9 декабря
2009 года (версия 0.0.3)
- Hadoop (версия 0.19.2) – большое
количество серверов
dev.it-portfolio.net 14
А что же тогда
- Файловая система
- Бинарные индексы
- Текстовые файлы
- Хорошая хэш-функция для поиска
- Компактное хранение числовых данных
dev.it-portfolio.net 15
Пробы пера в файловых системах
- UFS2 + Soft Updates
- EXT3(4)
- ReizerFS 3
- ZFS
dev.it-portfolio.net 16
Магия файловых систем
- Перелинковка
- Устойчивость к потерям данных
- Работа на уровне ядра
- Стабильность
- Простота
- Возможность создания виртуальных
устройств
dev.it-portfolio.net 17
Как это строится
- Основной индекс строится во время сбора
данных
- Агрегированные данные строятся после
этого
- Параллельно строятся дополнительные
индексы
- Затем строятся текстовые индексы
dev.it-portfolio.net 18
Как это хранится
- Индексы
- Тексты
- Ранки
- Исходники
dev.it-portfolio.net 19
Что стало понятно в процессе
- Необходимо кэширование результатов
- Часто запрашиваемые данные должны
лежать отдельно
- Учёт пользователей должен быть отдельно
dev.it-portfolio.net 20
Как это отдаётся
- JSON
- TCP сервер
- Для числовых данных event сервера
- Для текстового поиска и фильтров сервер
полнотекстового поиска
dev.it-portfolio.net 21
Что же там внутри
- C
- UNIX way
- Бинарный поиск
- Деревья
- Хэш таблицы
dev.it-portfolio.net 22
Как это хранилось раньше
dev.it-portfolio.net 23
Индексы
Текстовые данные
US
Как это хранится теперь
dev.it-portfolio.net 24
iSCSI через внутренний сетевой интерфейс
А если будет много запросов
dev.it-portfolio.net 25
Чего мы достигли
- Производительности: количество
обрабатываемых увеличилось на порядок с
3 до 30 миллионов запросов в сутки
- Гибкости: ввод в строй новых отчётов не
сопряжён с непреодолимыми трудностями
- Простоты развёртывания
- Простоты резервного копирования и
восстановления
dev.it-portfolio.net 26
Вспомогательные сервисы
-libevent + mmap
- Sphinx
- Python
dev.it-portfolio.net 27
Взгляд в будущее
- Новые отчёты
- Исторические данные
- Увеличение количества баз
- Непрерывные обновления
dev.it-portfolio.net 28
Непрерывные обновления
- Слегка поменять технологию сбора
- Написать одну утилиту
- Удовлетворённо посмотреть на результат
dev.it-portfolio.net 29
Выводы из вышесказанного
- Стоит писать свою базу данных
- Но если чётко известен объём задачи
dev.it-portfolio.net 30
Будьте на связи
Олег Краснов
Системный архитектор компании SEMrush
o.krasnov@semrush.com
+7 (962) 700-1771
dev.it-portfolio.net 31
Спасибо за внимание!
dev.it-portfolio.net 32

Contenu connexe

Tendances

Иван Бибилов: http-протокол
Иван Бибилов: http-протоколИван Бибилов: http-протокол
Иван Бибилов: http-протокол
Yandex
 
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
Ontico
 
Александр Богданов «Lambda - архитектура»
Александр Богданов «Lambda - архитектура»Александр Богданов «Lambda - архитектура»
Александр Богданов «Lambda - архитектура»
DataArt
 
Лекция "Архитектура поиска Яндекса"
Лекция "Архитектура поиска Яндекса"Лекция "Архитектура поиска Яндекса"
Лекция "Архитектура поиска Яндекса"
Polina Fomina
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012
Roman Pavlushko
 
Защита от DDoS
Защита от DDoS Защита от DDoS
Защита от DDoS
Vlad Arhipov
 

Tendances (18)

Иван Бибилов: http-протокол
Иван Бибилов: http-протоколИван Бибилов: http-протокол
Иван Бибилов: http-протокол
 
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
 
Александр Богданов «Lambda - архитектура»
Александр Богданов «Lambda - архитектура»Александр Богданов «Lambda - архитектура»
Александр Богданов «Lambda - архитектура»
 
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
 
lng2ihs v
lng2ihs vlng2ihs v
lng2ihs v
 
SphinxSearch Meetup - Tips&tricks
SphinxSearch Meetup - Tips&tricksSphinxSearch Meetup - Tips&tricks
SphinxSearch Meetup - Tips&tricks
 
Подходы к полуавтоматическому извлечению данных из веб-ресурсов
Подходы к полуавтоматическому извлечению данных из веб-ресурсовПодходы к полуавтоматическому извлечению данных из веб-ресурсов
Подходы к полуавтоматическому извлечению данных из веб-ресурсов
 
Frontera обход испанского интернета
Frontera обход испанского интернетаFrontera обход испанского интернета
Frontera обход испанского интернета
 
Денис Ларионов (Kinza 2016)
Денис Ларионов (Kinza 2016) Денис Ларионов (Kinza 2016)
Денис Ларионов (Kinza 2016)
 
Поисковое продвижение VS Контекстная реклама
Поисковое продвижение VS Контекстная рекламаПоисковое продвижение VS Контекстная реклама
Поисковое продвижение VS Контекстная реклама
 
Лекция "Архитектура поиска Яндекса"
Лекция "Архитектура поиска Яндекса"Лекция "Архитектура поиска Яндекса"
Лекция "Архитектура поиска Яндекса"
 
Александр Киров — Acronis — ICBDA 2015
Александр Киров — Acronis — ICBDA 2015Александр Киров — Acronis — ICBDA 2015
Александр Киров — Acronis — ICBDA 2015
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012
 
Браузерные API обмена данными: какие и зачем
Браузерные API обмена данными: какие и зачемБраузерные API обмена данными: какие и зачем
Браузерные API обмена данными: какие и зачем
 
InfoboxCloud для СМИ
InfoboxCloud для СМИInfoboxCloud для СМИ
InfoboxCloud для СМИ
 
AmberData: Dmp for clients
AmberData: Dmp for clientsAmberData: Dmp for clients
AmberData: Dmp for clients
 
Сравнение стоимости владения ЛАЙВ и лицензий в собственность
Сравнение стоимости владения ЛАЙВ и лицензий в собственностьСравнение стоимости владения ЛАЙВ и лицензий в собственность
Сравнение стоимости владения ЛАЙВ и лицензий в собственность
 
Защита от DDoS
Защита от DDoS Защита от DDoS
Защита от DDoS
 

En vedette

Highload Begun Pankov
Highload Begun PankovHighload Begun Pankov
Highload Begun Pankov
Ontico
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
IT-Portfolio
 

En vedette (9)

Highload: специализированные высокопроизводительные индексы
Highload: специализированные высокопроизводительные индексыHighload: специализированные высокопроизводительные индексы
Highload: специализированные высокопроизводительные индексы
 
Highload Begun Pankov
Highload Begun PankovHighload Begun Pankov
Highload Begun Pankov
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура п...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура п...13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура п...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура п...
 
как строить архитектуру для отказоустойчивой службы такси
как строить архитектуру для отказоустойчивой службы таксикак строить архитектуру для отказоустойчивой службы такси
как строить архитектуру для отказоустойчивой службы такси
 
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
 
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
 
Testing at Spotify
Testing at SpotifyTesting at Spotify
Testing at Spotify
 

Similaire à 20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда стоит написать свою БД", Олег Краснов

16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
IT-Portfolio
 
Как мы строили аналитическую платформу на несколько миллиардов событии в меся...
Как мы строили аналитическую платформу на несколько миллиардов событии в меся...Как мы строили аналитическую платформу на несколько миллиардов событии в меся...
Как мы строили аналитическую платформу на несколько миллиардов событии в меся...
Coub
 
"Облачный сервис персональных рекомендаций для 20 000 магазинов — алгоритмы и...
"Облачный сервис персональных рекомендаций для 20 000 магазинов — алгоритмы и..."Облачный сервис персональных рекомендаций для 20 000 магазинов — алгоритмы и...
"Облачный сервис персональных рекомендаций для 20 000 магазинов — алгоритмы и...
it-people
 
Coub - как мы строили аналитическую платформу на несколько миллиардов событий...
Coub - как мы строили аналитическую платформу на несколько миллиардов событий...Coub - как мы строили аналитическую платформу на несколько миллиардов событий...
Coub - как мы строили аналитическую платформу на несколько миллиардов событий...
Ontico
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
Yandex
 
Web весна 2013 лекция 1
Web весна 2013 лекция 1Web весна 2013 лекция 1
Web весна 2013 лекция 1
Technopark
 
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...
it-people
 

Similaire à 20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда стоит написать свою БД", Олег Краснов (20)

16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
 
Как мы строили аналитическую платформу на несколько миллиардов событии в меся...
Как мы строили аналитическую платформу на несколько миллиардов событии в меся...Как мы строили аналитическую платформу на несколько миллиардов событии в меся...
Как мы строили аналитическую платформу на несколько миллиардов событии в меся...
 
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиСИнфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
 
Семантическое ядро рунета
Семантическое ядро рунетаСемантическое ядро рунета
Семантическое ядро рунета
 
"Облачный сервис персональных рекомендаций для 20 000 магазинов — алгоритмы и...
"Облачный сервис персональных рекомендаций для 20 000 магазинов — алгоритмы и..."Облачный сервис персональных рекомендаций для 20 000 магазинов — алгоритмы и...
"Облачный сервис персональных рекомендаций для 20 000 магазинов — алгоритмы и...
 
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилищеВелосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
 
Coub - как мы строили аналитическую платформу на несколько миллиардов событий...
Coub - как мы строили аналитическую платформу на несколько миллиардов событий...Coub - как мы строили аналитическую платформу на несколько миллиардов событий...
Coub - как мы строили аналитическую платформу на несколько миллиардов событий...
 
Windows Azure - BigData and Hadoop
Windows Azure - BigData and HadoopWindows Azure - BigData and Hadoop
Windows Azure - BigData and Hadoop
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
 
Web весна 2013 лекция 1
Web весна 2013 лекция 1Web весна 2013 лекция 1
Web весна 2013 лекция 1
 
Lan-Crawler Bachlor RU
Lan-Crawler Bachlor RULan-Crawler Bachlor RU
Lan-Crawler Bachlor RU
 
Презентация аналитической системы для ритейла СуперМаг BI
Презентация аналитической системы для ритейла СуперМаг BIПрезентация аналитической системы для ритейла СуперМаг BI
Презентация аналитической системы для ритейла СуперМаг BI
 
Druid - Interactive Analytics At Scale
Druid - Interactive Analytics At ScaleDruid - Interactive Analytics At Scale
Druid - Interactive Analytics At Scale
 
Seo проектирование сайта
Seo проектирование сайтаSeo проектирование сайта
Seo проектирование сайта
 
Модернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиМодернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитики
 
Моделирование для NoSQL БД
Моделирование для NoSQL БДМоделирование для NoSQL БД
Моделирование для NoSQL БД
 
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяц
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяцМихаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяц
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяц
 
Модернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиМодернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитики
 
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
 

Plus de IT-Portfolio

16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...
IT-Portfolio
 
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...
IT-Portfolio
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
IT-Portfolio
 
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
IT-Portfolio
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
IT-Portfolio
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
IT-Portfolio
 

Plus de IT-Portfolio (9)

16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...
 
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
 
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Шардинг в...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Шардинг в...20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Шардинг в...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Шардинг в...
 
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Особенности р...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Особенности р...13 октября, DEV {web} - конференция о Highload веб-разработке. "Особенности р...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Особенности р...
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
 

20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда стоит написать свою БД", Олег Краснов

  • 1. "Когда стоит написать свою БД" Олег Краснов Системный Архитектор SEMrush o.krasnov@semrush.com 2013 dev.it-portfolio.net
  • 2. Что такое SEMrush - Ведущий сервис анализа конкурентов - Позволяет узнать ключевые слова - Позволяет анализировать не только ваши собственные данные - Сведения об бюджетах конкурентов на продвижение в поисковиках - Данные о затратах на каждое конкретное объявление и его содержимое dev.it-portfolio.net 2
  • 4. Картина пользователей - Рядовые пользователи: более 300 тысяч - Крупные клиенты: более 50 - Интеграторы: более 100 dev.it-portfolio.net 4
  • 5. Объёмы данных - 90 миллионов слов - 10 языковых баз - > 2 миллиардов URL - 30% AdWords объявлений - 3 терабайта актуальных данных - 40 терабайт исторических данных dev.it-portfolio.net 5
  • 6. Характер данных - Ключевые слова - Числовые данные - URL - Небольшие тексты объявлений dev.it-portfolio.net 6
  • 7. Хорошие примеры - youtube.com : ~ 30 миллионов слов - wikipedia.org : ~ 20 миллионов слов - t-v-links.blogspot.com : 51 слово - tiffanytunes.com : 28 слов dev.it-portfolio.net 7
  • 9. Как это было в 2009 году - MySQL 5.0.76 для хранения посчитанных индексов по всем полям (MyISAM) - Большие файлы для хранения текстовых данных - PHP 5.2.x для объединения данных и отдачи отчётов dev.it-portfolio.net 9
  • 10. Что же стало понятно Наличие прототипа – это прекрасно! dev.it-portfolio.net 10
  • 11. Но присутствовали проблемы - Очень медленно строилось - Плохо масштабировалось - Для каждого столбца нужен был отдельный индекс - Занимало излишнее место - Никто не понимал как это было написано dev.it-portfolio.net 11
  • 12. А чего же хотелось - Быстрой отдачи данных - Асинхронной отдачи данных - Отказоустойчивости - Масштабируемости - Простоты dev.it-portfolio.net 12
  • 13. Может быть SQL - MySQL : медленное построение - PostgreSQL : схожие проблемы - ORACLE : платный - MSSQL : чуждая среда dev.it-portfolio.net 13
  • 14. Может быть NoSQL - Redis: первый коммит 22 марта 2009 года - MongoDB: первый релиз версии 9 декабря 2009 года (версия 0.0.3) - Hadoop (версия 0.19.2) – большое количество серверов dev.it-portfolio.net 14
  • 15. А что же тогда - Файловая система - Бинарные индексы - Текстовые файлы - Хорошая хэш-функция для поиска - Компактное хранение числовых данных dev.it-portfolio.net 15
  • 16. Пробы пера в файловых системах - UFS2 + Soft Updates - EXT3(4) - ReizerFS 3 - ZFS dev.it-portfolio.net 16
  • 17. Магия файловых систем - Перелинковка - Устойчивость к потерям данных - Работа на уровне ядра - Стабильность - Простота - Возможность создания виртуальных устройств dev.it-portfolio.net 17
  • 18. Как это строится - Основной индекс строится во время сбора данных - Агрегированные данные строятся после этого - Параллельно строятся дополнительные индексы - Затем строятся текстовые индексы dev.it-portfolio.net 18
  • 19. Как это хранится - Индексы - Тексты - Ранки - Исходники dev.it-portfolio.net 19
  • 20. Что стало понятно в процессе - Необходимо кэширование результатов - Часто запрашиваемые данные должны лежать отдельно - Учёт пользователей должен быть отдельно dev.it-portfolio.net 20
  • 21. Как это отдаётся - JSON - TCP сервер - Для числовых данных event сервера - Для текстового поиска и фильтров сервер полнотекстового поиска dev.it-portfolio.net 21
  • 22. Что же там внутри - C - UNIX way - Бинарный поиск - Деревья - Хэш таблицы dev.it-portfolio.net 22
  • 23. Как это хранилось раньше dev.it-portfolio.net 23 Индексы Текстовые данные US
  • 24. Как это хранится теперь dev.it-portfolio.net 24 iSCSI через внутренний сетевой интерфейс
  • 25. А если будет много запросов dev.it-portfolio.net 25
  • 26. Чего мы достигли - Производительности: количество обрабатываемых увеличилось на порядок с 3 до 30 миллионов запросов в сутки - Гибкости: ввод в строй новых отчётов не сопряжён с непреодолимыми трудностями - Простоты развёртывания - Простоты резервного копирования и восстановления dev.it-portfolio.net 26
  • 27. Вспомогательные сервисы -libevent + mmap - Sphinx - Python dev.it-portfolio.net 27
  • 28. Взгляд в будущее - Новые отчёты - Исторические данные - Увеличение количества баз - Непрерывные обновления dev.it-portfolio.net 28
  • 29. Непрерывные обновления - Слегка поменять технологию сбора - Написать одну утилиту - Удовлетворённо посмотреть на результат dev.it-portfolio.net 29
  • 30. Выводы из вышесказанного - Стоит писать свою базу данных - Но если чётко известен объём задачи dev.it-portfolio.net 30
  • 31. Будьте на связи Олег Краснов Системный архитектор компании SEMrush o.krasnov@semrush.com +7 (962) 700-1771 dev.it-portfolio.net 31