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

PostgreSQL *

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

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

Темпоральные типы в PostgreSQL и их использование

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

Меня зовут Фролков Иван, я работаю программистом с 1993 года, и уже восемь лет — в Postgres Professional. Периодически выступаю на конференциях. В этой статье я расскажу вам про темпоральные типы данных в PostgreSQL — доклад о них я читал на PGConf.Russia 2022. Почему меня это заинтересовало? Мне много раз приходилось сталкиваться с тем, что из-за разницы часовых поясов не сходились отчёты за месяц или даже за сутки. Подобные проблемы возникают из-за неаккуратной обработки даты и времени, которой можно избежать.

В чём проблема?

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

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

Заря приходит с востока

С чем же связаны такие проблемы? С тем, что Земля круглая, и время наступает везде по-разному. Казалось бы, это тривиальное знание, но в реальности его мало кто учитывает. На востоке часовые пояса с плюсом, а на западе — с минусом. Где-то посередине располагается Гринвич, нулевой меридиан (кстати, в Лондоне есть летнее время, и оно не совпадает с гринвичским!). Есть ещё места вроде Непала и Бутана, где время сдвигается не на полные часы, а на 45 или 15 минут, и это может создать вам проблемы.

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

Jsonb и gin, ошибки планировщика на старых PostgreSQL

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

За всё время работы с веб программистами внезапные и катастрофичные провалы производительности в базах, на сколько я помню, всегда имели одну и ту же природу. Производительность базы внезапно падала настолько, что можно было считать полным отказом сервиса в оказании услуг. При этом никакие изменения в базу не вносились и причины такого внезапного и катастрофичного падения производительности понятны не были.

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

Как сделать свой сервер мобильному разработчику, если он никогда такого не делал?

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

У меня ушел один месяц на создание своего сервера. Две недели ушло на понимание функционала и сборку прототипа. Одну неделю я писал Ktor-сервер на Kotlin и визуал в приложении на Flutter. И еще одну неделю тестировал. И я хочу, чтобы вы сэкономили две недели, когда решите создать ваш бэкэнд.

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

Postgresso №9(58)

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

Microsoft

PostgreSQL 16

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

На сайте выделяют такие главные преимущества релиза, вот некоторые:

улучшение производительности: оптимизатор научился распараллеливать FULL и RIGHT JOIN, ускорились оконные функции, появилась балансировка нагрузки.

расширение возможностей логической репликации: репликация с реплики, распараллеливание, новая роль pg_create_subscription,

для разработчиков: новые (вернувшиеся "старые") возможности работы с SQL/JSON, улучшения в правилах сортировки, команда \bind в psql для подготовленных запросов, улучшения в правилах сортировки,

мониторингpg_stat_io, новое поле в pg_stat_all_tables,

доступ и безопасность: появилась возможность задавать дополнительные файлы в include.

Как вы, может быть, заметили, ссылки ведут на РУССКУЮ ДОКУМЕНТАЦИЮ к PostgreSQL, которая только что появилась на сайте Postgres Professional.

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

Немного про SLA для DWH на PostgreSQL

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

В некоторых случаях в DWH приходится периодическим заданием очищать таблицу и заполнять ее новыми актуальными данными. Например, раз в сутки. Если в таблице десятки или сотни тысяч строк, то это не проблема. А вот если миллиард - то уже точно проблема. Потому что каким бы способом ее не заполнять, но в течении достаточно длительного времени данные из этой таблицы не будут доступны пользователям. А если система должна быть доступна 24/7, то такие процессы начинают заметно ухудшать SLA.

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

Автоматизация разработки с помощью подхода DB-first

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

Интеграция с БД - привычно сложная и хрупкая часть большинства кодобаз, постоянно отвлекающая внимание разработчиков и раздувающая сроки. Какой бы хайпующий фреймворк вы ни пробовали, вы неизбежно обнаруживаете себя борющимся с одними и теми же симптомами, но ощущение того, что проблема могла бы решаться проще не покидает вас. Знакомо?

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

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

