Как стать автором
Обновить

Все что нужно знать о секционировании (Часть 1)

Время на прочтение 5 мин
Количество просмотров 65K
PostgreSQL *
Часть 2

Добрый вечер/день/утро уважаемые хабралюди! Продолжаем развивать и дополнять блог о моей любимой open source rdbms Postgresql. Чудесным образом так получилось, что тема сегодняшнего топика еще ни разу здесь не подымалась. Надо сказать, что секционирование в postgresql очень хорошо описано в документации, но разве ж это меня остановит?).
Дальше больше
Всего голосов 37: ↑33 и ↓4 +29
Комментарии 43

Все что нужно знать о секционировании (Часть 2)

Время на прочтение 6 мин
Количество просмотров 13K
PostgreSQL *
Часть 1

Продолжаем разговор о секционировании. В прошлый раз мы рассмотрели простую задачу о таблице, разбитой на секции для каждого дня — так называемый range partitioning. Разбив таблицу на секции мы столкнулись с новой проблемой — поддержка секционированной таблицы. Мы должны вовремя создавать новую секцию, архивировать устаревшие, изменять соответствующим образом триггер, управляющий вставкой новых данных.
В прошлый раз я обещал простое решение
Всего голосов 26: ↑24 и ↓2 +22
Комментарии 8

Секционирование таблиц моделей в Django с PostgreSQL

Время на прочтение 4 мин
Количество просмотров 7.8K
PostgreSQL *Django *
Привет.
Это топик о том, как относительно быстро и безболезненно настроить секционирование (партицирование) таблицы по месяцам, если вы используете Django+PostgreSQL. Многое из описанного подойдёт и для других фреймворков и ORM.

О том, что такое секционирование и зачем оно нужно, можно почитать, например, здесь, здесь и здесь.

Итак, есть проект на Django и таблица одной из моделей должна быть очень большой. Если чтение из этой таблицы происходит часто, и всегда известен период времени, в который запись была сделана, секционирование ускорит работу базы данных.

Каждый раз писать запросы для включения секционирования не очень хочется, так что попробуем автоматизировать. Хорошо, если на выходе получится что-то, что может использовать и не сильно знакомый с SQL человек. I've read the docs, so you don't have to.
Читать дальше →
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 0

Партиционирование в PostgreSQL – Что? Зачем? Как?

Время на прочтение 23 мин
Количество просмотров 140K
Разработка веб-сайтов *PostgreSQL *SQL *
Перевод
Функцией партиционирования таблиц в PostgreSQL, к сожалению, активно пользуются пока не многие. На мой взгляд, очень достойно о ней рассказывает в своей работе Hubert Lubaczewski (depesz.com). Предлагаю вам еще один перевод его статьи!

В последнее время я заметил, что всё чаще и чаще сталкиваюсь с кейсами, где можно было бы использовать партиционирование. И хотя, теоретически, большинство людей знает о его существовании, на самом деле эту фичу не слишком хорошо понимают, а некоторые её даже побаиваются.

Так что я постараюсь объяснить в меру своих знаний и возможностей, что это такое, зачем его стоит использовать и как это сделать.
Читать дальше →
Всего голосов 34: ↑33 и ↓1 +32
Комментарии 25

Масштабирование базы данных через шардирование и партиционирование

Время на прочтение 11 мин
Количество просмотров 132K
Блог компании Конференции Олега Бунина (Онтико) Высокая производительность *Разработка веб-сайтов *MySQL *PostgreSQL *


Масштабирование базы данных через шардирование и партиционирование


Денис Иванов (2ГИС)


Всем привет! Меня зовут Денис Иванов, и я расскажу о масштабировании баз данных через шардирование и партиционирование. После этого доклада у всех должно появиться желание что-то попартицировать, пошардировать, вы поймете, что это очень просто, оно никак жрать не просит, работает, и все замечательно.

Немного расскажу о себе — я работаю в команде WebAPI в компании 2GIS, мы предоставляем API для организаций, у нас очень много разных данных, 8 стран, в которых мы работаем, 250 крупных городов, 50 тыс. населенных пунктов. У нас достаточно большая нагрузка — 25 млн. активных пользователей в месяц, и в среднем нагрузка около 2000 RPS идет на API. Все это располагается в трех датацентрах.

Перейдем к проблемам, которые мы с вами сегодня будем решать. Одна из проблем — это большое количество данных. Когда вы разрабатываете тот или иной проект, у вас в любой момент времени может случиться так, что данных становится очень много. Если бизнес работает, он приносит деньги. Соответственно, данных больше, денег больше, и с этими данными что-то нужно делать, потому что эти запросы очень долго начинают выполняться, и у нас сервер начинает не вывозить. Одно из решений, что с этими данными делать — это масштабирование базы данных.
Читать дальше →
Всего голосов 37: ↑34 и ↓3 +31
Комментарии 17

