phone_parse.sql -- разбирает номер телефона в международном формате E.164 или в локальном формате на составные части (country_code, area_code, local_number)
phone_normalize.sql -- нормализует номер телефона, возвращает номер телефона в международном формате E.164, например: +79651234567
"Движок" для хранения таблиц у PostgreSQL действительно не самый современный, есть и другие проблемы. Но они либо решаемые, либо несущественные. PostgreSQL ценят прежде всего за предсказуемость, надёжность, огромное кол-во возможностей, расширяемость.
Psql можно очень сильно адаптировать под себя через psqlrc: сделать цветное приглашение командной строки, прикрутить pspg для отображения и навигации (!) в табличных данных, можно "налепить" читабельных команд типа :databases, :tables, если короткие эквиваленты не нравятся.
Выравнивание в расширенном выводе почему-то не работает только у Вас )
Привет из 2024! Поделитесь вашим опытом. Что в "бою" работает хорошо, а что не очень? С каким "подводными камнями" и "узкими местами" вы столкнулись в PostgreSQL? Бизнес-логика так и осталась в СУБД, или часть пришлось всё-таки вынести в приложение? Что именно и почему?
В корпоративной среде не всегда возможно установить терминал, который нравится, из-за ограничений безопасности. Но улучшить внешний вид командной строки возможно, просто немного дополнив кодом файл ~/.bashrc.
Спасибо за статью. Читал её ещё в 2018-м. С тех пор пор прошло много времени. У меня есть альтернативная реализация "многопоточки". Там немного bash для распараллеливания и одна хранимая процедура на PL/pgSQL, чтобы скрыть все сложности внутри.
Хорошая статья. Для более эффективной работы сотрудникам действительно нужно уметь лучше коммуницировать друг с другом.
А темы, которые касаются или м.б. интересны всей команде (рабочей группе) нужно обсуждать в общих чатах вместо персональных чатов 1:1. Чтобы потом не копировать текст или не пересказывать другим до чего (не)договорились.
Англицизмы, как и просторечье, допустимо употреблять в устной речи. В письменной лучше такого избегать. В случае неоднозначности русского слова/фразы можно указать в скобках по-английски, например: фиксация (commit).
Небольшая шпаргалка по особенностям сравнения record и NULL
Testing a ROW expression with IS NULL only reports TRUE if every single column is NULL. Нужно об этом знать, чтобы на напороться на ошибки в своём коде.
SELECT
(NULL, NULL) IS NULL as "(NULL, NULL) IS NULL", --true
(NULL, NULL) IS NOT NULL as "(NULL, NULL) IS NOT NULL", --false
NOT (NULL, NULL) IS NULL as "NOT (NULL, NULL) IS NULL", --false
(1, NULL) IS NULL as "(1, NULL) IS NULL", --false
(1, NULL) IS NOT NULL as "(1, NULL) IS NOT NULL", --false --!!!
NOT (1, NULL) IS NULL as "NOT (1, NULL) IS NULL" --true --!!!
Для обновления или удаления миллионов записей в таблице БД под нагрузкой я сделал себе хранимую процедуру loop_execute(), спрятав все "сложности" внутри. Взял идеи из статьи и развил дальше. Модификация записей происходит пачками в отдельных транзакциях с контролируемым временем блокировки. Для удобства есть режим тестирования, отображение прогресса выполнения в процентах и приблизительного времени окончания работы! На многоядерных серверах распараллеливание в разы увеличивает скорость работы.
В 2023-м я тоже делал подобные замеры.
Что это? )
PostgreSQL функции для обработки номера телефона
phone_parse.sql -- разбирает номер телефона в международном формате E.164 или в локальном формате на составные части (country_code, area_code, local_number)
phone_normalize.sql -- нормализует номер телефона, возвращает номер телефона в международном формате E.164, например: +79651234567
phone_format.sql -- форматирует номер телефона по образцу
PostgreSQL домен (тип данных)
phone.sql -- phone number in the international format E.164
А где у MySQL массивы? )
"Движок" для хранения таблиц у PostgreSQL действительно не самый современный, есть и другие проблемы. Но они либо решаемые, либо несущественные.
PostgreSQL ценят прежде всего за предсказуемость, надёжность, огромное кол-во возможностей, расширяемость.
Psql можно очень сильно адаптировать под себя через psqlrc: сделать цветное приглашение командной строки, прикрутить pspg для отображения и навигации (!) в табличных данных, можно "налепить" читабельных команд типа
:databases
,:tables
, если короткие эквиваленты не нравятся.Выравнивание в расширенном выводе почему-то не работает только у Вас )
Сервисом не пользуюсь. Все "наезды" очень поверхностные, никакой конкретики и примеров. Неконструктивно. Доверие к такому комментарию нулевое.
Привет из 2024!
Поделитесь вашим опытом. Что в "бою" работает хорошо, а что не очень?
С каким "подводными камнями" и "узкими местами" вы столкнулись в PostgreSQL?
Бизнес-логика так и осталась в СУБД, или часть пришлось всё-таки вынести в приложение? Что именно и почему?
Как найти что-то в куче файлов
postgresql-%Y-%m-%d_%H%M%S.log
, если поискать нужно за последние сутки, т.к. точное время неизвестно?В корпоративной среде не всегда возможно установить терминал, который нравится, из-за ограничений безопасности. Но улучшить внешний вид командной строки возможно, просто немного дополнив кодом файл
~/.bashrc
.Было бы интересено посмотреть на результаты сравния производительности Firebird 5 и PostgreSQL 15 ?
Много лет тому назад я подсмотрел очень интересную коцепцию SQL шаблонизатора с условными блоками у Дмитрия Котерова (dklab).
Потом сделал sql-template-engine, который уже несколько лет работает на одном крупном веб-сайте РФ.
Дополню:
sudo apt install git-filter-repo
Мой способ: https://github.com/rin-nas/postgresql-patterns-library/blob/master/README.md#как-сделать-журналирование-изменений-таблицы
Спасибо за статью. Читал её ещё в 2018-м. С тех пор пор прошло много времени. У меня есть альтернативная реализация "многопоточки". Там немного
bash
для распараллеливания и одна хранимая процедура наPL/pgSQL
, чтобы скрыть все сложности внутри.Возможно ли его разделить на части и внедрять в СУБД постепенно? Большого слона нужно есть по частям. Разделяй и влавствуй )
Хорошая статья. Для более эффективной работы сотрудникам действительно нужно уметь лучше коммуницировать друг с другом.
А темы, которые касаются или м.б. интересны всей команде (рабочей группе) нужно обсуждать в общих чатах вместо персональных чатов 1:1. Чтобы потом не копировать текст или не пересказывать другим до чего (не)договорились.
Англицизмы, как и просторечье, допустимо употреблять в устной речи. В письменной лучше такого избегать. В случае неоднозначности русского слова/фразы можно указать в скобках по-английски, например: фиксация (commit).
Спасибо переводчикам за труд!
Небольшая шпаргалка по особенностям сравнения record и NULL
Testing a ROW expression with IS NULL only reports TRUE if every single column is NULL. Нужно об этом знать, чтобы на напороться на ошибки в своём коде.
Для обновления или удаления миллионов записей в таблице БД под нагрузкой я сделал себе хранимую процедуру
loop_execute()
, спрятав все "сложности" внутри. Взял идеи из статьи и развил дальше. Модификация записей происходит пачками в отдельных транзакциях с контролируемым временем блокировки. Для удобства есть режим тестирования, отображение прогресса выполнения в процентах и приблизительного времени окончания работы! На многоядерных серверах распараллеливание в разы увеличивает скорость работы.к
pg_try_advisory_lock('queue_table'::regclass::oid
нужно дописать::int
, иначе будет ошибкаДобрый день, а https://postgrespro.ru/docs/postgresql/14/datatype-bit пробовали?