Обновить
144.76

PostgreSQL *

Свободная объектно-реляционная СУБД

Сначала показывать
Порог рейтинга
Уровень сложности

Кто мощнее в базах данных? Сравниваем производительность БД на серверах с ARM- и x86-процессорами

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели19K

Всем привет! Ранее я разобрал и протестировал сервер с процессором ARM, который попал к нам в Selectel Lab. Сервер показал хорошие результаты по производительности в ряде классических тестов, но в этот раз захотелось проверить его в боевой задаче — в работе с базами данных. Быть может, архитектура ARM-процессора сделает всех конкурентов на этой территории?

Чтобы ответить на этот вопрос, протестировал ARM вместе с семеркой серверов разных конфигураций с процессорами Intel и AMD. В качестве баз данных для нашего эксперимента выбрал самые популярные — PostgreSQL и MySQL. Результаты тестов с графиками и комментариями — под катом. Надеюсь, они будут полезны вам при выборе сервера под БД.
Читать дальше →

Тензор: PRO своих

Время на прочтение2 мин
Охват и читатели2.4K

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

Дальше - больше :)

Бигдата, ты ли это?

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели4.3K

Возможно ли не замечать «лишних» 30 Tb данных на SSD при живом настроенном мониторинге и героически их обслуживать? Запросто, а ответы на вопросы кто же эти наблюдательные люди, как им это удалось и причем здесь PostgreSQL — ниже.

Читать далее

Как мы распиливаем монолит без даунтайма

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели3.4K
image

Всем привет!

На связи Михаил, и я продолжаю делиться историями про рефакторинг одного из сервисов облачной платформы #CloudMTS. В прошлый раз я рассказывал о том, как мы аккуратно раскладывали по папочкам код в соответствии с принципами чистой архитектуры. Сегодня поговорим о решении, которое позволяет нам распиливать монолит по кусочкам без простоев.

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

Наши причины перехода были следующими:

  1. В монолите концентрировалось большое количество бизнес-процессов, которые охватывали сразу несколько потребителей: пользователей облачной платформы, сейлз-менеджеров (через CRM-систему), администраторов, обработчиков метрик. Получилась такая одна большая точка отказа сразу для 4 групп бизнес-процессов.
  2. Каждый бизнес-процесс потребляет свой объем ресурсов. Например, для обработки метрик нужно 5 подов (чтобы запараллелить и ускорить обработку), для администрирования хватит и одного. Так как у нас все в одном сервисе, при масштабировании монолита мы будем ориентироваться на самый «прожорливый» бизнес-процесс. Часть ресурсов будет просто простаивать.
  3. Хотелось добиться гранулярности, чтобы независимо писать и деплоить код для каждого бизнес-процесса. И не переживать, что какие-то изменения в одном бизнес-процессе неожиданно отрикошетят в соседний.

Читать дальше →

SQL миграции в Postgres. Часть 2

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели20K

В первой части мы рассмотрели базовые операции, такие как добавление новых атрибутов, создание индексов и ограничений и т.д.

Эта статья посвящена двум более сложным миграциям:

- обновление большой таблицы
- разделение таблицы на две

Рассмотрим подходы, которые позволяют провести миграции с минимальным простоем для приложения.

Читать далее

PostgreSQL под капотом. Часть 6. Сложный SELECT запрос

Уровень сложностиСредний
Время на прочтение57 мин
Охват и читатели9K

Продолжим погружение в код PostgreSQL. Сейчас посмотрим, что происходит, когда вы хотите выполнить запрос сложнее, чем в прошлый раз: добавим WHERE, GROUP BY, HAVING, ORDER BY, LIMIT.

Плюс:

Системный кэш

Сходство обращения к столбцам и вызовов функций

Предсказание количества возвращаемых кортежей

Работа с простыми типами

Маркировка столбцов при использовании FOR UPDATE

Читать далее

