SlideShare a Scribd company logo
Ускорение веб-аналитики с использованием column-oriented СУБД Иван Авсеянко
Возраст Пол Местоположение Статистика хитов Много чего ещё...
SQL * *rulez
Какую СУБД выбрать? MySQL; PostgreSQL; Oracle; MS SQL ...
Больше хитов – больше данных
Больше данных – больше проблем Для примера –  www.rambler.ru 14 000 000 просмотров; 200 байт на хит; 2,6 ГБ логов в день;
Проблемы “традиционных” СУБД Запросы заранее неизвестны Даже индексы могут не уместиться в RAM Данные загружаются слишком медленно
OLTP
Иван Иванов 1 курс Факультет биологии Группа 123 Петр Петров 1 курс Факультет биологии Группа 132 Сидор Сидоров 1 курс Факультет экономики Группа 190
Храним данные строками
Храним данные столбцами
Преимущества колонок Каждую колонку можно отсортировать по-своему “ Традиционные” индексы не нужны Меньше операций seek при обработке многих строк Есть возможность эффективно сжимать данные
Колонка – массив однородных данных
Сжатые данные лучше, чем несжатые Уменьшение объёма данных Значительное ускорение работы СУБД; Для каждой колонки можно выбрать наиболее подходящий алгоритм сжатия
Реализации
Open source and free! Infobright (CE) InfiniDB (CE) MonetDB LucidDB ...; C-Store (2006) Infobright (EE) InfiniDB (EE) Oracle ...;
Infobright - плюсы Лучшее сжатие на рынке Неплохая скорость загрузки данных в БД Хорошая скорость выполнения сложных запросов
Infobright - минусы Реализовано не очень большое подмножество языка SQL (хотя есть медленный MySQL optimizer) Однопоточный загрузчик данных Однопоточное выполнение запроса Баги
InfiniDB - плюсы Многопоточная загрузка данных Многопоточное выполнение запросов Довольно полная реализация SQL, с возможностью выполнения DELETE, INSERT, UPDATE Поддержка транзакций (MVCC)
InfiniDB - минусы Гигантский размер БД (сжатие доступно только в EE) Небыстрая загрузка данных (из-за отсутствия компрессии)
Monet DB - плюсы Довольно полная реализация SQL, включая INSERT, UPDATE, DELETE Есть сжатие данных Поддержка транзакций (OCC) Подержка Xquery и других интерфейсов к БД
Monet DB - минусы Слабое сжатие данных Относительно медленная загрузка данных
Тестовый набор данных ~327,5 миллионов строк 23 колонки ~63 GB 29 каталогов, 2814 файлов
Тестовая конфигурация CPU: Intel Core 2 Duo E6550 @ 2.33GHz RAM: 8GB HDD: 1Tb SATA, 32Mb cache, 7200RPM OS: Fedora 15, Linux kernel 2.6.40.4-5.fc15.x86_64
Версии ПО Infobright CE 4.0.4 x86_64 InfiniDB CE 2.2.2 x86_64 MonetDB 11.5.3 x86_64 MySQL 5.5.14 x86_64
Загрузка данных
MySQL/MyISAM LOAD DATA LOCAL INFILE '$i' INTO TABLE test; Время загрузки – 92  минуты 26 секунд Размер данных –  63  Gb
Infobright CE LOAD DATA LOCAL INFILE 'filename' INTO TABLE test Время загрузки – 216 минут Размер данных – 8,5 Gb
MonetDB COPY INTO test FROM 'file.log' DELIMITERS '\t' LOCKED; Время загрузки – 643 минуты Размер данных – 63 Gb
InfiniDB LOAD DATA LOCAL INFILE '$i' INTO TABLE test; Время загрузки – > 24 часов  Размер данных – > 63 Gb
MySQL/InnoDB LOAD DATA LOCAL INFILE '$i' INTO TABLE test; Со сжатием (Barracuda)! Время загрузки – 2,5 суток Размер данных – 36 Gb
Выборки
SELECT COUNT(*) FROM test;
MySQL/MyISAM – 0,03  секунды Infobright CE – 0,6 секунды MonetDB –  4 ,2  секунды MySQL/InnoDB – 2 8  минут
SELECT country, state, SUM(imps) AS impressions, SUM(clicks) AS clicks FROM test WHERE is_fraud < 1 GROUP BY country, state ORDER BY country, state;
Infobright CE – 7 минут 44 секунды MySQL/MyISAM – 13  минут 31 секунда MonetDB – 32 минуты 11 секунд MySQL/InnoDB – 72 минуты 4 секунды
Другие результаты http://www.mysqlperformanceblog.com/2009/10/02/analyzing-air-traffic-performance-with-infobright-and-monetdb/ http://www.mysqlperformanceblog.com/2010/01/07/star-schema-bechmark-infobright-infinidb-and-luciddb/
Как сделать выбор? Не используйте колоночные СУБД, если ваши данные часто обновляются. Не используйте колоночные СУБД, если вам не нужны сложные и непредсказуемые выборки.
Оптимизации  IB Данные колонок хранятся блоками по  65535  записей  (DataPack) , сжатие зависит не только от типа колонки, но и от содержимого блока;
Оптимизации  IB Для каждого  DataPack  хранятся метаданные, такие как результат выполнения функций  MAX(), MIN(), SUM(), AVG()  для значений блока
Оптимизации  IB Планировщик запросов использует метаданные для определения «нужных», «ненужных» и «подозрительных» блоков. Данные, которые не нужны, не читаются с диска и не разжимаются.
Советы по оптимизации IB ServerMainHeapSize = 1/2 – 2/3 доступной RAM LoaderHeapSize = не меньше 800 MB, если позволяет память DataFolder и CacheFolder лучше быть на разных дисках Без крайней необходимости не включайте  MySQLQueryOptimizer
Спасибо за внимание

