SlideShare a Scribd company logo
10	способов достижения
HighLoad'а и BigData на
ровном месте
Илья	Космодемьянский
ik@postgresql-consulting.com
С	базами	данных	бывает	две	главных	
проблемы
• То,	что	должно	лежать	в	базе,	лежит	не	в	базе
• То	что	не	должно	лежать	в	базе,	тем	не	менее	лежит	в	базе
1.	Масштабирование
• Масштабирование	это	хорошо
• Потому	что	хорошо
• Все	знают	что	scale-out	это	хорошо,	а	scale	up	- плохо
1.	Масштабирование
• Типичный	случай:
• У	нас	будет	миллион	пользователей
• Давайте	поставим	100	инстансов PostgreSQL	и	будем	шардить по	created_at
• Собрать	данные	о	пользователях	на	разных	нодах – боль
• Ой,	а	у	нас	100%	утилизованы 10	машин	кластера,	а	90	не	заняты	вообще	ничем
• Ой,	а	когда	мы	обращаемся	к	незанятой	машине	запрос	почему-то	выполняется	
в	разы	дольше
• Ой,	шардить надо	было	по		user_id
• Нам	снова	есть	чем	заняться
• А	давайте	подумаем,	так	ли	это	много,	1M	пользователей	для	одного	
инстанса PostgreSQL	на	современном	железе
2.	Бизнес	хочет	хранить	данные	за	все	
время©
• Тайм-сериал	статистика,	прирост	100500	тысяч	строк	в	день
• Строим	агрегаты	для	отчетов
• Через	несколько	лет	получаем	BIG	data
• Зачем	нам	данные	за	все	время?
• Почему	нельзя	в	нагруженной	базе	держать	агрегаты	+	свежи	
данные,	а	остальное	держать	в	архиве?
3.	EAV	упрощает	проектирование
• Entity–attribute–value
• Все	данные	лежат	в	3-4	гигантских	таблицах
• Эти	таблицы	надо	джойнить друг	с	другом
• Как	результат	– EAV	гордо	переименовывается	в	ядро	и	обрастает	
витринами	и	представлениями	с	денормазованными данными	в	
реляционном	виде
• Проектирование	упрощено	до	предела
• Чтобы	его	упростить,	приходится	выкидывать	«ядро»
4.	ORM	упрощает	разработку
• Универсальный	способ	убить	производительность	любой	базы
• Например	SELECT	*	FROM	foo	where	ID	IN(123,355,2,4,6,90,35,	…	)
5.	Главное	зло	в	PostgreSQL	- autovacuum
• Он	постоянно	работает	и	всему	мешает
• А	давайте	его	выключим?
• Фрагментированная	таблица	на	100К	строк	занимает	100Gb		или	
даже	больше
• Big	Data	– есть	о	чем	рассказать!
• Подробности:	http://www.slideshare.net/PostgreSQL-
Consulting/autovacuum-explained-for-engineers-new-improved-
version-pgconfeu-2015-vienna
6.	JOIN	это	зло	– они	медленные
• Вытягиваем	в	контроллер	две	таблицы	из	базы
• Джойним их	средствами	нашего	любимого	языка	
программирования
• Добавляем	выбор	алгоритма	– nested	loop,	hash,	merge	и	
получаем	самодельную	базы	данных,	только	плохую
7. Давайте	изобретем	Slony
• Существующих	методов	репликации	баз	данных	явно	
недостаточно
• Давайте	изобретем	что-нибудь	новое
8.	У	меня	в	тесте	все	работает
• Хороший	разработчик	знает	что	нужно	использовать	EXPLAIN
• Он	его	и	использует	– у	себя	на	dev-машине
• А	на	продакшне внезапно	данных	в	1000	раз	больше!
• А	еще	бывают	админы,	которые	стараются	на	пушечный	выстрел	
не	подпустить	разработку	к	продакшну
9.	Be	smart,	as	a	java-developer!
• Параллелизм	это	быстро.	Нужно	сделать	много	апдейтов в	базе	–
давайте	делать	это	в	500	трэдов
• SQL-запрос	через	ко-рутины	python	может	быть	в	10	раз	
медленней	чем	без	них
10. Приятные	мелочи
• Если	запрос	возвращает	1M	строк,	то:
• Он	никогда	не	будет	работать	достаточно	быстро	для	веба
• А	зачем	для	веба	такой	запрос?
• 20	счетчиков	с	count(*)	на	главной	странице	сайта
• Не	нужны
• Никогда	не	будут	работать	быстро
• Know	your	data!
Вопросы?
ik@postgresql-consulting.com

