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

PostgreSQL *

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

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

Как реализовать и оптимизировать UPSERT в Greenplum 6

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

Привет! Меня зовут Антон Васильев, я работаю инженером технической поддержки компании Arenadata и нередко сталкиваюсь с довольно каверзными задачами и багами. Одной из них была проблема оптимизации механизма UPSERT в Greenplum 6. В этой статье я хочу рассказать, как эта задача может быть решена.

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

Новости

Импортирование csv или json файлов в Heroku Postgres Databases

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

Недавно возникла потребность переместить данные из Bubble в Heroku, так как Bubble начал требовать много денег за хранение и доступ к большому кол-ву данных, поэтому было решено переместить данные проекта в Heroku.

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

Как перенести 1,4 ТБ с MS SQL на PostgresSQL за 13 часов

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

Привет, Хабр! Меня зовут Павел Кузьмин, я работаю ведущим разработчиком в РСХБ-Интех. Однажды в своей работе мы столкнулись с острой необходимостью перенести БД объемом 1,4 ТБ (более 1,5 млрд строк) с MS SQL на PostgresSQL не более чем за 20 часов. Неожиданно для нас, все имеющиеся готовые варианты не подходили, поэтому мы решили взять библиотеку Npgsql на C# и написать свой код. В итоге созданное решение справилось с поставленной задачей за 13 часов. Рассказываем, как мы это сделали, и делимся кодом. Возможно, он вам пригодится в работе.

Читать далее
Всего голосов 25: ↑23 и ↓2+28
Комментарии22

Создание собственного API на Python (FastAPI): Авторизация, Аутентификация и роли пользователей

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

Друзья, приветствую! К сожалению, не хватает времени, чтобы чаще публиковаться, и надеюсь, что вы ждали этой статьи.

Как вы поняли из названия, сегодня мы поговорим про авторизацию и аутентификацию. Прежде чем вы приступите к прочтению статьи, настоятельно рекомендую вам ознакомиться с прошлым материалом по теме разработки собственного API через FastApi.

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

Истории

Создание простейшего back-end на Node.js с использованием PostgreSQL

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

Сегодня мы продемонстрируем как создавать back-end приложения на Node.js c PostqreSQL. В качестве примера создадим простейший back-end на Node.js с использованием PostgreSQL.

Почему именно Node.js и PostgreSQL? Node.js имеет хорошую скорость и асинхронность, а PostgreSQL, в свою очередь, является мощной и надежной СУБД.

Вместе они создают идеальный тандем для создания качественных приложений.

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

Как найти и удалить 2 Тб ненужных файлов, которые не видит СУБД? Дорабатываем pg_orphaned

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

PostgreSQL, как и все СУБД, основанные на его открытом коде, устроен так, что всю информацию хранит в большом количестве отдельных файлов. И они при разных обстоятельствах могут потеряться. Например, бывает так, что при заполнении таблицы или обработке транзакции происходит сбой. Процесс, породивший файл, прерывается, не удалив результаты своей работы. СУБД про этот файл ещё ничего не знает, поскольку транзакция, создавшая его, не успела закоммититься. Часть таких файлов удалится при перезапуске СУБД, а часть — нет. Так неиспользуемые файлы копятся и занимают всё больше места. Иногда их объём исчисляется терабайтами.

Меня зовут Роман Дягелев, я инженер в СберТехе, сопровождаю и разрабатываю СУБД Platform V Pangolin. Наш продукт основан на открытых решениях PostgreSQL и включает в себя собственные доработки в области безопасности, отказоустойчивости и удобства эксплуатации. Я расскажу о том, почему нам не хватило готового инструмента PostgreSQL для очистки файлового мусора и как я вместе с коллегами дорабатывал его. Надеюсь, наш опыт станет полезен тем, кто работает с инструментарием PostgreSQL и ищет решения для работы с ненужными файлами.

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

Postgresso #6 (67)

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

Случилось так, что этот выпуск никак не хотел укладываться в наши обычные разделы, скажем: Релизы/Конференции/Статьи ...

Что делать?

Волны расходятся с тех пор, как Роберт Хаас (Robert Haas, EDB) издал в интернете крик души. Волны отразились от берегов: от одного берега пошла волна pre-commitfest, от другого вот что:

Robert Haas: Mentoring Program for Code Contributors