More Related Content

PDF
Волков не бояться! Бизнес логика и РСУБД
PPTX
КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов
PPT
Kosmodemiansky
PPT
hl++ Rubtsov
PPTX
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
PPTX
Как мы готовим MySQL / Николай Королёв (Badoo)
PDF
Violin Memory. Первая скрипка Huawei Dorado. Антикризисное решение
PDF
Алексей Захаров "Архитектура Яндекс.Фоток"
Волков не бояться! Бизнес логика и РСУБД
КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов
Kosmodemiansky
hl++ Rubtsov
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Как мы готовим MySQL / Николай Королёв (Badoo)
Violin Memory. Первая скрипка Huawei Dorado. Антикризисное решение
Алексей Захаров "Архитектура Яндекс.Фоток"

What's hot (20)

PDF
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
PDF
EMC XtremIO. Превосходя ожидания
PPT
Introduction to MongoDB
DOCX
HP 3PAR StoreServ 7200
PPTX
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
PDF
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
PPTX
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
PDF
Oracle exa2 biz_summit
ODP
Innodb Scalability And New Features Hl2008 Rus
PDF
HPC file systems (160761)
PPTX
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
PPTX
MongoDB. Как готовить, с чем едят?
PDF
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
PDF
"Новые возможности MySQL 5.7"
PDF
Инфраструктура хранения для KADME Whereoil
PPTX
Mysql vs postgresql
PPT
през лекц 2-5_файлы_091214_v1
PDF
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
PDF
Расширение границ возможного с EMC XtremIO
PPTX
Анализируем данные с Clickhouse
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
EMC XtremIO. Превосходя ожидания
Introduction to MongoDB
HP 3PAR StoreServ 7200
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Oracle exa2 biz_summit
Innodb Scalability And New Features Hl2008 Rus
HPC file systems (160761)
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
MongoDB. Как готовить, с чем едят?
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
"Новые возможности MySQL 5.7"
Инфраструктура хранения для KADME Whereoil
Mysql vs postgresql
през лекц 2-5_файлы_091214_v1
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
Расширение границ возможного с EMC XtremIO
Анализируем данные с Clickhouse
Ad

Similar to Ускорение веб-аналитики с использованием Column-oriented СУБД (Иван Авсеянко) (20)