More Related Content

What's hot (20)

PDF
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Ontico
 
PDF
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Ontico
 
PDF
Ровная балансировка нагрузки на фронтенд-кластере
Badoo Development
 
PDF
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Ontico
 
PPTX
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Ontico
 
PDF
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Ontico
 
PDF
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Ontico
 
PPTX
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Ontico
 
PDF
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
Ontico
 
PPTX
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Ontico
 
PDF
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Ontico
 
PDF
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Sveta Smirnova
 
PDF
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Ontico
 
PDF
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
Ontico
 
PDF
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Ontico
 
PPTX
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
Ontico
 
PDF
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
Ontico
 
PDF
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ontico
 
PDF
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Ontico
 
PPTX
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Ontico
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Ontico
 
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Ontico
 
Ровная балансировка нагрузки на фронтенд-кластере
Badoo Development
 
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Ontico
 
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Ontico
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Ontico
 
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Ontico
 
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Ontico
 
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
Ontico
 
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Ontico
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Ontico
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Sveta Smirnova
 
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Ontico
 
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
Ontico
 
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Ontico
 
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
Ontico
 
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
Ontico
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ontico
 
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Ontico
 
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Ontico
 

Viewers also liked (20)

PDF
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
Ontico
 
PDF
Всему своё время / Роман Ивлиев (Банки.ру)
Ontico
 
PPTX
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Ontico
 
PDF
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Ontico
 
PPTX
Оптимизация сайта. Диагнозы и курсы лечения / Иван Михеев (AGIMA)
Ontico
 
PDF
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Ontico
 
PDF
Принципы автоматического масштабирования приложения в AWS / Антон Регеда (Juno)
Ontico
 
PDF
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
Ontico
 
PDF
Ангелы и демоны многопоточного программирования / Алексей Федоров (Одноклассн...
Ontico
 
PPTX
Организация надежного резервного копирования веб-проекта. Практика и подводны...
Ontico
 
PPTX
Как отвечать за продакшн / Андрей Сумин (Mail.ru)
Ontico
 
PPTX
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Ontico
 
PDF
Как 100 000 раз в секунду выбирать правильный рекламный материал? Programmati...
Ontico
 
PPTX
RTB в телевизоре и на улицах / Михаил Мельников (IPONWEB)
Ontico
 
PPT
Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженно...
Ontico
 
PPT
Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)
Ontico
 
