36
в ущерб простоте. Если какая-то возможность может улучшить удобство, то
разработчики могут реализовать ее в виде своего расширения не обращая внимания
на стандарт.
Postgresql – это проект с открытым исходным кодом, он разрабатывается
командой энтузиастов, и разработчики пытаются максимально соответствовать
стандарту SQL и реализуют все самые новые стандарты. Но все это приводит к
ущербу простоты. Postgresql очень сложный и из-за этого он не настолько
популярен как MySQL.
Возможности обработки
Из предыдущего пункта выплывают и другие отличия postgresql от mysql,
это возможности обработки данных и ограничения. Естественно, соответствие
более новым стандартам дает более новые возможности.
При выполнении запроса MySQL загружает весь ответ сервера в память
клиента, при больших объемах данных это может быть не совсем удобно. В
основном по функциям Postgresql превосходит Mysql, дальше рассмотрим в каких
именно.
Postgresql поддерживает использование курсоров для перемещения по
полученным данным. Вы получаете только указатель, весь ответ хранится в памяти
сервера баз данных. Этот указатель можно сохранять между сеансами. Здесь
поддерживается построение индексов сразу для нескольких столбцов таблицы.
Кроме того, индексы могут быть различных типов, кроме hash и b-tree доступны
GiST и SP-GiST для работы с городами, GIN для поиска по тексту, BRIN и Bloom.
Postgresql поддерживает регулярные выражения в запросах, рекурсивных запросов
и наследования таблиц. Но тут есть несколько ограничений, например, вы можете
добавить новое поле только в конец таблицы.
Производительность
Базы данных должны обязательно быть оптимизированы для окружения, в
котором вы будете работать. Исторически так сложилось, что MySQL
ориентировалась на максимальную производительность, а Postgresql
разрабатывалась как база данных с большим количеством настроек и максимально
соответствующую стандарту. Но со временем Postgresql получил много улучшений
и оптимизаций.