PDF
Aлександр Зайцев, LifeStreet
PDF
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
ODP
Wonderful World Of Mysql Storage Engines Hl2008 Rus
PPTX
DB2 BLU Explained
PPTX
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
PDF
Как мы выбирали PostgreSQL для ГИС ЖКХ. Егор Савочкин, ЛАНИТ
PDF
Android Telegram S Optimizations
PDF
IBM FlashSystem-Бескомпромиссность в каждом байте
PDF
IBM FlashSystem-Бескомпромиссность в каждом байте
PPTX
2014.12.23 Александр Андреев, Parallels
PDF
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
PPTX
Татьяна Бахаревская - "Эксплуатация проектов"
PDF
Сергей Чистович "Подходы к кешированию на UGC-сервисе"
PPTX
Hibernate & JPA perfomance
PDF
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
PPTX
как из трех стоек сделать две.
PDF
История успеха Яндекс.Почты
PPTX
Мониторинг, тюнинг и оптимизация баз данных, используя продукты Dell Software
PPTX
Мониторинг, тюнинг и оптимизация баз данных, используя продукты Dell Software
PDF
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
Aлександр Зайцев, LifeStreet
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Wonderful World Of Mysql Storage Engines Hl2008 Rus
DB2 BLU Explained
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Как мы выбирали PostgreSQL для ГИС ЖКХ. Егор Савочкин, ЛАНИТ
Android Telegram S Optimizations
IBM FlashSystem-Бескомпромиссность в каждом байте
IBM FlashSystem-Бескомпромиссность в каждом байте
2014.12.23 Александр Андреев, Parallels
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Татьяна Бахаревская - "Эксплуатация проектов"
Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Hibernate & JPA perfomance
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
как из трех стоек сделать две.
История успеха Яндекс.Почты
Мониторинг, тюнинг и оптимизация баз данных, используя продукты Dell Software
Мониторинг, тюнинг и оптимизация баз данных, используя продукты Dell Software
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
Ad

More from Ontico (20)

PDF
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
PDF
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
PPTX
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
PDF
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
PDF
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
PDF
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PDF
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
PDF
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
PPTX
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
PPTX
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
PDF
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
PPTX
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
PPTX
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
PDF
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
PPT
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
PPTX
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
PPTX
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
PPTX
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
PPTX
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
PDF
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...