Карта на GitHub Pages без подписок и СМС: где в Берлине лучше не жить

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

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

Основная ценность этой публикации в новой визуализации. Теперь интерактивная карта доступна в браузере и работает на смартфонах!

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

Небольшой тест нескольких БД при работе с многими таблицами

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

Я новичок в работе с базами данных и для их изучения (а заодно для изучения Питона) начал небольшой пет-проект. В процессе оказалось, что в моей многопользовательской системе запросы к БД всегда касаются только одного пользователя. «Отлично!» подумал я, «раздам каждому пользователю по табличке и сэкономлю ресурсы сервера на индексации!». Конечно сначала я почитал литературу и подобных решений в ней не нашел. Потом сходил на один из популярных ресурсов и там мне объяснили, что так делать нельзя. Но почему – никто объяснить не смог (или возможно не захотел). Поэтому я решил сделать небольшой тест на самых популярных БД – проверить что будет на самом деле.

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

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

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

Мы много лет уже используем в качестве основной базы данных PostgreSQL. За это время он зарекомендовал себя быстрой и надежной СУБД. Однако, есть в PostgreSQL одна проблема, с которой приходится сталкиваться достаточно часто. К сожалению, реализация логики временных таблиц в нем имеет ряд недостатков, которые отрицательно сказываются на производительности системы.

Одним из свидетельств наличия проблемы является то, что для временных таблиц в Postgres Pro была добавлена специальная функция fasttrun, а в Postgres Pro Enterprise существенно доработана работа с ними (см. пункт 4). 

Наиболее активно временные таблицы используют платформы, в которых разработчик не работает напрямую с базой данных, а таблицы и запросы генерируются непосредственно самой платформой. В частности, к ним относится платформа или ее открытый и бесплатный аналог - платформа lsFusion.

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

Читать далее
Всего голосов 51: ↑50 и ↓1+49
Комментарии45

Я бы не жил на побережье Черного моря Краснодарского края в этих местах…

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

Про городской округ Сочи я высказывал свое мнение в "Я бы не жил в Сочи в этих местах…"

В этой статье найду места на оставшейся части побережья Краснодарского края на основе данных OpenStreetMap где могут быть проблемы из-за близости к жилью не самых комфортных мест для уютной жизни на побережье Черного Моря. Показать результаты работы моей модели для Туапсе просили еще в комментариях к первой статье "Где бы вы точно не жили и не остановились даже на время, если бы знали и выбирали на основе фактов".

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

Исследование производительности 1С на СУБД: Tantor, Postgres 1С, PostgresPro, MS SQL

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

Команда EFSOL Oblako продолжает серию тестов производительности 1С. Подобные тесты мы проводим уже несколько лет и на этот раз решили сравнить актуальные СУБД для работы с 1С:Предприятие 8.3, включая продукт российского разработчика - Tantor СУБД.

В данном исследовании для проведения нагрузочных тестов в связке с 1С использовались не только разные СУБД, но и разные операционные системы, подробнее о тестовом стенде ниже.

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

Где в Москве жить «неплохо»

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

В одной прошлых публикации получил массу полезных коментариев от читателей. Среди них просили для Москвы кроме "плохих" районов было бы интересно увидеть и хорошие.

Честно скажу, что определить какие хорошие непросто. Ведь у каждого свое понятие о том что такое хорошо и нужен доступ к данным, которого у нас нет. Поэтому давайте посмотрим где жить "неплохо". Не жить рядом с тем, что влияет на качество воздуха, уровень шума, ежедневное memento mori, близость к промышленности, безопасность. Найдем группы домов в Москве в пределах МКАД, отдаленные на 150м от перечисленных факторов. Если живете в Москве, то удивитесь - вашего дома скорее всего не будет на этой карте

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

Где бы вы точно не жили и не остановились даже на время, если бы знали и выбирали на основе фактов

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

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

