Все потоки
Поиск
Написать публикацию
Обновить
110

PostgreSQL *

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

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

Деплоим Spring Boot приложение через Docker Compose в Timeweb Cloud за 10 минут

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров1.9K

Когда вы впервые сталкиваетесь с задачей деплоя, процесс может показаться сложным и пугающим. Докер-образы, безопасность, container registry, а тем более Kubernetes — для новичка это настоящая головная боль. Именно поэтому наши партнеры из Amplicode решили написать статью, которая поможет вам максимально просто и быстро задеплоить ваше первое Spring-приложение в облако.

Читать далее

PostgreSQL без боли и костылей: обзор ключевых расширений

Время на прочтение8 мин
Количество просмотров12K

Существует огромное количество расширений для PostgreSQL, каждое из которых помогает решать конкретные задачи пользователей. С их помощью можно адаптировать базу данных под собственные нужды и упростить работу с данными. Под катом посмотрим на некоторые из популярных расширений PostgreSQL: зачем они нужны, как применяются, какие имеют преимущества и ограничения.

Читать далее

COPY в PostgreSQL: грузим данные быстро, безопасно и без сюрпризов

Время на прочтение8 мин
Количество просмотров6.3K

Привет, Хабр.

Сегодня разбираем COPY в PostgreSQL. Это рабочая лошадка для массовой загрузки и выгрузки данных.

Читать далее

Мы научились переносить базу данных с Oracle на Postgres Pro со скоростью 41 ТБ/сутки

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

41 ТБ/сутки по маршруту Oracle → Postgres Pro без остановки исходной системы — это не теория, а цифры последних тестов. Мы разложили миграцию на три этапа: быструю начальную загрузку, CDC из redo-логов и валидацию, и собрали их в ProGate. Как устроен конвейер, почему Go и где прячутся узкие места — расскажем в статье.

Читать далее

Postgres на RTABench Q0: Ещё один заход

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров309

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

Читать далее

Выбор индекса при соединении по нескольким столбцам

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров1.3K

Когда имеется несколько индексов с одинаковыми ведущими столбцами, иногда выбирается не лучший индекс, и время выполнения запроса увеличивается на порядки. Такие ситуации встречаются в сложных приложениях, но чаще всего в 1С:ERP, поскольку это приложение наиболее распространено. Как это обычно бывает: после миграции приложения на СУБД PostgreSQL часть запросов начинает выполняться медленнее. Планировщик выбирает индекс, созданный по меньшему числу столбцов, время выполнения увеличивается, потому что при использовании такого индекса индексные записи указывают на строки таблицы, которые не соответствуют условиям соединения. При выборе же индекса по большему числу задействованных в запросе столбцов время выполнения становится существенно ниже и практически не зависит от размера таблиц.

В статье детализируется часть доклада Максима Старкова на конференции PG BootCamp, которая прошла в апреле в Екатеринбурге. Описываются признаки таблиц и индексов, при работе с которыми может возникнуть проблема выбора худшего индекса, а также рассматривается пример, демонстрирующий, что строка "Buffers" характерна для определения эффективности выполнения запроса (в 18 версии PostgreSQL "Buffers" будет показываться в планах по умолчанию).

Читать далее

Явное и неявное определение типов и полей в Go

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров2.7K

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

Читать далее

Реализация собственного биллинг-сервиса на .NET: необходимость, особенности и архитектура

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

Привет, меня зовут Павел, я являюсь разработчиком в DD Planet. Сегодня хочу поговорить об одной частой ситуации. Если ваш web сервис работает по подпискам или с регулярными платежами — рано или поздно встаёт вопрос: брать готовое решение или сделать своё.

Читать далее

Об индексах на столбцах с низкой кардинальностью

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров5.2K

Что будет, если использовать B-tree индекс в базе данных на столбцах, где всего пара уникальных значений несколько десятком миллионов записей? Рассмотрим, сравним и измерим эффективность на примере приема soft delete.

А так же попробуем раскрыть особенности особенности индексации B-tree, работа планировщика. Не все, конечно, но достаточно, чтобы остались вопросы для дальнейшего изучения.

Будет полезно разработчикам BE, которые надеются найти "серебряную пулю" и решить вопросы производительности быстро и сразу ;-)

