SlideShare a Scribd company logo
Партицирование и 
миграции данных в 
PostgreSQL 
Иванов Денис
Ведущий разработчик в 2ГИС
Крайний за высокие нагрузки 
сервиса «Фото»
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
8 стран 2 млн 
фирм 
250 
городов
50 млн
20 млн 2000 RPS
1. ПАРТИЦИРОВАНИЕ
Окружение машины, на которой проводился бенчмарк: 8 CPU, 8GB RAM.
Мы не вывозим
Что делать?
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
photo 
photo_1 
photo_2 
photo_N
Ok, Google, 
«PostgreSQL-партицирование»
Концепт 
https://wiki.postgresql.org/wiki/Table_partitioning
Status Quo 
Currently we allow the user to (manually) create arbitrary nested tables with arbitrary constraints and then the planner tries to detect at 
run-time which child tables are candidates for the query. See PostgreSQL Partitioning for details. There are some 3rd party plugins that simplify 
the (manual) task/triggers, etc. see bottom of this page. 
Today, at create time you create a master table, children that inherit from it (and how they are partitioned), separate indices for each child table, 
and create an insert trigger so that new rows are inserted to the appropriate (child) table (and/or more aggressive measures, such as allowing 
updates to the partitioned key [by default, updates to rows' partitioned key leave them in the same partition, possibly in error], dynamically 
allocating new child tables [be careful with race conditions], etc. see the various blogs out there).
Из коробки 
http://www.postgresql.org/docs/9.3/static/ddl-partitioning.html
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
«PARTITION MAGIC»
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Ускоряемся
WHERE category_id = N
FROM news_1
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Ускорили в 3 раза
Профит
Профит 
● Системные таблицы (pg_indexes…).
Профит 
● Системные таблицы (pg_indexes…). 
● Автоматические партиции.
Профит 
● Системные таблицы (pg_indexes…). 
● Автоматические партиции. 
● Без единой правки кода приложения.
Профит 
● Системные таблицы (pg_indexes…). 
● Автоматические партиции. 
● Без единой правки кода приложения. 
● Ускорение в 3 раза.
Раздача слонов — 
https://github.com/2gis/partition_magic
2. МИГРАЦИИ
Yiic Migrate 
+ 
Phing
Мы теряем изменения в коде 
хранимых процедур
«MIGRAPTOR»
Поддерживает 
● Yii CDbConnection. 
● Нативные Yii миграции. 
● Схемы. 
● Хранимые процедуры. 
● Представления (view). 
● DDL. 
● DML. 
● Скрипты. 
● И другое.
Профит
Профит 
● Обёртка над Yiic Migrate (Yii 1).
Профит 
● Обёртка над Yiic Migrate (Yii 1). 
● Дельты и миграции — код.
Профит 
● Обёртка над Yiic Migrate (Yii 1). 
● Дельты и миграции — код. 
● VCS (Git), версии.
Профит 
● Обёртка над Yiic Migrate (Yii 1). 
● Дельты и миграции — код. 
● VCS (Git), версии. 
● Обновление при деплое.
Раздача слонов — 
https://github.com/2gis/migraptor
Иванов Денис 
dv.ivanov@2gis.ru

More Related Content

PDF
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Mail.ru Group
 
PDF
Борис Верюгин, Диасофт Платформа. «Автоматизированные механизмы миграции прил...
Mail.ru Group
 
PDF
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...
Mail.ru Group
 
PDF
Перевод новостного приложения на БД PostgreSQL
Dmitry Kremer
 
PDF
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Mail.ru Group
 
PDF
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
Ontico
 
PDF
Hadoop -> Cascading -> Cascalog
Andrew Panfilov
 
PDF
Архитектура Яндекс.Маркета вчера и сегодня — Юрий Манушкин, Роман Гершкович
Yandex
 
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Mail.ru Group
 
Борис Верюгин, Диасофт Платформа. «Автоматизированные механизмы миграции прил...
Mail.ru Group
 
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...
Mail.ru Group
 
Перевод новостного приложения на БД PostgreSQL
Dmitry Kremer
 
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Mail.ru Group
 
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
Ontico
 
Hadoop -> Cascading -> Cascalog
Andrew Panfilov
 
Архитектура Яндекс.Маркета вчера и сегодня — Юрий Манушкин, Роман Гершкович
Yandex
 

Similar to Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС) (10)

PDF
Партицирование и миграции данных на примере PostgreSQL — Денис Иванов, 2ГИС
2ГИС Технологии
 
PDF
MySQL: Есть ли жизнь после 1 млрд. записей.
MageCloud
 
PDF
Долгожданный релиз pg_pathman 1.0 / Александр Коротков, Дмитрий Иванов (Post...
Ontico
 
PDF
Optimization of a big PostgreSQL database
Alex Chistyakov
 
ODP
МойСклад, облачный сервис ERP
Oleg Alexeev
 
PDF
Where is the space, Postgres?
Alexey Ermakov
 
PDF
Расширяемость PostgreSQL для хакеров и архитекторов / Олег Бартунов, Александ...
Ontico
 
ODP
Scaling Web Sites By Sharding And Replication Hl2008 Rus
Ontico
 
PPTX
Cassandra design patterns
Denis Gabaydulin
 
PDF
Масштабирование базы данных через шардирование и партиционирование — Денис Ив...
2ГИС Технологии
 
Партицирование и миграции данных на примере PostgreSQL — Денис Иванов, 2ГИС
2ГИС Технологии
 
MySQL: Есть ли жизнь после 1 млрд. записей.
MageCloud
 
Долгожданный релиз pg_pathman 1.0 / Александр Коротков, Дмитрий Иванов (Post...
Ontico
 
Optimization of a big PostgreSQL database
Alex Chistyakov
 
МойСклад, облачный сервис ERP
Oleg Alexeev
 
Where is the space, Postgres?
Alexey Ermakov
 
Расширяемость PostgreSQL для хакеров и архитекторов / Олег Бартунов, Александ...
Ontico
 
Scaling Web Sites By Sharding And Replication Hl2008 Rus
Ontico
 
Cassandra design patterns
Denis Gabaydulin
 
Масштабирование базы данных через шардирование и партиционирование — Денис Ив...
2ГИС Технологии
 
Ad

More from Ontico (20)

PDF
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Ontico
 
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
 
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
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
 
Ad

Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)