SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Downloaden Sie, um offline zu lesen
История успеха Яндекс.Почты
с PostgreSQL
Владимир Бородин
О Яндекс.Почте
Запущена в 2000
10+ миллионов пользователей в сутки
200.000 RPS в бэкенды web/mobile/imap
150+ миллионов писем покладки в сутки
20+ ПБ данных
3
Об этом рассказе
Миграция из Oracle в PostgreSQL
300+ ТБ метаданных без избыточности
250k запросов в секунду
OLTP: 80% чтений, 20% записи
Предыдущие попытки
MySQL
Самописное решение
4
Назад в 2012
Метаданные Яндекс.Почты
Всё хранилось в Oracle
Очень много PL/SQL-логики
Эффективная утилизация аппаратного обеспечения
10+ ТБ данных на шард
Рабочий LA 100
Много ручных операций
Тёплые (SSD) и холодные (SATA) базы для разных пользователей
75% SSD, 25% SATA
8
Шардирование и отказоустойчивость
9
Внутри приложения
10
Реальность
11
Наиболее популярные проблемы
PL/SQL deploy
Library cache
Множество ручных операций
Переключение мастера, наливка новой базы, переносы данных
Только синхронный интерфейс в OCCI
Проблемы с разработческими окружениями
Не очень отзывчивая поддержка
12
Главная причина
shop.oracle.com
Хронология
Эксперименты
Октябрь 2012 — политическое решение
Избавиться от Oracle за 3 года
Апрель 2013 — первые эксперименты с разными СУБД
PostgreSQL
Множество NoSQL-решений
Самописное решение на основе поискового бэкенда
Июль 2013 - июнь 2014 — эксперимент со сборщиками
https://simply.name/ru/video-pg-meetup-yandex.html
15
Прототип всей почты
Август 2014 - декабрь 2014
Асинхронная покладка всего потока писем в PostgreSQL
Первоначальные решения со схемой данных
Важно для слоя абстракции
Нагрузочное тестирование под живой нагрузкой
Выбор аппаратного обеспечения
Множество другого опыта работы с PostgreSQL
https://simply.name/ru/postgresql-and-systemtap.html
16
Основная работа
Январь 2015 - январь 2016 — разработка
Июнь 2015 — dog fooding
Ускорение разработки
Сентябрь 2015 — начало миграции неактивных пользователей
Исправление ошибок в коде переноса
Обратный перенос (план Б)
Январь 2016 - апрель 2016 — миграция
17
Переписывание всего кода для работы с Oracle и PostgreSQL
10 человеко-лет
Завершение
20
Основные изменения
macs
22
Шардирование и отказоустойчивость
23
Аппаратное обеспечение
24
Аппаратное обеспечение
Тёплые базы (SSD) для большинства активных пользователей
Холодные базы (SATA) для всех неактивных пользователей
Горячие базы для очень активных пользователей
2% пользователей создают 50% нагрузки
Автоматизация переноса пользователей между типами шардов
TBD: перемещение старых писем активных пользователей с SSD на SATA
25
Идентификаторы
В Oracle все идентификаторы (mid, fid, lid, tid) глобально
уникальны
Диапазоны для sequence’ов каждого шарда в отдельной БД
NUMBER(20, 0) — 20 байт
В PostgreSQL идентификаторы уникальны в пределах одного
логина
Вместо уникального mid уникальная пара (uid, mid)
Bigint + bigint — 16 байт
26
Изменения схемы
Меньше конкуренция за одну страницу индекса
Обычный B-Tree вместо реверсивных индексов
Ревизии для всех объектов
Возможность читать с реплик только актуальные данные
Инкрементальные обновления для IMAP и мобильных
Денормализация части данных
Массивы и GIN
Композитные типы
27
Пример
xdb01g/maildb M # dS mail.box
Table "mail.box"
Column | Type | Modifiers
---------------+--------------------------+------------------------
uid | bigint | not null
mid | bigint | not null
lids | integer[] | not null
<...>
Indexes:
"pk_box" PRIMARY KEY, btree (uid, mid)
"i_box_uid_lids" gin (mail.ulids(uid, lids)) WITH (fastupdate=off)
28
Хранимая логика
PL/pgSQL прекрасен
Сильно сократили количество логики
Только для гарантии логической целостности данных
Сильно увеличили покрытие тестами
Цена ошибки очень высока
https://events.yandex.ru/lib/talks/4057
Простой deploy
29
Подход к обслуживанию
SaltStack
Детальный diff между текущим и ожидаемым состоянием
Все изменения схемы и кода через миграции
https://events.yandex.ru/lib/talks/4055
Все частые операции автоматизированы
Репрезентативные тестовые окружения
30
Проблемы
До начала основного переноса
Problem with ExclusiveLock on inserts
Checkpoint distribution
ExclusiveLock on extension of relation with huge shared_buffers
Hanging startup process on the replica after vacuuming on master
Replication slots and isolation levels
Segfault in BackendIdGetTransactionIds
Значительно больше решено без помощи сообщества
32
Oracle DBA
В любой непонятной
ситуации виноват
autovacuum
Диагностика
https://simply.name/ru/pg-stat-wait.html
Wait_event in pg_stat_activity (9.6)
https://simply.name/ru/slides-pgday2015.html
34
Резервные копии
В Oracle бэкапы (inc0 + 6 * inc1) и archive логи ≈ размер БД
В PostgreSQL с barman’ом ≈ N * размер БД, где N > 5
WAL’ы сжимаются, а бэкапы нет
File-level increment’ы толком не работают
Все операции однопоточные и очень медленные
Для 300 ТБ данных понадобилось бы ≈ 2 ПБ под бэкапы
https://github.com/2ndquadrant-it/barman/issues/21
http://pgday.ru/ru/2016/papers/80
35
Во время основного переноса
Проблемы не с PostgreSQL
Проблемы с данными
Очень много legacy за 10+ лет
Ошибки в коде переноса
36
Завершение
Нам не хватает в PostgreSQL
Declarative partitioning
Хороший recovery manager
Параллелизм/сжатие/page-level increment’ы
Частичное восстановление (например, одной таблицы) в online
Дальнейшее развитие интерфейса ожиданий
Большой разделяемый кэш, O_DIRECT и асинхронное I/O
Quorum commit
38
Итоги
1 PB с отказоустойчивостью (100+ миллиардов строк)
250k TPS
Три календарных года / 10+ человеко-лет
Быстрее deploy / эффективнее использование времени DBA
Рефакторинг кода всего бэкенда
В 3 раза больше аппаратного обеспечения
Ни одной крупной аварии пока :)
Linux, nginx, postfix, PostgreSQL
39
40
Владимир Бородин
Системный администратор
Вопросы?
@man_brain
http://simply.name
+7 (495) 739 70 00, доб. 7255
d0uble@yandex-team.ru