Как перевезти интернет-магазин на Spree и RoR в облако и улучшить стабильность сайта в 4 раза?

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели2.8K

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

Читать далее

Как мы продукт на PostgreSQL переводили

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели9.5K

Все побежали, и я побежал… Строго говоря, историю о том, как мы научили наше приложение работать с СУБД PostgreSQL и провели первую миграцию боевой системы одного из наших заказчиков, можно было рассказать ещё три года назад. Именно тогда мы это сделали впервые. Сейчас за нашими плечами уже 11 внедрений «Единого клиента» на PostgreSQL. Две миграции на эту СУБД с Oracle пройдут в этом году. 

В статье поделюсь нашими наработками. Будет полезно тем, кто только собирается пойти по такому пути. Если тема интересна, можете посмотреть и выступление моего коллеги Вадима Зайцева на CDI Tech Conf.

Итак, поехали!

Миграция базы данных с Oracle на PostgreSQL в системе с микросервисной архитектурой

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели5.4K


Привет! Эта статья рассказывает о моем опыте миграции СУБД с Oracle на PostgreSQL в системе с микросервисной архитектурой и является продолжением моего доклада на PGConf.Russia 2023. Я постарался выделить и описать в ней самые интересные и важные, на мой взгляд, моменты на пути по поиску и внедрению альтернативы Oracle, тестированию Greenplum и, в конечном итоге, переходу на несколько связанных баз данных PostgreSQL. Надеюсь, что данная информация будет полезна и интересна всем, кто уже столкнулся с похожей задачей, неизбежно к ней движется или просто интересуется данной темой.
Читать дальше →

Пишем простой docker-compose.yml для контейнеризации приложения (React, Spring Boot, PostgreSQL, pgAdmin)

Уровень сложностиПростой
Время на прочтение21 мин
Охват и читатели80K

В данной статье описан простой пример написания docker-compose.yml файла на примере контейнеризации приложения с использованием Spring Boot на бэкенде, React на фронте, PostgreSQL в качестве базы данных и pgAdmin - для просмотра данных в базе.

Читать далее

Дисперсионный анализ (ANOVA)

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели126K

Дисперсионный анализ (ANOVA) — это статистический метод, который используется для сравнения средних значений двух или более выборок. Он позволяет определить, различаются ли средние значения между группами, или же различия случайны. ANOVA используется в различных областях, включая науку, инженерию, медицину, социологию и многие другие, где необходимо доказать связь между переменными.

ANOVA является мощным инструментом, который может использоваться в статистическом анализе для оценки влияния исследуемого фактора на зависимую переменную. Это помогает установить, является ли фактор значимым, и позволяет идентифицировать взаимодействие между переменными. ANOVA также позволяет определить, насколько сильно различия между группами, что может быть полезно при выборе стратегий манипулирования факторами.

Правильное применение ANOVA может доставить большую пользу и сделать исследование намного более информативным.

Читать далее

PostgreSQL 16: Часть 5 или Коммитфест 2023-03

Время на прочтение27 мин
Охват и читатели9.3K

Вместе с окончанием мартовского коммитфеста, закончился прием изменений в 16-ю версию. Пришла пора посмотреть, что в нем было нового и интересного.


Надеюсь, что представленный материал вместе с предыдущими статьями серии (2022-07, 2022-09, 2022-11, 2023-01) поможет сформировать представление о новинках PostgreSQL 16.

Читать дальше →

Девять способов выстрелить себе в ногу с PostgreSQL

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели29K

Большинство этих проблем связано с масштабируемостью. Это то, что не повлияет на вас, пока база данных мала. Но если когда-нибудь вам захочется, чтобы база данных перестала быть маленькой, о таких вещах стоит подумать заранее. В противном случае они нанесут вам удар исподтишка, возможно, в самый неудобный момент. Плюс во многих случаях работы потребуется меньше, если делать всё правильно с самого начала, чем менять уже работающую систему.
Читать дальше →

Ближайшие события

