Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Партицирование и 
миграции данных в 
PostgreSQL 
Иванов Денис
Ведущий разработчик в 2ГИС
Крайний за высокие нагрузки 
сервиса «Фото»
8 стран 2 млн 
фирм 
250 
городов
50 млн
20 млн 2000 RPS
1. ПАРТИЦИРОВАНИЕ
Окружение машины, на которой проводился бенчмарк: 8 CPU, 8GB RAM.
Мы не вывозим
Что делать?
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 t...
Из коробки 
http://www.postgresql.org/docs/9.3/static/ddl-partitioning.html
«PARTITION MAGIC»
Ускоряемся
WHERE category_id = N
FROM news_1
Ускорили в 3 раза
Профит
Профит 
● Системные таблицы (pg_indexes…).
Профит 
● Системные таблицы (pg_indexes…). 
● Автоматические партиции.
Профит 
● Системные таблицы (pg_indexes…). 
● Автоматические партиции. 
● Без единой правки кода приложения.
Профит 
● Системные таблицы (pg_indexes…). 
● Автоматические партиции. 
● Без единой правки кода приложения. 
● Ускорение ...
Раздача слонов — 
https://github.com/2gis/partition_magic
2. МИГРАЦИИ
Yiic Migrate 
+ 
Phing
Мы теряем изменения в коде 
хранимых процедур
«MIGRAPTOR»
Поддерживает 
● Yii CDbConnection. 
● Нативные Yii миграции. 
● Схемы. 
● Хранимые процедуры. 
● Представления (view). 
● ...
Профит
Профит 
● Обёртка над 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
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Партицирование и миграции данных на примере PostgreSQL, Денис Иванов (2ГИС)
Upcoming SlideShare
Loading in …5
×

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

1,941 views

Published on

Доклад Дениса Иванова на HighLoad++ 2014.

Published in: Internet
  • Be the first to comment

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

  1. 1. Партицирование и миграции данных в PostgreSQL Иванов Денис
  2. 2. Ведущий разработчик в 2ГИС
  3. 3. Крайний за высокие нагрузки сервиса «Фото»
  4. 4. 8 стран 2 млн фирм 250 городов
  5. 5. 50 млн
  6. 6. 20 млн 2000 RPS
  7. 7. 1. ПАРТИЦИРОВАНИЕ
  8. 8. Окружение машины, на которой проводился бенчмарк: 8 CPU, 8GB RAM.
  9. 9. Мы не вывозим
  10. 10. Что делать?
  11. 11. photo photo_1 photo_2 photo_N
  12. 12. Ok, Google, «PostgreSQL-партицирование»
  13. 13. Концепт https://wiki.postgresql.org/wiki/Table_partitioning
  14. 14. 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).
  15. 15. Из коробки http://www.postgresql.org/docs/9.3/static/ddl-partitioning.html
  16. 16. «PARTITION MAGIC»
  17. 17. Ускоряемся
  18. 18. WHERE category_id = N
  19. 19. FROM news_1
  20. 20. Ускорили в 3 раза
  21. 21. Профит
  22. 22. Профит ● Системные таблицы (pg_indexes…).
  23. 23. Профит ● Системные таблицы (pg_indexes…). ● Автоматические партиции.
  24. 24. Профит ● Системные таблицы (pg_indexes…). ● Автоматические партиции. ● Без единой правки кода приложения.
  25. 25. Профит ● Системные таблицы (pg_indexes…). ● Автоматические партиции. ● Без единой правки кода приложения. ● Ускорение в 3 раза.
  26. 26. Раздача слонов — https://github.com/2gis/partition_magic
  27. 27. 2. МИГРАЦИИ
  28. 28. Yiic Migrate + Phing
  29. 29. Мы теряем изменения в коде хранимых процедур
  30. 30. «MIGRAPTOR»
  31. 31. Поддерживает ● Yii CDbConnection. ● Нативные Yii миграции. ● Схемы. ● Хранимые процедуры. ● Представления (view). ● DDL. ● DML. ● Скрипты. ● И другое.
  32. 32. Профит
  33. 33. Профит ● Обёртка над Yiic Migrate (Yii 1).
  34. 34. Профит ● Обёртка над Yiic Migrate (Yii 1). ● Дельты и миграции — код.
  35. 35. Профит ● Обёртка над Yiic Migrate (Yii 1). ● Дельты и миграции — код. ● VCS (Git), версии.
  36. 36. Профит ● Обёртка над Yiic Migrate (Yii 1). ● Дельты и миграции — код. ● VCS (Git), версии. ● Обновление при деплое.
  37. 37. Раздача слонов — https://github.com/2gis/migraptor
  38. 38. Иванов Денис dv.ivanov@2gis.ru

×