Партиционирование в postgres 9.x. Использование pg_pathman для оптимизации вставки и отсечения (pruning) партиций

Время на прочтение 59 мин
Количество просмотров 7.4K
Блог компании InfoWatch PostgreSQL *Программирование *SQL *
Здравствуйте! Хочу рассказать про особенности партиционирования в текущей postgresql 9.х и его улучшении с помощью расширения pg_pathmanвот), созданного парнями из Postgres Professional. Статья предназначена для знакомых с партиционированием разработчиков, которым понадобилось разбить большую БД в postgres, или для тех, кто хочет оценить сложность переноса уже партиционированной не postgres БД на postgres.

Сначала мы создадим схему БД, затем партиционируем её двумя способами(«штатным» и pg_pathman), после чего наполним данными и проверим, как работают запросы по партиционированным таблицам.

Также я расскажу, как это замечательное расширение внедрить в схему данных, уже побитую на партиции «штатным» способом.
Читать дальше →
Всего голосов 21: ↑21 и ↓0 +21
Комментарии 6

Вышел PostgreSQL 10

Время на прочтение 2 мин
Количество просмотров 52K
Высокая производительность *Разработка веб-сайтов *PostgreSQL *Программирование *SQL *

На самом деле прошло уже два дня, но статью на Хабр никто до сих пор не написал, так что придется мне устранять это упущение, что и делаю с удовольствием.


Итак, что же нового в этой версии PostgreSQL?


Во-первых, изменилось само версионирование. До "десятки" мы наблюдали множество минорных версий 9.x, которые выходили примерно раз в год и при этом вносили серьезные, далеко не минорные изменения. Поэтому с версии 10 было принято решение сделать нумерацию 10, 11, 12 и т.д. Кстати, MySQL, похоже пошел по тому же пути, прыгнул с 5.7 на 8.0


Ладно, это всё мелочи, перейдем к существу вопроса

Читать дальше →
Всего голосов 86: ↑81 и ↓5 +76
Комментарии 108

Как в Солнечной галактике Clickhouse выбирали

Время на прочтение 4 мин
Количество просмотров 6.7K
Блог компании Ростелеком-Солар Программирование *Администрирование баз данных *

Давным-давно, в далёкой-далёкой Солнечной галактике, ещё до того, как она стала частью вселенной Ростелеком, в небольшом продукте webProxy возникла потребность не только фильтровать сетевой трафик, но и строить по нему статистику с последующим ее хранением. На тот момент колоночные БД ещё не были так популярны, как сейчас. Единственным подходящим аналогом оказалась платная БД HP Vertica. Как в Солнечной галактике решили эту задачу и к чему в итоге пришли, расскажем под катом.


image

Читать дальше →
Всего голосов 18: ↑17 и ↓1 +16
Комментарии 6

Как масштабироваться с 1 до 100 000 пользователей

Время на прочтение 7 мин
Количество просмотров 19K
Блог компании Дата-центр «Миран» Хостинг Разработка веб-сайтов *Серверное администрирование *Облачные сервисы *
Туториал
Перевод
Через такое прошли многие стартапы: каждый день регистрируются толпы новых пользователей, а команда разработчиков изо всех сил пытается поддержать работу сервиса.

Это приятная проблема, но в Сети мало чёткой информации, как аккуратно масштабировать веб-приложение с нуля до сотен тысяч пользователей. Обычно встречаются или пожарные решения, или устранение узких мест (а часто и то, и другое). Поэтому люди используют довольно шаблонные приёмы по масштабированию своего любительского проекта в нечто действительно серьёзное.

Попытаемся отфильтровать информацию и записать основную формулу. Мы собираемся пошагово масштабировать наш новый сайт для обмена фотографиями Graminsta с 1 до 100 000 пользователей.

Запишем, какие конкретные действия необходимо сделать при увеличении аудитории до 10, 100, 1000, 10 000 и 100 000 человек.
Читать дальше →
Всего голосов 27: ↑27 и ↓0 +27
Комментарии 25

«Ваша устаревшая база данных перерастает сама себя». Опыт chess.com

Время на прочтение 14 мин
Количество просмотров 9.4K
Блог компании Флант MySQL *Проектирование и рефакторинг *Администрирование баз данных *
Перевод

Прим. перев.: в этой статье сербский «инженер по масштабируемости» нагруженного онлайн-проекта в подробностях рассказывает о своем опыте оптимизации большой БД на базе MySQL. Проведена она была для того, чтобы выдержать резкий рост трафика на сайт, случившийся из-за пандемии.