Если из окна видна труба завода из которой валит дым "кислотного" цвета, под другим окном оживленная автотрасса/железная дорога и летом не открыть окно из-за гари и громких сигналов транспорта, рядом с этим прелестным пейзажем видны дымок от крематория и кладбище. Когда решите выйти на балкон летом, то комары напомнят что совсем рядом есть заболоченный участок. Поздравляю, вы оказались в том самом месте!!!

Что общего во всех этих факторах, кроме того что я сгустил краски StableDiffusion? В описаном примере для многих людей есть не только экологическая, но психологически дискомфортная составляющая. В студенчестве, в части диплома, связанной с экологией, были расчеты уровня шума в жилых помещениях от трассы/индустриальных объектов. Главный параметр был - расстояние по прямой от жилья.

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

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

Установка PostgresPRO Standart 15 на Astra Linux Common Edition

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

Astra Linux Common Edition - это мощная операционная система, но когда дело доходит до установки свежей версии PostgrePRO Standart 15, она может представить настоящий вызов. В отличие от Astra Linux Special Edition, где достаточно перейти на официальный сайт, следовать инструкции и наслаждаться работой с последней версией PostgreSQL, Common Edition требует большего терпения и умения разобраться в хаосе информации.

Давайте в этой статье рассмотрим, как установить PostgrePRO Standart 15 на Astra Linux Common Edition. Прежде чем мы начнем, давайте погрузимся в мир Common Edition и поймем, какие трудности возникают при установке PostgreSQL на этой версии ОС. Несмотря на то, что Common Edition может вызвать некоторые неудобства и недостаток информации, мы с вами разберемся в этом хаосе и сделаем вашу установку PostgreSQL на Astra Linux Common Edition простой и эффективной!

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

Kysely.js типизированный sql builder

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

Kysely.js – это библиотека, позволяющая писать типизированные SQL запросы. Библиотека делает работу с SQL в вашем проекте более безопасной, избавляя от таких ошибок как опечатки в названиях колонок или таблиц и неправильное использование SQL операторов в коде (код не скомпилируется). Ко всему прочему она делает работу с SQL более удобной, предоставляя при написании запросов автодополнения для таблиц, колонок, алиасов и других сущностей. Kysely имеет незначительный слой абстракции над SQL для того чтобы можно было пользоваться всей мощью SQL и при этом не изучать множество дополнительных сущностей. Библиотека поддерживает MySQL, PostgreSQL, SQLite, PlanetScale, D3, SurrealDB и другие.

Теперь погрузимся в наш кисель 😃.

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

2.0.Виртуализируем базы данных в NixOS

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

Всем привет. Предлагаю сделать передышку и отойти от нашего хранилища бэкапов и рассмотрим еще возможности инструментов Nix. Мы поработаем с Postgresql,Mysql,Qemu и открытыми данными

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

Вы вообще нормальн… нормализованный??

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

Сказ о том, нормализация данных завела производительность many-to-many в postgres в тупик, как это зло было повержено, и как тут нам помог Clickhouse.

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

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

SQL HowTo: ближайший общий предок в дереве (LCA)

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

В иерархических структурах регулярно возникает потребность определить ближайшего общего предка в дереве, он же наименьший общий предок (Lowest (Least) Common Ancestor).

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

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

Postgresso №8 (57)

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

Между выходом этого обзора и предыдущего успели выйти бета3 и первый релиз-кандидат.

В PostgreSQL 16 Beta 3 закрыты 2 уязвимости, они касаются расширений и MERGE. В сообщении есть важные замечания для тех, кто использует BRIN-индексы для запросов, затрагивающих NULL-величины.

А вот это почти детективный сюжет: PostgreSQL: CVE-2020-21469 is not a security vulnerability.

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

Выбираем СУБД по новым правилам — в какую сторону смотреть

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

Все говорят: «импортозамещение», а ты купи слона! Postgres PRO Certified, Postgres PRO, 1C PostgreSQL – какого слона купить?

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

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