Ускорение веб-аналитики с использованием Column-oriented СУБД (Иван Авсеянко)

  • 1. Ускорение веб-аналитики с использованием column-oriented СУБД Иван Авсеянко
  • 2. Возраст Пол Местоположение Статистика хитов Много чего ещё...
  • 4. Какую СУБД выбрать? MySQL; PostgreSQL; Oracle; MS SQL ...
  • 5. Больше хитов – больше данных
  • 6. Больше данных – больше проблем Для примера – www.rambler.ru 14 000 000 просмотров; 200 байт на хит; 2,6 ГБ логов в день;
  • 7. Проблемы “традиционных” СУБД Запросы заранее неизвестны Даже индексы могут не уместиться в RAM Данные загружаются слишком медленно
  • 9. Иван Иванов 1 курс Факультет биологии Группа 123 Петр Петров 1 курс Факультет биологии Группа 132 Сидор Сидоров 1 курс Факультет экономики Группа 190
  • 12. Преимущества колонок Каждую колонку можно отсортировать по-своему “ Традиционные” индексы не нужны Меньше операций seek при обработке многих строк Есть возможность эффективно сжимать данные
  • 13. Колонка – массив однородных данных
  • 14. Сжатые данные лучше, чем несжатые Уменьшение объёма данных Значительное ускорение работы СУБД; Для каждой колонки можно выбрать наиболее подходящий алгоритм сжатия
  • 16. Open source and free! Infobright (CE) InfiniDB (CE) MonetDB LucidDB ...; C-Store (2006) Infobright (EE) InfiniDB (EE) Oracle ...;
  • 17. Infobright - плюсы Лучшее сжатие на рынке Неплохая скорость загрузки данных в БД Хорошая скорость выполнения сложных запросов
  • 18. Infobright - минусы Реализовано не очень большое подмножество языка SQL (хотя есть медленный MySQL optimizer) Однопоточный загрузчик данных Однопоточное выполнение запроса Баги
  • 19. InfiniDB - плюсы Многопоточная загрузка данных Многопоточное выполнение запросов Довольно полная реализация SQL, с возможностью выполнения DELETE, INSERT, UPDATE Поддержка транзакций (MVCC)
  • 20. InfiniDB - минусы Гигантский размер БД (сжатие доступно только в EE) Небыстрая загрузка данных (из-за отсутствия компрессии)
  • 21. Monet DB - плюсы Довольно полная реализация SQL, включая INSERT, UPDATE, DELETE Есть сжатие данных Поддержка транзакций (OCC) Подержка Xquery и других интерфейсов к БД
  • 22. Monet DB - минусы Слабое сжатие данных Относительно медленная загрузка данных
  • 23. Тестовый набор данных ~327,5 миллионов строк 23 колонки ~63 GB 29 каталогов, 2814 файлов
  • 24. Тестовая конфигурация CPU: Intel Core 2 Duo E6550 @ 2.33GHz RAM: 8GB HDD: 1Tb SATA, 32Mb cache, 7200RPM OS: Fedora 15, Linux kernel 2.6.40.4-5.fc15.x86_64
  • 25. Версии ПО Infobright CE 4.0.4 x86_64 InfiniDB CE 2.2.2 x86_64 MonetDB 11.5.3 x86_64 MySQL 5.5.14 x86_64
  • 27. MySQL/MyISAM LOAD DATA LOCAL INFILE '$i' INTO TABLE test; Время загрузки – 92 минуты 26 секунд Размер данных – 63 Gb
  • 28. Infobright CE LOAD DATA LOCAL INFILE 'filename' INTO TABLE test Время загрузки – 216 минут Размер данных – 8,5 Gb
  • 29. MonetDB COPY INTO test FROM 'file.log' DELIMITERS '\t' LOCKED; Время загрузки – 643 минуты Размер данных – 63 Gb
  • 30. InfiniDB LOAD DATA LOCAL INFILE '$i' INTO TABLE test; Время загрузки – > 24 часов Размер данных – > 63 Gb
  • 31. MySQL/InnoDB LOAD DATA LOCAL INFILE '$i' INTO TABLE test; Со сжатием (Barracuda)! Время загрузки – 2,5 суток Размер данных – 36 Gb
  • 34. MySQL/MyISAM – 0,03 секунды Infobright CE – 0,6 секунды MonetDB – 4 ,2 секунды MySQL/InnoDB – 2 8 минут
  • 35. SELECT country, state, SUM(imps) AS impressions, SUM(clicks) AS clicks FROM test WHERE is_fraud < 1 GROUP BY country, state ORDER BY country, state;
  • 36. Infobright CE – 7 минут 44 секунды MySQL/MyISAM – 13 минут 31 секунда MonetDB – 32 минуты 11 секунд MySQL/InnoDB – 72 минуты 4 секунды
  • 37. Другие результаты http://www.mysqlperformanceblog.com/2009/10/02/analyzing-air-traffic-performance-with-infobright-and-monetdb/ http://www.mysqlperformanceblog.com/2010/01/07/star-schema-bechmark-infobright-infinidb-and-luciddb/
  • 38. Как сделать выбор? Не используйте колоночные СУБД, если ваши данные часто обновляются. Не используйте колоночные СУБД, если вам не нужны сложные и непредсказуемые выборки.
  • 39. Оптимизации IB Данные колонок хранятся блоками по 65535 записей (DataPack) , сжатие зависит не только от типа колонки, но и от содержимого блока;
  • 40. Оптимизации IB Для каждого DataPack хранятся метаданные, такие как результат выполнения функций MAX(), MIN(), SUM(), AVG() для значений блока
  • 41. Оптимизации IB Планировщик запросов использует метаданные для определения «нужных», «ненужных» и «подозрительных» блоков. Данные, которые не нужны, не читаются с диска и не разжимаются.
  • 42. Советы по оптимизации IB ServerMainHeapSize = 1/2 – 2/3 доступной RAM LoaderHeapSize = не меньше 800 MB, если позволяет память DataFolder и CacheFolder лучше быть на разных дисках Без крайней необходимости не включайте MySQLQueryOptimizer