Роберт Хаас теперь сам участвует в менторской программе поддержки (потенциальных и действующих) контрибьюторов. Он кинул клич, можно подавать заявки. Формула проекта такая: 9 менторов-коммитеров-добровольцев курируют 9 контрибьюторов. В будущем - возможно - будет вовлечено больше коммитеров, и - возможно - каждый возьмёт больше, чем одного курируемого (mentee).

Другую волну оседлал (и правильно сделал) Андрей Бородин (Yandex Cloud), которого поддержало руководство Postgres Professional. Об этом мы писали в прошлом выпуске, но в будущем времени: На Saint HighLoad++ 2024 запланирован воркшоп Postgres Pre-Commitfest Party. Это была инициатива Андрея Бородина (Yandex Cloud) как путь разрешения проблем с коммитфестами, которые мы относительно подробно описали в предыдущем выпуске [то есть уже в пред-предыдущем - примечание редакции]. Андрей предложил обсуждать грядущие патчи сначала вне инфраструктуры коммитфестов.

Теперь можно сказать, что затея удалась. По подсчётам службы маркетинга на первом в России (да и в мире, зачем скромничать) публичном ревью патчей в PostgreSQL 18, было 100+ слушателей. Здесь фотографии.

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

Популярная задача на собеседовании: сотрудники с максимальной зарплатой в отделе

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

Кто ходил на собеседования по устройству на работу, тот знает, спрашивают там всякое и странное. Нередко можно встретить задачу SQL по нахождению сотрудников с максимальной зарплатой в отделе. Причем ваш потенциальный начальник считает, что у этой задачи есть только одно «правильное решение», то, про которое он прочитал в Интернете. Так ли это?

Любопытно...
Всего голосов 96: ↑85 и ↓11+93
Комментарии197

Поиск по префиксу или тайные операторы PostgreSQL

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

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

Интересно, что там?
Всего голосов 15: ↑15 и ↓0+20
Комментарии8

Создание собственного API на Python (FastAPI): Router и асинхронные запросы в PostgreSQL (SQLAlchemy)

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

Друзья, приветствую! Если вы читали мои прошлые статьи из серии «Создание собственного API на Python (FastAPI) и повторяли за мной, то сейчас вы готовы к полноценной интеграции PostgreSQL в ваше API.

Сегодня мы научимся ещё более качественно структурировать своим проекты, разберемся что такое Router и внедрим в свой код все базовые методы по асинхронной работе с базой данных PostgreSQL через FastApi.

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

PostgreSQL — один за всех? Как работать с нетипичными данными в реляционной системе

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

Смотрим, как вездесущий PostgreSQL справляется с нестандартными для реляционной системы управления базами данных (СУБД) ролями: хранением и поиском временных рядов, пар «ключ — значение», эмбеддингов для больших языковых моделей и многомерных кубов. Отвечаем на вопрос: действительно ли так нужно строить сложные архитектуры со множеством разнородных систем хранения данных — MongoDB, Redis, InfluxDB, Pinecone, ClickHouse, Apache Cassandra — или можно обойтись одним PostgreSQL?

Привет, Хабр! Меня зовут Александр Брейман, я доцент департамента программной инженерии факультета компьютерных наук НИУ ВШЭ и по совместительству эксперт Учебного центра IBS по управлению данными и архитектуре ПО. В прошлой статье я рассказывал о миграции с Oracle на PostgreSQL, а сегодня разберу, как последний работает с нетипичными видами данных.

Читать далее
Всего голосов 13: ↑11 и ↓2+12
Комментарии35

Битый или небитый? Как обеспечить целостность данных в Postgres Pro

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

Следим за целостностью данных в PostgreSQL. Мысль о возможной катастрофе неприятна, поэтому люди часто не принимают серьезных предупредительных мер.

Администратор любой IT системы должен знать о всех возможных проблемах, которые могут возникнуть на вверенном ему оборудовании: аппаратные сбои системы хранения, сбои файловой системы, повреждения страниц в оперативной памяти, сбои в кэше хранилищ и так далее. Для серверов баз данных выявление и исправление таких ошибок особенно важно, так как информация в БД должна быть в согласованном состоянии и некорректность только части данных портит БД целиком. В этой статье мы расскажем с помощью каких инструментов можно защитить ваши данные в СУБД Postgres и обнаруживать ошибки до того, как они становятся реальными проблемами.

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