База данных становится слишком большой или старой? Ее тяжело обслуживать? Что ж, надеюсь, я смогу немного помочь. Текст, который вы собираетесь прочитать, содержит реальный опыт масштабирования монолитной базы данных, лежащей в основе одного из сайтов Топ-250 (согласно alexa.com). На момент написания этой статьи chess.com занимал 215 место в мире по популярности. Ежедневно к нам заглядывали более 4 млн уникальных пользователей, а наши MySQL-базы обрабатывали в общей сложности более 7 млрд запросов. Год назад сайт ежедневно посещали 1 млн уникальных пользователей; в марте прошлого года их число увеличилось до 1,3 млн; сегодня более 4 млн человек заходят на chess.com ежедневно, а число сыгранных партий превышает 8 млн. Я, конечно, знаю, что это не сопоставимо с самыми крупными игроками на рынке, однако наш опыт все же может помочь в такой сложной задаче, как «исправление» монолитной базы данных и ее вывод на новый уровень производительности.

Читать далее
Всего голосов 43: ↑42 и ↓1 +41
Комментарии 3

Oracle. Ещё один способ партиционирования больших и нагруженных таблиц

Время на прочтение 7 мин
Количество просмотров 8K
Блог компании Ингосстрах Oracle *SQL *Администрирование баз данных *
Туториал

Всем привет! Меня зовут Ольга и я разработчик в Ингосстрахе. В этой статье-туториале хочу поделиться способом партиционирования оооочень большой таблицы в Oracle 12c. Итак, погнали.

В жизни любой давно функционирующей системы наступает момент, когда уже невозможно хранить все исторические данные без разбору и пора думать, что это надо как-то поделить. Старое отправить на архивный или отчетный сервер, а оперативный слой существенно проредить. И самый очевидный и распространенный путь – партиционировать таблицу, а старые секции перенести на другое хранилище.

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 7

Обкафкился по полной: 3 фейла с Apache Kafka

Время на прочтение 6 мин
Количество просмотров 16K
Блог компании Southbridge Системное администрирование *Программирование *IT-инфраструктура *Apache *

Недавно мы проводили вебинар «Обкафкился по полной. Фейлы с Apache Kafka». На нём спикер Всеволод Севостьянов, Engineering Manager в HelloFresh, поделился фейлами из личной практики, а ещё рассказал, как мастерски ходить по тонкому льду Kafka и прокачать свой бэкенд. Для тех, кто пропустил или предпочитает читать, а не смотреть, подготовили текстовый вариант.

Читать далее
Всего голосов 31: ↑29 и ↓2 +27
Комментарии 27

База по шардированию базы

Время на прочтение 10 мин
Количество просмотров 13K
Блог компании Ozon Tech Высокая производительность *PostgreSQL *Программирование *Go *
Туториал

Возможность горизонтального масштабирования это одно из важнейших нефункциональных требований индустрии в последнее время. Рост бизнеса со стороны IT выглядит чаще всего как рост нагрузки и цены отказа системы. Нам всем хочется создавать такие приложения, которые будут одинаково быстро и стабильно работать как с сотней, так и с сотней тысяч клиентов. Для этого необходимо еще на стадии проектирования закладывать потенциал для масштабирования, одним из способов которого является шардирование.

Мы на пальцах рассмотрим что такое шардирование, как оно помогает в масштабировании и даже рассмотрим тот самый этап «роста».

Читать далее
Всего голосов 27: ↑26 и ↓1 +25
Комментарии 19

PostgreSQL: настройка и оптимизация производительности. Часть 2

Время на прочтение 12 мин
Количество просмотров 4.6K
Блог компании Southbridge Системное администрирование *PostgreSQL *IT-инфраструктура *Администрирование баз данных *
Туториал
Перевод

Продолжаем разбираться в способах повышения производительности PostgreSQL. На этот раз обсуждаем настройку запросов, логирования, автоочистки и параметров клиентского подключения. А также рассказываем об особенностях конфигурации на основе анализа рабочей нагрузки.

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 3

Партицирование в Greenplum 7: что нового

Время на прочтение 10 мин
Количество просмотров 1.6K
Блог компании Southbridge PostgreSQL *Big Data *DevOps *Распределённые системы *
Обзор
Перевод

Greenplum 7 — первая версия СУБД, совместимая с секционированными таблицами из PostgreSQL: World DB. 

Небольшая предыстория: до PostgreSQL 10 партицирование в PostgreSQL выполнялось в очень ограниченной форме и по сути, было просто вариантом наследования таблиц. Начиная с PostgreSQL 10, мы можем использовать декларативный синтаксис для определения парадигмы разделов. 

В рамках слияния с PostgreSQL 12 Greenplum 7 вобрал в себя весь синтаксис PostgreSQL для разбиения таблиц, сохранив при этом синтаксис Greenplum. В результате у Greenplum 7 есть шанс взять лучшее из обоих миров — что именно, обсудим в этой статье. 

Читать далее
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 1