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
Спасибо за внимание!
dev.it-portfolio.net 31
Будьте на связи
Олег Краснов
Системный архитектор компании SEMrush
o.krasnov@semrush.com
+7 (962) 700-1771
dev.it-portfolio.net 32

Contenu connexe

Tendances

Иван Бибилов: http-протокол
Иван Бибилов: http-протоколИван Бибилов: http-протокол
Иван Бибилов: http-протоколYandex
 
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)Ontico
 
Александр Богданов «Lambda - архитектура»
Александр Богданов «Lambda - архитектура»Александр Богданов «Lambda - архитектура»
Александр Богданов «Lambda - архитектура»DataArt
 
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...HappyDev
 
lng2ihs v
lng2ihs vlng2ihs v
lng2ihs vfpgroup
 
SphinxSearch Meetup - Tips&tricks
SphinxSearch Meetup - Tips&tricksSphinxSearch Meetup - Tips&tricks
SphinxSearch Meetup - Tips&tricksRoman Pavlushko
 
Подходы к полуавтоматическому извлечению данных из веб-ресурсов
Подходы к полуавтоматическому извлечению данных из веб-ресурсовПодходы к полуавтоматическому извлечению данных из веб-ресурсов
Подходы к полуавтоматическому извлечению данных из веб-ресурсовДмитрий Аладин
 
Frontera обход испанского интернета
Frontera обход испанского интернетаFrontera обход испанского интернета
Frontera обход испанского интернетаAlexander Sibiryakov
 
Поисковое продвижение VS Контекстная реклама
Поисковое продвижение VS Контекстная рекламаПоисковое продвижение VS Контекстная реклама
Поисковое продвижение VS Контекстная рекламаВалерий Красько
 
Лекция "Архитектура поиска Яндекса"
Лекция "Архитектура поиска Яндекса"Лекция "Архитектура поиска Яндекса"
Лекция "Архитектура поиска Яндекса"Polina Fomina
 
Александр Киров — Acronis — ICBDA 2015
Александр Киров — Acronis — ICBDA 2015Александр Киров — Acronis — ICBDA 2015
Александр Киров — Acronis — ICBDA 2015rusbase
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012Roman Pavlushko
 
Браузерные API обмена данными: какие и зачем
Браузерные API обмена данными: какие и зачемБраузерные API обмена данными: какие и зачем
Браузерные API обмена данными: какие и зачемPavel Klimiankou
 
InfoboxCloud для СМИ
InfoboxCloud для СМИInfoboxCloud для СМИ
InfoboxCloud для СМИYuri Trukhin
 
AmberData: Dmp for clients
AmberData: Dmp for clientsAmberData: Dmp for clients
AmberData: Dmp for clientsAmberData
 
Сравнение стоимости владения ЛАЙВ и лицензий в собственность
Сравнение стоимости владения ЛАЙВ и лицензий в собственностьСравнение стоимости владения ЛАЙВ и лицензий в собственность
Сравнение стоимости владения ЛАЙВ и лицензий в собственностьNikita Abramenko
 
Защита от 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

106880694 bluetooth-mobile-ip
106880694 bluetooth-mobile-ip106880694 bluetooth-mobile-ip
106880694 bluetooth-mobile-ipVijaYVb
 
Themes for the decade
Themes for the decade Themes for the decade
Themes for the decade Castlestone
 
Miguel jimenez startup steroids
Miguel jimenez startup steroidsMiguel jimenez startup steroids
Miguel jimenez startup steroidsappcierta
 

En vedette (6)

106880694 bluetooth-mobile-ip
106880694 bluetooth-mobile-ip106880694 bluetooth-mobile-ip
106880694 bluetooth-mobile-ip
 
Nia
NiaNia
Nia
 
Target
TargetTarget
Target
 
Pril1
Pril1Pril1
Pril1
 
Themes for the decade
Themes for the decade Themes for the decade
Themes for the decade
 
Miguel jimenez startup steroids
Miguel jimenez startup steroidsMiguel jimenez startup steroids
Miguel jimenez startup steroids
 

Similaire à Dev {highload}. When you should do your own db.

16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...IT-Portfolio
 
Как мы строили аналитическую платформу на несколько миллиардов событии в меся...
Как мы строили аналитическую платформу на несколько миллиардов событии в меся...Как мы строили аналитическую платформу на несколько миллиардов событии в меся...
Как мы строили аналитическую платформу на несколько миллиардов событии в меся...Coub
 
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиСИнфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиСYury Petrov
 
Семантическое ядро рунета
Семантическое ядро рунетаСемантическое ядро рунета
Семантическое ядро рунетаCEE-SEC(R)
 
"Облачный сервис персональных рекомендаций для 20 000 магазинов — алгоритмы и...
"Облачный сервис персональных рекомендаций для 20 000 магазинов — алгоритмы и..."Облачный сервис персональных рекомендаций для 20 000 магазинов — алгоритмы и...
"Облачный сервис персональных рекомендаций для 20 000 магазинов — алгоритмы и...it-people
 
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилищеВелосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилищеAlexandre Kalendarev
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...IT-Portfolio
 
Coub - как мы строили аналитическую платформу на несколько миллиардов событий...
Coub - как мы строили аналитическую платформу на несколько миллиардов событий...Coub - как мы строили аналитическую платформу на несколько миллиардов событий...
Coub - как мы строили аналитическую платформу на несколько миллиардов событий...Ontico
 
Windows Azure - BigData and Hadoop
Windows Azure - BigData and HadoopWindows Azure - BigData and Hadoop
Windows Azure - BigData and HadoopAlexey Bokov
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияYandex
 
Web весна 2013 лекция 1
Web весна 2013 лекция 1Web весна 2013 лекция 1
Web весна 2013 лекция 1Technopark
 
Lan-Crawler Bachlor RU
Lan-Crawler Bachlor RULan-Crawler Bachlor RU
Lan-Crawler Bachlor RUcDima
 
Презентация аналитической системы для ритейла СуперМаг BI
Презентация аналитической системы для ритейла СуперМаг BIПрезентация аналитической системы для ритейла СуперМаг BI
Презентация аналитической системы для ритейла СуперМаг BIОникс Софт
 
Seo проектирование сайта
Seo проектирование сайтаSeo проектирование сайта
Seo проектирование сайтаИрина Шамина
 
Модернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиМодернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиElizaveta Alekseeva
 
Моделирование для NoSQL БД
Моделирование для NoSQL БДМоделирование для NoSQL БД
Моделирование для NoSQL БДAndrew Sovtsov
 
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяц
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяцМихаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяц
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяцTanya Denisyuk
 
Модернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиМодернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиYuri Yashkin
 
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 à Dev {highload}. When you should do your own db. (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 хранилище
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
 
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 – изнутри ...
 

Dev {highload}. When you should do your own db.

  • 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
  • 32. Будьте на связи Олег Краснов Системный архитектор компании SEMrush o.krasnov@semrush.com +7 (962) 700-1771 dev.it-portfolio.net 32