Компрессия WAL в PostgreSQL: что нового в 15-й версии?

Время на прочтение7 мин
Охват и читатели9K

Работа по реализации компрессии WAL на разных уровнях предпринимались с самых ранних дней PostgreSQL. Некоторые из встроенных функций доступны нам еще с 2016 года, и почти все инструменты резервного копирования, прежде чем помещать WAL в резервный репозиторий, выполняют его сжатие. И вот наконец настало время еще раз взглянуть на встроенный wal_compression, потому что PostgreSQL 15 есть что предложить нам. В комбинации с остальными значимыми улучшениями в архивировании WAL в PostgreSQL 15 мы можем добиться впечатляющих результатов.

Читать далее

В какой сказке встречаются Баба Яга и Колобок или сказ о том как мы таск-трекер писали, часть вторая

Время на прочтение23 мин
Охват и читатели2.4K

Всем привет, как и обещали, публикуем продолжение. Первая часть, напомню, здесь (если не читали, то лучше начать с нее, чтобы картина была цельной).

Читать далее

PGConf.Russia 2023: это было красиво

Время на прочтение6 мин
Охват и читатели4.4K

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

Читать далее

Полезные TreeMap визуализации для MSSQL, Postgres и MySQL

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели11K

Я очень люблю визуализации. Человек лучше всего воспринимает информацию через образы. Для трех часто встречающихся баз (MSSQL, Postgres и MySQL) я смастерил плагины к проекту Bell, хотя этот код на Python можно использовать и отдельно. Поэтому для каждой визуализации я буду в скобочках писать имя файла из репозитория GitHub - вы можете этот файл вытащить и использовать его отдельно от проекта (для этого нудны минимальные модификации).

Отмечу только, что я считаю себя экспертом только в MSSQL, а то что сделал с другими базами - сделал по наитию. Кроме того, в отличие от MSSQL у меня нет реальных баз под большой нагрузкой для Postgres и MySQL. Поэтому ошибки/пожелания для скриптов Postgres и MySQL очень и очень welcome!

В основном я задействовал TreeMap.

Читать далее

PostgreSQL под капотом. Часть 5. Простой SELECT запрос

Время на прочтение42 мин
Охват и читатели9.9K

Приветствую!

В этой статье рассмотрим какой путь проходит простой SELECT запрос. От стадии сырой строки до отправки ответа клиенту.

А еще:

Работу со статистикой приложения через API Linux.

Реализацию динамического списка.

«Наследование» в C.

Как ведется работа с диском в БД.

Немного легаси.

Читать далее

Поддержка пакетов в стиле Oracle в СУБД Postgres Pro 15 Enterprise

Время на прочтение15 мин
Охват и читатели13K

В новой версии своего флагманского дистрибутива Postgres Pro 15 Enterpise, компания Postgres Pro добавила поддержку функциональности пакетов: расширен синтаксис PL/pgSQL и добавлены новые механизмы в среду выполнения хранимых процедур.

В данной статье описана поддержка функциональности пакетов в Postgres Pro 15 Enterpise:

- группировка типов переменных процедур и функций в пакет;

- поддержка секции инициализации пакетов;

- поддержка глобальных переменных пакета доступных в течении всей "жизни" сессии.

Также в статье будут рассмотрены особенности использования пакетов в СУБД Postgres Pro Enterprise.

Читать далее

Postgres: графовая база данных, о которой вы не подозревали

Время на прочтение4 мин
Охват и читатели24K

PostgreSQL (Postgres) — это мощная реляционная база данных, способная хранить широкий спектр типов и структур данных. Когда нам нужно хранить графовые структуры данных, мы часто обращаемся к базам данных, позиционируемым как подходящее для этого решение, например, к Neo4J или Dgraph. Но не торопитесь! Хотя при работе с графовыми структурами данных о Postgres обычно не вспоминают, она идеально справляется с эффективным хранением графовых данных и запросами к ним.
Читать дальше →

Вклад авторов