Weitere ähnliche Inhalte

Was ist angesagt?

Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Ontico
 
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)Ontico
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)Nikolay Samokhvalov
 
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...Ontico
 
Тестируем производительность распределённых систем, Александр Киров (Parallels)
Тестируем производительность распределённых систем, Александр Киров (Parallels)Тестируем производительность распределённых систем, Александр Киров (Parallels)
Тестируем производительность распределённых систем, Александр Киров (Parallels)Ontico
 
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)Ontico
 
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Ontico
 
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...Ontico
 
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Ontico
 
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)Ontico
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераСпасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераDaniel Podolsky
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)Ontico
 
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...Ontico
 
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Ontico
 
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)Ontico
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхSveta Smirnova
 
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)Ontico
 
Как мы готовим MySQL / Николай Королёв (Badoo)
Как мы готовим MySQL / Николай Королёв (Badoo)Как мы готовим MySQL / Николай Королёв (Badoo)
Как мы готовим MySQL / Николай Королёв (Badoo)Ontico
 

Was ist angesagt? (20)

Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
 
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
 
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
 
Тестируем производительность распределённых систем, Александр Киров (Parallels)
Тестируем производительность распределённых систем, Александр Киров (Parallels)Тестируем производительность распределённых систем, Александр Киров (Parallels)
Тестируем производительность распределённых систем, Александр Киров (Parallels)
 
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
 
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
 
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
 
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
 
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераСпасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного Хецнера
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
 
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
 
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
 
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
 
Mysql vs postgresql
Mysql vs postgresqlMysql vs postgresql
Mysql vs postgresql
 
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
 
Как мы готовим MySQL / Николай Королёв (Badoo)
Как мы готовим MySQL / Николай Королёв (Badoo)Как мы готовим MySQL / Николай Королёв (Badoo)
Как мы готовим MySQL / Николай Королёв (Badoo)
 

Andere mochten auch