Создание собственного API на Python (FastAPI): структура проекта, SQLAlchemy PostgreSQL, миграции и первые модели таблиц

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

Приветствую всех, друзья! Наша последняя статья по созданию собственного API на FastAPI вызвала огромный интерес, и за это я искренне благодарен.

Ранее мы рассматривали базовые аспекты работы с FastAPI: различные типы запросов, их валидацию и обработку, а также ответы на эти запросы. Однако, это лишь верхушка айсберга.

Уже на данном этапе код становится громоздким и сложным для понимания. К тому же, хранение данных в JSON‑файлах — это далеко не самый профессиональный подход. «Нормальные ребята» используют SQLAlchemy, причем асинхронно.

Сегодня мы займемся интеграцией асинхронной SQLAlchemy в наше FastAPI‑приложение. Для упрощения навигации и понимания кода я предложу структуру проекта, которую сам использую в каждом FastAPI‑приложении.

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

Читать далее
Всего голосов 10: ↑9 и ↓1+11
Комментарии2

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

Корреляционный анализ для решения инцидентов производительности СУБД

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

В статье, в общих словах рассматриваются 2 вопроса:

1) Как рассчитать метрику производительности СУБД

2) Как использовать корреляционный анализ для поиска причин снижения производительности СУБД

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

Размышления о мониторинге производительности отдельного SQL запроса

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

Иногда в докладах/статьях о оптимизации производительности СУБД описание предлагаемой методики/средства начинается с события -"мы заметили резкое увеличение времени выполнения запроса/запросов и резкое увеличение количества прочитанных блоков разделяемой области". Далее следует описание процесса выявления ресурсоёмкого запроса, с целью его оптимизации.

На этапе разработки данных сценарий вполне себя оправдывает . Нагрузка на СУБД - детерминирована, характер нагрузки определён и описан, данные постоянны. При условии адекватности команды разработки, даже удастся действительно оптимизировать запрос.

Но.

В процессе промышленной эксплуатации ситуация меняется принципиально .

Читать далее
Всего голосов 9: ↑1 и ↓8-7
Комментарии26

Стоит ли бояться serializable-транзакций больше, чем труднонаходимых багов?

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

В базах данных транзакции обладают свойствами ACID, где «I» означает изоляцию транзакций при одновременном (concurrent) выполнении.

Наличие (serializable) изоляции гарантирует, что результат транзакций, выполненных параллельно, будет таким же, как если бы они были выполнены в некотором последовательном порядке.

Сериализация выполнения транзакций не бесплатна с точки зрения производительности.

Многие СУБД поддерживают более слабые уровни изоляции, оставляя за разработчиком выбор подходящего. В монолитных СУБД более слабый уровень изоляции часто используется по умолчанию. Так, в PostgreSQL и MySQL это «read committed». В распределённых СУБД чаще по умолчанию более строгие уровни: «repeatable read» в YugabyteDB и TiDB, «serializable» в CockroachDB и YDB.

Слабые уровни изоляции могут быть причиной очень труднонаходимых багов. Причём эти баги могут вызвать уязвимости в безопасности.

Из-за подобных багов уже были украдены миллионы долларов, в частности с биткоин-бирж. Мы расскажем о подобных случаях более детально в следующих разделах.

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

Как расширить JPA для работы с PostgreSQL

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

Всем привет! Меня зовут Антон, я — архитектор компании ITFB Group. Пережив несколько проектов, на которых встречается стек PostgreSQL с использованием связки PostgreSQL + JPA, мне удалось устранить большое количество проблем, связанных с неоптимальной интеграцией функциональности PostgresSQL в Java-приложения. В этой cтатье мы максимально подробно разберем, как можно настроить JPA для эффективной работы с PostgreSQL. Всем, кому интересна эта тема, добро пожаловать под кат)

Читать далее
Всего голосов 9: ↑7 и ↓2+7
Комментарии8

База по базам данных. Для всех интересующихся

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

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

Читать далее
Всего голосов 21: ↑6 и ↓15-5
Комментарии9

Пакетная обработка в PostgreSQL

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

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

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

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

В этой статье рассмотрим, как реализовать пакетную обработку в PostgreSQL.

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

Эмуляция сбоев ФС. Ломаем PostgreSQL

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

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

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

Читать далее
Всего голосов 17: ↑15 и ↓2+13
Комментарии7
1
23 ...

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