Читать далее

Как я от нечего делать замедлил Postgres в 42 000 раз

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

Всех постоянно интересует, как сделать Postgres быстрее, эффективнее и всё такое, но никто не задумывался, как её замедлить. Да, большинству этих людей платят за то, чтобы они повышали скорость, но ко мне это не относится. Недавно я писал более полезное руководство, и мне вдруг пришла мысль, что кто-то должен попробовать создать такую конфигурацию Postgres, которая будет настроена на максимально медленную обработку запросов. Зачем? Сложно сказать, но вот такая возникла мысль.

Читать далее

Выжимаем максимум из Postgres на RTABench Q0

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров1.5K

Время от времени приходится слышать мнение, что Postgres никуда не годится для решения задач аналитики. При при этом, в качестве аргументации приводятся в пример результаты тестирования на TPC‑H или ClickBench. Что ж, когда стоит простая задача перебрать 100 млн строк на диске и посчитать набор агрегатов над ними — формат хранения и распараллеливания действительно сильно ограничивают нас в возможностях оптимизации СУБД. Однако когда запросы высоко селективны, им по факту требуется не так много строк таблицы и фокус внимания смещается на порядок JOINов, кэширование промежуточных результатов и минимизацию операций сортировки. В этом случае Postgres, имеющий весьма широкий выбор различных стратегий выполнения запроса, может получить преимущество...

Читать далее

Shardman и Citus: как масштабировать СУБД Postgres Pro

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров2.6K

Когда ресурсы сервера уже на пределе, вертикальное масштабирование рано или поздно перестаёт работать — остаётся горизонтальный подход. В этой статье подробно разбираем два способа шардирования в Postgres Pro: Shardman и внешнее расширение Citus. Сравним архитектуры, межузловое взаимодействие, схемы распределения данных и сценарии, в которых каждое решение раскрывается по‑максимуму.

Читать далее

Резервные копии PostgreSQL: сравнение скорости pg_dump в разных форматах и с разными уровнями сжатия

Уровень сложностиСредний
Время на прочтение33 мин
Количество просмотров5.8K

Я сделал резервную копию через pg_dump и восстановился из неё 22 раза. Резервные копии делал в 4 разных форматах с использованием от 1 до 7 уровней сжатия под каждый формат. Записал результаты и сделал сравнение разных видов, чтобы понимать, какие способы более эффективны для моего сценария использования.

Детали и замеры — ниже.

Читать далее

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

Психанул на неудобный драйвер pgx и написал свою библиотеку. Все как по канонам гошников ) — Golang

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров3.9K

После месяцев рутинного сканирования строк в структуры я решил: «Хватит это терпеть!» и психанув, создал обертку, которая:

✔ Автоматизирует скан — никаких rows.Scan(), просто передаете структуру
✔ Работает с любыми вложенностями — даже сложные JSON-поля парсятся без боли
✔ Не тормозит — минимальные накладные расходы, вся мощь pgx сохраняется
✔ Подходит для любого проекта — можно внедрять постепенно

👉 Это не просто библиотека — это мой ответ на боль всех gopher'ов!

Читать далее

Шпаргалка по настройке PostgresPro-1C для 1C по схеме каждой БД свой пользователь

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров4.1K

При переезде 1С с Windows-платформ пользователи сталкиваются с тем, что привычный подход "одна база - один пользователь" реализовать как-то не очень получается. В мануалах, которые можно нагуглить, предлагается либо соединяться с СУБД от имени пользователя postgres, либо создать нового пользователя и выдать ему права SUPERUSER, что с точки зрения изоляции баз друг от друга выглядит как-то "не очень".

Исправим данное недоразумение

Немного о кластеризации СУБД в высоконагруженных системах 1С

Время на прочтение9 мин
Количество просмотров3.7K

Для чего используют кластеризацию серверов СУБД? Вопрос не совсем праздный, особенно для крупных компаний. Если с кластеризацией/масштабированием серверов приложений, терминалов, web-серверов и т. д. все понятно и прозрачно, то вот с СУБД не всё так просто. Особенно для 1С систем.

Читать далее

Data Vault: моделирование хабов, линков, сателлитов в IDE asapBI

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров845

