Партицирование и миграции данных на примере PostgreSQL,...

  • View
    662

  • Download
    10

  • Category

    Internet

Preview:

DESCRIPTION

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

Citation preview

Партицирование и миграции данных в PostgreSQL

Иванов Денис

Ведущий разработчик в 2ГИС

Крайний за высокие нагрузки сервиса «Фото»

8 стран 2 млн фирм

250 городов

50 млн

2000 RPS20 млн

1. ПАРТИЦИРОВАНИЕ

Окружение машины, на которой проводился бенчмарк: 8 CPU, 8GB RAM.

Мы не вывозим

Что делать?

photo

photo_1

photo_2

photo_N

Ok, Google,«PostgreSQL-партицирование»

Концептhttps://wiki.postgresql.org/wiki/Table_partitioning

Status QuoCurrently 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

«PARTITION MAGIC»

Ускоряемся

WHERE category_id = N

FROM news_1

Ускорили в 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

Recommended