Долгожданный релиз pg_pathman 1.0 / Александр Коротков, Дмитрий Иванов (Post...
Долгожданный релиз pg_pathman 1.0 / Александр Коротков,  Дмитрий Иванов (Post...Долгожданный релиз pg_pathman 1.0 / Александр Коротков,  Дмитрий Иванов (Post...
Долгожданный релиз pg_pathman 1.0 / Александр Коротков, Дмитрий Иванов (Post...Ontico
 
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...Ontico
 
Новые возможности полнотекстового поиска в PostgreSQL / Олег Бартунов (Postgr...
Новые возможности полнотекстового поиска в PostgreSQL / Олег Бартунов (Postgr...Новые возможности полнотекстового поиска в PostgreSQL / Олег Бартунов (Postgr...
Новые возможности полнотекстового поиска в PostgreSQL / Олег Бартунов (Postgr...Ontico
 
PostgreSQL @Alibaba Cloud / Xianming Dou (Alibaba Cloud)
PostgreSQL @Alibaba Cloud / Xianming Dou (Alibaba Cloud)PostgreSQL @Alibaba Cloud / Xianming Dou (Alibaba Cloud)
PostgreSQL @Alibaba Cloud / Xianming Dou (Alibaba Cloud)Ontico
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...Ontico
 
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Ontico
 
Yandex.Mail success story
Yandex.Mail success storyYandex.Mail success story
Yandex.Mail success storydev1ant
 
2015.10.14 Как спать спокойно
2015.10.14 Как спать спокойно2015.10.14 Как спать спокойно
2015.10.14 Как спать спокойноdev1ant
 
2015.07.16 Способы диагностики PostgreSQL
2015.07.16 Способы диагностики PostgreSQL2015.07.16 Способы диагностики PostgreSQL
2015.07.16 Способы диагностики PostgreSQLdev1ant
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Ontico
 
Non-Relational Postgres / Bruce Momjian (EnterpriseDB)
Non-Relational Postgres / Bruce Momjian (EnterpriseDB)Non-Relational Postgres / Bruce Momjian (EnterpriseDB)
Non-Relational Postgres / Bruce Momjian (EnterpriseDB)Ontico
 
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6Nikolay Samokhvalov
 
Владимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLВладимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLYandex
 
Vulnerability intelligence with vulners.com / Кирилл Ермаков, Игорь Булатенко...
Vulnerability intelligence with vulners.com / Кирилл Ермаков, Игорь Булатенко...Vulnerability intelligence with vulners.com / Кирилл Ермаков, Игорь Булатенко...
Vulnerability intelligence with vulners.com / Кирилл Ермаков, Игорь Булатенко...Ontico
 
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)Ontico
 
Измеряем энергопотребление с помощью Arduino / Алексей Лавренюк (Яндекс)
Измеряем энергопотребление с помощью Arduino / Алексей Лавренюк (Яндекс)Измеряем энергопотребление с помощью Arduino / Алексей Лавренюк (Яндекс)
Измеряем энергопотребление с помощью Arduino / Алексей Лавренюк (Яндекс)Ontico
 
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...Ontico
 
Evaluation of High Availability Performance of Kubernetes and Docker Swarm on...
Evaluation of High Availability Performance of Kubernetes and Docker Swarm on...Evaluation of High Availability Performance of Kubernetes and Docker Swarm on...
Evaluation of High Availability Performance of Kubernetes and Docker Swarm on...Ontico
 
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...Ontico
 
История небольшого успеха с PostgreSQL
История небольшого успеха с PostgreSQLИстория небольшого успеха с PostgreSQL
История небольшого успеха с PostgreSQLdev1ant
 

Andere mochten auch (20)

Долгожданный релиз pg_pathman 1.0 / Александр Коротков, Дмитрий Иванов (Post...
Долгожданный релиз pg_pathman 1.0 / Александр Коротков,  Дмитрий Иванов (Post...Долгожданный релиз pg_pathman 1.0 / Александр Коротков,  Дмитрий Иванов (Post...
Долгожданный релиз pg_pathman 1.0 / Александр Коротков, Дмитрий Иванов (Post...
 
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
 
Новые возможности полнотекстового поиска в PostgreSQL / Олег Бартунов (Postgr...
Новые возможности полнотекстового поиска в PostgreSQL / Олег Бартунов (Postgr...Новые возможности полнотекстового поиска в PostgreSQL / Олег Бартунов (Postgr...
Новые возможности полнотекстового поиска в PostgreSQL / Олег Бартунов (Postgr...
 
PostgreSQL @Alibaba Cloud / Xianming Dou (Alibaba Cloud)
PostgreSQL @Alibaba Cloud / Xianming Dou (Alibaba Cloud)PostgreSQL @Alibaba Cloud / Xianming Dou (Alibaba Cloud)
PostgreSQL @Alibaba Cloud / Xianming Dou (Alibaba Cloud)
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
 
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
 
Yandex.Mail success story
Yandex.Mail success storyYandex.Mail success story
Yandex.Mail success story
 
2015.10.14 Как спать спокойно
2015.10.14 Как спать спокойно2015.10.14 Как спать спокойно
2015.10.14 Как спать спокойно
 
2015.07.16 Способы диагностики PostgreSQL
2015.07.16 Способы диагностики PostgreSQL2015.07.16 Способы диагностики PostgreSQL
2015.07.16 Способы диагностики PostgreSQL
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
 
Non-Relational Postgres / Bruce Momjian (EnterpriseDB)
Non-Relational Postgres / Bruce Momjian (EnterpriseDB)Non-Relational Postgres / Bruce Momjian (EnterpriseDB)
Non-Relational Postgres / Bruce Momjian (EnterpriseDB)
 
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
 
Владимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLВладимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQL
 
Vulnerability intelligence with vulners.com / Кирилл Ермаков, Игорь Булатенко...
Vulnerability intelligence with vulners.com / Кирилл Ермаков, Игорь Булатенко...Vulnerability intelligence with vulners.com / Кирилл Ермаков, Игорь Булатенко...
Vulnerability intelligence with vulners.com / Кирилл Ермаков, Игорь Булатенко...
 
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
 
Измеряем энергопотребление с помощью Arduino / Алексей Лавренюк (Яндекс)
Измеряем энергопотребление с помощью Arduino / Алексей Лавренюк (Яндекс)Измеряем энергопотребление с помощью Arduino / Алексей Лавренюк (Яндекс)
Измеряем энергопотребление с помощью Arduino / Алексей Лавренюк (Яндекс)
 
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
 
Evaluation of High Availability Performance of Kubernetes and Docker Swarm on...
Evaluation of High Availability Performance of Kubernetes and Docker Swarm on...Evaluation of High Availability Performance of Kubernetes and Docker Swarm on...
Evaluation of High Availability Performance of Kubernetes and Docker Swarm on...
 
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
 
История небольшого успеха с PostgreSQL
История небольшого успеха с PostgreSQLИстория небольшого успеха с PostgreSQL
История небольшого успеха с PostgreSQL
 

Ähnlich wie История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)

Scaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 RusScaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 RusOntico
 
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва... Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...Nikolay Samokhvalov
 
Innodb Scalability And New Features Hl2008 Rus
Innodb Scalability And New Features Hl2008 RusInnodb Scalability And New Features Hl2008 Rus
Innodb Scalability And New Features Hl2008 RusOntico
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, ParallelsNikolay Samokhvalov
 
Lobanov_Cloud-Comput..
Lobanov_Cloud-Comput..Lobanov_Cloud-Comput..
Lobanov_Cloud-Comput..webhostingguy
 
DB-Technologies-2017 Keynote (Strategy and tactics for db evaluation)
DB-Technologies-2017 Keynote (Strategy and tactics for db evaluation)DB-Technologies-2017 Keynote (Strategy and tactics for db evaluation)
DB-Technologies-2017 Keynote (Strategy and tactics for db evaluation)Andrei Nikolaenko
 
КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов
КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей ФроловКРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов
КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей ФроловАндрей Фролов
 
Oracle Timesten
Oracle TimestenOracle Timesten
Oracle TimestenOntico
 
hl++ Rubtsov
hl++ Rubtsovhl++ Rubtsov
hl++ RubtsovOntico
 
как из трех стоек сделать две.
как из трех стоек сделать две.как из трех стоек сделать две.
как из трех стоек сделать две.Serguei Gitinsky
 
СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)
СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)
СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)Alexey Kovyazin
 
Дмитрий Еманов — Под капотом серверного ПО
Дмитрий Еманов — Под капотом серверного ПОДмитрий Еманов — Под капотом серверного ПО
Дмитрий Еманов — Под капотом серверного ПОDaria Oreshkina
 
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...Tanya Denisyuk
 
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...Ontico
 
Open source субд глазами обычного программиста
Open source субд глазами обычного программистаOpen source субд глазами обычного программиста
Open source субд глазами обычного программистаSlach
 
Aлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreetAлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreetOntico
 
Android Telegram S Optimizations
Android Telegram S OptimizationsAndroid Telegram S Optimizations
Android Telegram S OptimizationsStepan Korshakov
 
MongoDB basics in Russian
MongoDB basics in RussianMongoDB basics in Russian
MongoDB basics in RussianOleg Kachan
 

Ähnlich wie История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс) (20)

Scaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 RusScaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 Rus
 
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва... Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 
Innodb Scalability And New Features Hl2008 Rus
Innodb Scalability And New Features Hl2008 RusInnodb Scalability And New Features Hl2008 Rus
Innodb Scalability And New Features Hl2008 Rus
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 
Lobanov_Cloud-Comput..
Lobanov_Cloud-Comput..Lobanov_Cloud-Comput..
Lobanov_Cloud-Comput..
 
DB-Technologies-2017 Keynote (Strategy and tactics for db evaluation)
DB-Technologies-2017 Keynote (Strategy and tactics for db evaluation)DB-Technologies-2017 Keynote (Strategy and tactics for db evaluation)
DB-Technologies-2017 Keynote (Strategy and tactics for db evaluation)
 
КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов
КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей ФроловКРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов
КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов
 
2056
20562056
2056
 
Oracle Timesten
Oracle TimestenOracle Timesten
Oracle Timesten
 
hl++ Rubtsov
hl++ Rubtsovhl++ Rubtsov
hl++ Rubtsov
 
как из трех стоек сделать две.
как из трех стоек сделать две.как из трех стоек сделать две.
как из трех стоек сделать две.
 
СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)
СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)
СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)
 
Дмитрий Еманов — Под капотом серверного ПО
Дмитрий Еманов — Под капотом серверного ПОДмитрий Еманов — Под капотом серверного ПО
Дмитрий Еманов — Под капотом серверного ПО
 
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
 
Cassandra db
Cassandra dbCassandra db
Cassandra db
 
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
 
Open source субд глазами обычного программиста
Open source субд глазами обычного программистаOpen source субд глазами обычного программиста
Open source субд глазами обычного программиста
 
Aлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreetAлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreet
 
Android Telegram S Optimizations
Android Telegram S OptimizationsAndroid Telegram S Optimizations
Android Telegram S Optimizations
 
MongoDB basics in Russian
MongoDB basics in RussianMongoDB basics in Russian
MongoDB basics in Russian
 

Mehr von Ontico

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

Mehr von Ontico (20)

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

История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)

  • 1.
  • 2. История успеха Яндекс.Почты с PostgreSQL Владимир Бородин
  • 3. О Яндекс.Почте Запущена в 2000 10+ миллионов пользователей в сутки 200.000 RPS в бэкенды web/mobile/imap 150+ миллионов писем покладки в сутки 20+ ПБ данных 3
  • 4. Об этом рассказе Миграция из Oracle в PostgreSQL 300+ ТБ метаданных без избыточности 250k запросов в секунду OLTP: 80% чтений, 20% записи Предыдущие попытки MySQL Самописное решение 4
  • 5.
  • 6.
  • 8. Метаданные Яндекс.Почты Всё хранилось в Oracle Очень много PL/SQL-логики Эффективная утилизация аппаратного обеспечения 10+ ТБ данных на шард Рабочий LA 100 Много ручных операций Тёплые (SSD) и холодные (SATA) базы для разных пользователей 75% SSD, 25% SATA 8
  • 12. Наиболее популярные проблемы PL/SQL deploy Library cache Множество ручных операций Переключение мастера, наливка новой базы, переносы данных Только синхронный интерфейс в OCCI Проблемы с разработческими окружениями Не очень отзывчивая поддержка 12
  • 15. Эксперименты Октябрь 2012 — политическое решение Избавиться от Oracle за 3 года Апрель 2013 — первые эксперименты с разными СУБД PostgreSQL Множество NoSQL-решений Самописное решение на основе поискового бэкенда Июль 2013 - июнь 2014 — эксперимент со сборщиками https://simply.name/ru/video-pg-meetup-yandex.html 15
  • 16. Прототип всей почты Август 2014 - декабрь 2014 Асинхронная покладка всего потока писем в PostgreSQL Первоначальные решения со схемой данных Важно для слоя абстракции Нагрузочное тестирование под живой нагрузкой Выбор аппаратного обеспечения Множество другого опыта работы с PostgreSQL https://simply.name/ru/postgresql-and-systemtap.html 16
  • 17. Основная работа Январь 2015 - январь 2016 — разработка Июнь 2015 — dog fooding Ускорение разработки Сентябрь 2015 — начало миграции неактивных пользователей Исправление ошибок в коде переноса Обратный перенос (план Б) Январь 2016 - апрель 2016 — миграция 17
  • 18. Переписывание всего кода для работы с Oracle и PostgreSQL 10 человеко-лет
  • 19.
  • 25. Аппаратное обеспечение Тёплые базы (SSD) для большинства активных пользователей Холодные базы (SATA) для всех неактивных пользователей Горячие базы для очень активных пользователей 2% пользователей создают 50% нагрузки Автоматизация переноса пользователей между типами шардов TBD: перемещение старых писем активных пользователей с SSD на SATA 25
  • 26. Идентификаторы В Oracle все идентификаторы (mid, fid, lid, tid) глобально уникальны Диапазоны для sequence’ов каждого шарда в отдельной БД NUMBER(20, 0) — 20 байт В PostgreSQL идентификаторы уникальны в пределах одного логина Вместо уникального mid уникальная пара (uid, mid) Bigint + bigint — 16 байт 26
  • 27. Изменения схемы Меньше конкуренция за одну страницу индекса Обычный B-Tree вместо реверсивных индексов Ревизии для всех объектов Возможность читать с реплик только актуальные данные Инкрементальные обновления для IMAP и мобильных Денормализация части данных Массивы и GIN Композитные типы 27
  • 28. Пример xdb01g/maildb M # dS mail.box Table "mail.box" Column | Type | Modifiers ---------------+--------------------------+------------------------ uid | bigint | not null mid | bigint | not null lids | integer[] | not null <...> Indexes: "pk_box" PRIMARY KEY, btree (uid, mid) "i_box_uid_lids" gin (mail.ulids(uid, lids)) WITH (fastupdate=off) 28
  • 29. Хранимая логика PL/pgSQL прекрасен Сильно сократили количество логики Только для гарантии логической целостности данных Сильно увеличили покрытие тестами Цена ошибки очень высока https://events.yandex.ru/lib/talks/4057 Простой deploy 29
  • 30. Подход к обслуживанию SaltStack Детальный diff между текущим и ожидаемым состоянием Все изменения схемы и кода через миграции https://events.yandex.ru/lib/talks/4055 Все частые операции автоматизированы Репрезентативные тестовые окружения 30
  • 32. До начала основного переноса Problem with ExclusiveLock on inserts Checkpoint distribution ExclusiveLock on extension of relation with huge shared_buffers Hanging startup process on the replica after vacuuming on master Replication slots and isolation levels Segfault in BackendIdGetTransactionIds Значительно больше решено без помощи сообщества 32
  • 33. Oracle DBA В любой непонятной ситуации виноват autovacuum
  • 35. Резервные копии В Oracle бэкапы (inc0 + 6 * inc1) и archive логи ≈ размер БД В PostgreSQL с barman’ом ≈ N * размер БД, где N > 5 WAL’ы сжимаются, а бэкапы нет File-level increment’ы толком не работают Все операции однопоточные и очень медленные Для 300 ТБ данных понадобилось бы ≈ 2 ПБ под бэкапы https://github.com/2ndquadrant-it/barman/issues/21 http://pgday.ru/ru/2016/papers/80 35
  • 36. Во время основного переноса Проблемы не с PostgreSQL Проблемы с данными Очень много legacy за 10+ лет Ошибки в коде переноса 36
  • 38. Нам не хватает в PostgreSQL Declarative partitioning Хороший recovery manager Параллелизм/сжатие/page-level increment’ы Частичное восстановление (например, одной таблицы) в online Дальнейшее развитие интерфейса ожиданий Большой разделяемый кэш, O_DIRECT и асинхронное I/O Quorum commit 38
  • 39. Итоги 1 PB с отказоустойчивостью (100+ миллиардов строк) 250k TPS Три календарных года / 10+ человеко-лет Быстрее deploy / эффективнее использование времени DBA Рефакторинг кода всего бэкенда В 3 раза больше аппаратного обеспечения Ни одной крупной аварии пока :) Linux, nginx, postfix, PostgreSQL 39