Привет, Хабр!

Всем хорош Data Vault, однако схватиться с ним «врукопашную», используя только SQL, захочет не каждый. Останавливает большой объем ручных операций, а также большой объем деталей реализации. Большое количество join, за которые критикуют Data Vault, не является определяющим моментом, так как уже сейчас базы данных способны их эффективно обрабатывать, а с течением времени мощность серверов только возрастает.

Но творческая мысль не дремлет, постепенно появляются инструменты для автоматизации построения Data Vault. Например, это пакет AutomateDV для dbt, графическая надстройка над ним Datapulse, построение модели DV в BI.Qube.

Data Vault меня заинтересовал — уж много плюшек он сулит, и для его изучения я занимаюсь проектом asapBI — low‑code IDE для моделирования DWH. Требования к создаваемой системе я описал на сайте asapbi.ru. Их достаточно много, поэтому не буду их тут перечислять.

Сегодня я хотел поделиться графическим интерфейсом для создания хабов, линков и стеллитов.

Читать далее

Оценка подхода lock-free списков

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

Привет, Хабр. Меня зовут Роман Ескин, я один из C разработчиков проекта Greengage DB. В этой статье я расскажу, как мы реализовали и протестировали lock-free подход в рамках масштабной работы по внедрению функции удаления брошенных файлов. Приглашаю вас заглянуть во внутреннюю кухню работы нашей команды при оценке этой функциональности.

Введение

Позвольте начать с краткой исторической справки: Greengage DB был запущен в 2024 году как open-source форк Greenplum — Massively Parallel Processing (MPP) аналитической системы управления базами данных, основанной на PostgreSQL. Мы начали этот проект, чтобы поддержать open-source сообщество Greenplum, который неожиданно стал проприетарным продуктом в мае 2024 года. Мы гарантируем дальнейшее развитие Greengage DB, следуя принципам открытости и прозрачности.

Так как Greengage DB основан на PostgreSQL, он унаследовал некоторые его известные особенности и проблемы. Одна из таких проблем, особенно актуальная в распределенных средах — это проблема "брошенных файлов" (orphaned files).

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

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

Читать далее

Postgresso 5–6 (78–79)

Время на прочтение18 мин
Количество просмотров2.6K

Быки, коровы и квайны

Об олимпиаде незапамятных времён спонсорства Oracle рассказывал ещё bzq aka Евгений Бредня, возглавляющий сейчас техподдержку Postgres Professional, а тогда (2016–2017) он ещё готовил вопросы как сотрудник AT Consulting. Вот части I и II. У Евгения на хабре интересные статьи — и о причудливых задачках, и о техподдержке. Так писали мы в Postgresso № 6 (55). Там же рассказали и уже об актуальных на том момент (2023) задачах 2-го и 3-го этапов, которые готовил Егор Рогов, руководитель программ отдела образования Postgres Professional (задачи для первого готовил не он, а Евгений Моргунов, автор PostgreSQL. Основы языка SQL).

В прошлом году, как известно в том числе из Postgresso #5 (66), организаторы даже выложили огромное видео, в котором был доклад Егора Рогова — в качестве важных материалов, сопутствующих олимпиаде: XV Международная олимпиада в сфере информационных технологий «IT⁠‑⁠Планета 2024». 1-й этап — заочный теоретический тест по PostgreSQL, из почти 3000 человек отобрали примерно 200. Вопросы для этого этапа были подготовлены Евгением Давыдовым. 2-й этап — также заочный. Здесь участникам было предложено подумать над пятью задачами Егора Рогова. Их он и разбирает в этой статье. А финал (3-й этап) Олимпиады проходил очно в Архангельске.

Но это присказки.

Читать далее

Работа с временными таблицами в PostgreSQL

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров2.2K

При создании временных таблиц в PostgreSQL изменяются до 13 таблиц системного каталога, при этом особенно сильно разрастаются pg_attribute, pg_class, pg_depend и pg_type. Массовое создание и усечение временных таблиц активно применяется, в том числе в 1C:ERP. В статье рассматриваются особенности работы с временными таблицами и описано решение проблемы раздувания таблиц системного каталога, реализованное в СУБД Tantor Postgres.

Читать далее

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