PPTX
Секретные техники продаж корпоративным клиентам / Александр Зиза (Алетейя Биз...
Ontico
 
ODP
Scaling PostgreSQL With GridSQL
Jim Mlodgenski
 
ODP
Multi-Master Replication with Slony
Jim Mlodgenski
 
PDF
Выход на новые рынки, так ли это сложно организовать / Павел Шинкаренко (Sola...
Ontico
 
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
Ontico
 
Всему своё время / Роман Ивлиев (Банки.ру)
Ontico
 
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Ontico
 
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Ontico
 
Оптимизация сайта. Диагнозы и курсы лечения / Иван Михеев (AGIMA)
Ontico
 
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Ontico
 
Принципы автоматического масштабирования приложения в AWS / Антон Регеда (Juno)
Ontico
 
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
Ontico
 
Ангелы и демоны многопоточного программирования / Алексей Федоров (Одноклассн...
Ontico
 
Организация надежного резервного копирования веб-проекта. Практика и подводны...
Ontico
 
Как отвечать за продакшн / Андрей Сумин (Mail.ru)
Ontico
 
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Ontico
 
Как 100 000 раз в секунду выбирать правильный рекламный материал? Programmati...
Ontico
 
RTB в телевизоре и на улицах / Михаил Мельников (IPONWEB)
Ontico
 
Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженно...
Ontico
 
Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)
Ontico
 
Секретные техники продаж корпоративным клиентам / Александр Зиза (Алетейя Биз...
Ontico
 
Scaling PostgreSQL With GridSQL
Jim Mlodgenski
 
Multi-Master Replication with Slony
Jim Mlodgenski
 
Выход на новые рынки, так ли это сложно организовать / Павел Шинкаренко (Sola...
Ontico
 
Ad

Similar to 10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемьянский (PostgreSQL-Consulting LLC) (20)

PPTX
Логическая витрина для доступа к большим данным
Sergey Gorshkov
 
PDF
WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и...
GeeksLab Odessa
 
PDF
История небольшого успеха с PostgreSQL – Владимир Бородин
Yandex
 
PDF
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
Nikolay Samokhvalov
 
PDF
PostgreSQL worst practices / Илья Космодемьянский (Data Egret)
Ontico
 
PDF
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
Alex Chistyakov
 
PDF
Fors и big data appliance
CleverDATA
 
ODP
МойСклад, облачный сервис ERP
Oleg Alexeev
 
PDF
Top-10 популярных вопросов администраторам баз данных или почему я против св...
Ilya Kosmodemiansky
 
PDF
HighLoad systems: tips & tricks
Sveta Bozhko
 
PDF
High Load 2009 Imdg Presentation
HighLoad2009
 
PDF
Распространенные ошибки применения баз данных (Сергей Аверин)
Ontico
 
PDF
Распространенные ошибки применения баз данных
Sergey Xek
 
PDF
HappyDev'15 Keynote: Когда все данные станут большими...
Alexey Zinoviev
 
PPTX
2015-12-05 Алексей Зиновьев - Когда все данные станут большими...
HappyDev
 
PDF
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Ontico
 
PDF
История небольшого успеха с PostgreSQL
dev1ant
 
PPT
Rybak Big Projects New
Ontico
 
PPTX
UFADevCom'13#1 Шерыхалин Олег
UFADevCom
 
PDF
Распространенные ошибки применения баз данных
Sergey Xek
 
Логическая витрина для доступа к большим данным
Sergey Gorshkov
 
WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и...
GeeksLab Odessa
 
История небольшого успеха с PostgreSQL – Владимир Бородин
Yandex
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
Nikolay Samokhvalov
 
PostgreSQL worst practices / Илья Космодемьянский (Data Egret)
Ontico
 
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
Alex Chistyakov
 
Fors и big data appliance
CleverDATA
 
МойСклад, облачный сервис ERP
Oleg Alexeev
 
Top-10 популярных вопросов администраторам баз данных или почему я против св...
Ilya Kosmodemiansky
 
HighLoad systems: tips & tricks
Sveta Bozhko
 
High Load 2009 Imdg Presentation
HighLoad2009
 
Распространенные ошибки применения баз данных (Сергей Аверин)
Ontico
 
Распространенные ошибки применения баз данных
Sergey Xek
 
HappyDev'15 Keynote: Когда все данные станут большими...
Alexey Zinoviev
 
2015-12-05 Алексей Зиновьев - Когда все данные станут большими...
HappyDev
 
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Ontico
 
История небольшого успеха с PostgreSQL
dev1ant
 
Rybak Big Projects New
Ontico
 
UFADevCom'13#1 Шерыхалин Олег
UFADevCom
 
Распространенные ошибки применения баз данных
Sergey Xek
 
Ad

More from Ontico (20)

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

10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемьянский (PostgreSQL-Consulting LLC)