Экосистема PostgreSQL/Postgres Pro. Cms на postgresql


установка на PostgreSQL (обновлено 29.05.2014) / Блог им. Liandr / Alto CMS

Похожие статьи

altocms.ru

Экосистема PostgreSQL/Postgres Pro : Компания Postgres Professional

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

 

Прикладное ПО, работающее с Postgres Pro или PostgreSQL

 

Вспомогательное и инструментальное ПО

Средства  управления

Клиентские библиотеки и драйверы

Средства разработки и отладки

Средства мониторинга

Средства репликации и кластеризации

Средства миграции с других СУБД

 

 

 

Cм также каталог ПО, работающего с PostgreSQL, на сайте международного сообщества.

postgrespro.ru

Установка на PostgreSQL / Вопросы, проблемы и их решения / Alto CMS

На главной странице заявлено — «в качестве базы данных может использоваться как MySQL (mysqli/PDO), так и PostgreSQL».Вот только при установке нельзя выбрать базу — подразумевается только MySQL.Файлик со схемой — тоже mysql.Вопрос — как поставить AltoCMS на PostgreSQL?Кто-нибудь вообще тестировал эту связку?

Похожие статьи

altocms.ru

записки юного БСДешника: Postgres+apache+nginx+CMS все просто

Тут подогнали на работе разминку для мозгов, установить связку из заголовка на дебиан, ну и чтоб оно работало, так как уже давно ничего серьезно не настраивал, а тот же постгрес, вообще видел первый раз, убил на это кучу времени. Ну отчасти ещё конечно из за того, что во всяком деле нужен интерес, ну или ясная цель, а тут её как бы особо не было, ибо задали это нам, чтоб не сильно мучались бездельем.Итак по большому счету связка и ее настройка не сильно зависит от платформы, с точностью, до местоположения конфигов, и способа запуска служб, а так же способа установки пакетов. Поэтому дальнейшие пояснения будут о FreeBSD-CURRENT, так что в остальных платформах что то может отличатся, так как почти все делал по инструкциям, для дебиана, в конце дам список ссылок, а тут просто немного опишу возникающие проблемы.Для начала ставим Postgres, как и все остальные приложения советую ставить из пакетной системы вашего дистрибьютива, во FreeBSD я ставил из портов, любители скорости могут юзать пакеты :) Установка элементарна, а вот настройка может вызвать проблемы, во FreeBSD рекомендуется перекомпилировать ядро со следующим набором опций options SYSVSHMoptions SYSVSEMoptions SYSVMSGoptions SHMMAXPGS=65536options SEMMNI=40options SEMMNS=240options SEMUME=40options SEMMNU=120утверждается что этого хватит на 180 клиентов, ну я и подумал, мне то нафик столько не нужно дай на порядок сокращу, эксперимент провалился, постгрес просто не стартовал, так что относится к параметрам надо аккуратно, ну и почитать что нибудь по теме, если надо серьезно что то настроить. Там необходимо настроить ещё ряд параметров, все описано, в постинсталляционном сообщении, если кто не в курсе его всегда можно посмотреть pkg_info -Dx postgresql-server | less.По настройке postgres во FreeBSD в принципе можно юзеть дефолтные для начала, сервер запускается даже с дефолтным ядром, так что все предельно просто, ну только не забыть проделать манипуляции из постинсталляционного сообщения. Сервер запускается доступным только локальным пользователям, так что думаю с точки зрения безопасности тоже все допустимо, вот тут и кроется главная разница, то ли в дебиане решили это ужесточить, то ли во фряхе смягчили, но факт что в файле pg_hba.conf во FreeBSD все локальные соединения считаются доверенными, а в дебиане им нужен md5 хеш. Так что аккуратнее, а то можно долго и безуспешно не понимать чего оно не коннектится, а да ещё запрещен коннект не из консоли с дефолтным юзером, вероятно из-за этого нельзя пормально поставить CMS из паккаджей, они все жалуются на невозможность коннекта к базе, если настройки прописать руками то работают.Для начала работы следует завести юзера, ну или это сделает устанавливаемая CMS, так же для начала неплохо установить databases/phppgadmin, как видно из названия это есть морда для администрирования написанная на PHP. Кому интересно можно все делать и из консоли, пример в статье, ну или вот уж совсем кратенько.# su pgsql$ psql template1 Welcome to psql 8.3.7, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms\h for help with SQL commands\? for help with psql commands\g or terminate with semicolon to execute query\q to quit

template1=# \?...\du [PATTERN] list users...template1=# \duList of rolesRole name | Superuser | Create role | Create DB | Connections | Member of--------------+-----------+-------------+-----------+-------------+-----------drupal | yes | yes | yes | no limit | {}pgsql | yes | yes | yes | no limit | {}postgrestest | yes | yes | yes | no limit | {}(3 rows)

Краткая суть что там творилось, стали пользователем pgsql (в дебиане postgres), подключились к служебной таблице, посмотрели список команд, ну и посмотрели что за пользователи у нас есть. Остальное тянет на статью :)В общем на этом можно и закруглятся, ибо установка apache, прикручивание к нему nginx в качестве фронтенда, и уж тем более установка CMS, в моем случае Drupal, из пакетов элементарна, и току это описывать не вижу.Стоит пожалуй только настроить apache, что бы он слушал только локальный 81 порт, хотя тут у меня опыта нет, и может это и не совсем так, кстати надо быдет все таки подтянуть свои знания в этом направлении.

Список статей, по которым настраивал я, там все расписано поподробнее, ну и за платформенно зависимыми подробностями, можно поискать, или почитать документацию :)Интересный дистрибьютив Debian небольшой, но с кучей драйверов для современного оборудования.Статья по утилитке для выбора наиболее быстрого заркала, во FreeBSD кстати тоже недавно добавили в порты sysutils/fastest_cvsup сам пока не юзал, но вот статья по настройке.Конфигурирование PostgresУстановка и настройка apache+nginxУстановка roftpd с хранением юзеров в postgres

f-andrey.blogspot.com

Переезд с PostgreSQL на MySQL / Хабр

Не секрет, что Drupal 6.x не очень хорошо дружит с PostgreSQL. Верней ядро дружит, а вот отдельные contrib модули далеко не всегда. И вот надоело мне наблюдать периодически вываливающиеся warning'и и накладывать патчи — решил переехать на MySQL.

Google на всяческие запросы о такого рода переезде упорно выдавал миграцию в обратную сторону — MySQL to PostgreSQL, понятно почему, но не радует. Если выкинуть Drupal из контекста, то начинают находиться платные продукты и всяческие не идеальные скриптики. В итоге решил сделать все самостоятельно ручками. Подопытные: drupal-6.8, mysql-5.0.70-r1, postgresql-8.0.15.

Последовательность:

  1. Не знаю почему, но как то так повелось, что эксперименты ставлю не на тестовых инсталляциях, а сразу на продакшн. Поэтому первым делом отключаем доступ к сайту. Я это сделал на frontend-сервере (nginx): своему айпишнику разрешил, а всем остальным запретил. И не потому, что не доверяю стандартному Drupal'овскому maintenance режиму, а потому что возможно понадобилось бы пару-другую раз прогнать процесс установки с нуля.
  2. Заходим в админку, отключаем и чистим всяческие кэши, индексы и логи, которые хранятся в базе — гемору от них при переносе будет больше чем пользы после.
  3. Сохраняем список включенных модулей. Я воспользовался плагином для Firefox — ScrapBook.
  4. Бэкапим данные текущей базы, причем без схемы:pg_dump -U postgres -D -d drupal > old_data.sql Вырезаем из этого дампа всё, кроме INSERT'ов.
  5. Создаем для Drupal'а базу и пользователя в MySQL.
  6. Переносим куда-нибудь текущий settings.php и запускаем процесс установки Drupal'а с нуля, указав созданных ранее пользователя и базу.
  7. После установки вносим необходимые правки в settings.php и включаем нужные модули, сверяясь с ранее сохраненным списком. Эта операция создаст в MySQL таблицы необходимые модулям.
  8. Просим phpmyadmin сделать дамп структуры таблиц MySQL с их принудительным DROP'ом — new_schema.sql.
  9. Объединяем дампы:cat new_schema.sql old_data.sql > install.sql
  10. В полученном файле search-replace'ом аккуратно заменяем названия столбцов вида «type» на type (с кавычками на без кавычек).
  11. Проверяем:mysql -u drupal -p drupal < install.sql В моем случае MySQL ругался исключительно на названия столбцов. Повторяем предыдущий и этот шаги до тех пор пока MySQL целиком не скушает install.sql.
  12. Мне дополнительных действий не потребовалось — сайт вернулся к работе, но уже на MySQL.
  13. И не забываем включить обратно кэши и доступ к сайту извне.
На всё-про-всё понадобилось порядка получаса — гуглил дольше.

P.S. Не судите строго — это мой первый пост на habr. До этого был «чукча не писатель — чукча читатель».

habr.com

СУБД PostgreSQL — Джино • Хостинг

PostgreSQL — высокопроизводительная и надежная СУБД (Система Управления Базами Данных). На данный момент не все CMS и блоговые движки по-умолчанию поддерживают эту СУБД в качестве хранилища своих данных, но если вы столкнетесь с необходимостью использовать PostgreSQL в своих проектах, то всегда сможете подключить соответствующую услугу в разделе «Хостинг / Услуги» контрольной панели.

При подключении услуги вы можете выбрать несколько вариантов дискового пространства под PostgreSQL, от 25 до 80 Гб. Для начала большинству пользователей подойдет минимальный вариант — 25 Гб, однако это значение при необходимости можно в любой момент увеличить.

Базы данных PostgreSQL на хостинге «Джино» размещаются на высокопроизводительных SSD-накопителях. Это позволило существенно увеличить скорость работы динамических сайтов по сравнению с аналогичными сайтами, чьи базы данных располагаются на традиционных жестких магнитных дисках.

При подключении данной услуги автоматически создается одна база данных (БД), ее имя совпадает с логином аккаунта. Через контрольную панель в разделе «Хостинг / Управление / Управление PostgreSQL» вы можете создавать дополнительные БД, все они будут иметь имена вида логин_имяБД, а их количество зависит от подключенного варианта услуги. Создавать БД прямым SQL-запросом (CREATE DATABASE …) нельзя.

По умолчанию имя пользователя автоматически созданной БД и его пароль также совпадают с логином и паролем аккаунта, однако в целях безопасности мы настоятельно рекомендуем сразу же сменить пароль пользователя БД, чтобы сделать их разными. Сменить пароль можно в контрольной панели в разделе «Хостинг / Управление / Управление PostgreSQL».

По умолчанию доступ к базам данных вашего аккаунта возможен только с того же сервера, на котором этот аккаунт находится. Если же вам нужно обращаться к БД извне (например, для использования PostgreSQL-менеджеров на локальном компьютере), то вы можете открыть доступ для отдельных IP-адресов или подсетей класса C — это делается в разделе «Хостинг / Управление / Управление PostgreSQL / Доступ по IP». Для удаленного подключения к PostgreSQL используйте домен postgresql.логин.myjino.ru, где логин — ваш логин на «Джино».

Настройка приложений

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

hosting.jino.ru

PostgreSQL vs MySQL / Блог компании Mail.Ru Group / Хабр

В преддверии своего доклада на конференции PGCONF.RUSSIA 2015 я поделюсь некоторыми наблюдениями о важных различиях между СУБД MySQL и PostgreSQL. Этот материал будет полезен всем тем, кого уже не устраивают возможности и особенности MySQL, а также тем, кто делает первые шаги в Postgres. Конечно, не стоит рассматривать этот пост как исчерпывающий список различий, но для принятия решения в пользу той или иной СУБД его будет вполне достаточно.

Тема моего доклада «Асинхронная репликация без цензуры, или почему PostgreSQL завоюет мир», и репликация одна из самых больных тем для нагруженных проектов использующих MySQL. Проблем много — корректность работы, стабильность работы, производительность — и на первый взгляд они выглядят несвязанными. Если же посмотреть в историческом контексте, то мы получаем интересный вывод: MySQL репликация имеет столько проблем потому, что она не была продумана, а точкой невозврата была поддержка storage engine (подключаемых движков) без ответов на вопросы «как быть с журналом?» и «как различным storage engine участвовать в репликации». В 2004 году в PostgreSQL рассылке пользователь пытался «найти» storage engine в исходном коде PostgreSQL и сильно удивился, что их нет. В процессе дискуссии кто-то предложил добавить эту возможность PostgreSQL, и один из разработчиков ответил «Ребята, если мы так сделаем, у нас будут проблемы с репликацией и с транзакциями между движками».The problem is that many storage management systems… often do their own WAL and PITR. Some do their own buffer management, locking and replication/load management too. So, as you say, its hard say where an interface should be abstracted. ссылка на это письмо в postgresql mailing list

Прошло более 10 лет, и что мы видим? В MySQL есть раздражающие проблемы с транзакциями между таблицами разных storage engine и у MySQL проблемы с репликацией. За эти десять лет у PostgreSQL появились подключаемые типы данных и индексы, а также есть репликация — т. е. преимущество MySQL было нивелировано, в то время как архитектурные проблемы MySQL остались и мешают жить. В MySQL 5.7 попытались решить проблему производительности репликации, распараллелив её. Поскольку проект на работе очень чувствителен к производительности репликации в силу своего масштаба, я попытался протестировать, стало ли лучше. Я нашёл, что параллельная репликация в 5.7 работает медленней однопоточной в 5.5, и лишь в отдельных случаях — примерно также. Если вы сейчас используете MySQL 5.5 и хотите перейти на более свежую версию, то учтите, что для высоконагруженных проектов миграция невозможна, поскольку репликация просто перестанет успевать выполняться.

После доклада на highload, в Oracle приняли к сведению разработанный мной тест и сообщили, что попытаются исправить проблему; недавно мне даже написали, что смогли увидеть параллелизм на своих тестах, и выслали настройки. Если не ошибаюсь, при 16 потоках появилось незначительное ускорение по сравнению с однопоточной версией. К сожалению, до сих пор не повторил свои тесты на предоставленных настройках — в частности потому, что с такими результатами наши проблемы всё равно остаются актуальными.

Точные причины такой регрессии производительности неизвестны. Было несколько предположений — например, Кристиан Нельсен, один из разработчиков MariaDB, у себя в блоге писал о том, что могут быть проблемы с перфоманс-схемой, с синхронизацией тредов. Из-за этого наблюдается регрессия в 40%, которая видна на обычных тестах. Oracle-разработчики это опровергают, и меня даже убедили, что её нет, видимо, я вижу какую-то другую проблему (и сколько же их всего?).

В MySQL репликации проблемы со storage engine усугубляются выбранным уровнем репликации — они логические, в то время как в PostgreSQL — физические. В принципе, у логической репликации есть свои преимущества, она позволяет сделать больше всяких интересных штук, об этом в докладе я тоже упомяну. Но PostgreSQL даже в рамках своей физической репликации уже сводит все эти преимущества на нет. Иными словами, почти все, что есть в MySQL, уже можно сделать и в PostgreSQL (либо будет можно в ближайшем будущем).

На реализацию низкоуровневой физической репликации в MySQL можно не надеяться. Проблема в том, что там вместо одного журнала (как в PostgreSQL) их получается два или четыре — смотря как посчитать. PostgreSQL просто коммитит запросы, они попадают в журнал, и этот журнал используется в репликации. PostgreSQL-репликация суперстабильна, потому что она использует тот же журнал, что и при операциях восстановления после сбоев. Этот механизм давно написан, хорошо оттестирован и оптимизирован.

В MySQL ситуация другая. У нас есть отдельный журнал InnoDB и журнал репликации, и нужно коммитить и туда, и туда. А это two-phase commit между журналами, который по определению работает медленно. То есть мы не можем просто взять и сказать, что мы повторяем транзакцию из InnoDB-журнала — приходится разбираться, что за запрос, запускать его заново. Если даже это логическая репликация, на уровне строчек, то эти строчки нужно искать в индексе. И мало того, что приходится сделать большое количество работы, чтобы выполнить запрос — он при этом снова будет писаться в свой InnoDB-журнал уже на реплике, что для производительности явно нехорошо.

В PostgreSQL в этом смысле архитектура на порядок продуманней и лучше реализована. Недавно в нём анонсировали возможность под названием Logical Decoding — которая позволяет сделать всякие интересные штуки, которые очень тяжело сделать в рамках физического журнала. В PostgreSQL это надстройка сверху, logical decoding позволяет работать с физическим журналом так, будто он логический. Именно эта функциональность скоро уберёт все преимущества MySQL репликации, кроме, возможно, размера журнала — statement-based репликация MySQL будет выигрывать — но у statement-based репликации MySQL есть совершенно дикие проблемы в самых неожиданных местах, и не стоит считать её хорошим решением (про это всё я тоже буду говорить в докладе).

Кроме того, для PostgreSQL есть триггерная репликация — это Tungsten, который позволяет делать то же самое. Триггерная репликация работает следующим образом: ставятся триггеры, они заполняют таблицы или пишут файлы, результат отправляется на реплику и там применяется. Именно через Tungsten, насколько я знаю, делают миграцию из MySQL в PostgreSQL и наоборот. В MySQL же логическая репликация работает прямо на уровне движка, и другой ее сделать сейчас уже нельзя.

У PostgreSQL документация гораздо лучше. В MySQL она формально вроде даже есть, но смысл отдельных опций понять бывает тяжело. Вроде написано, что они делают, но чтобы понять, как их правильно настраивать, нужно использовать неофициальную документацию, искать статьи на эти тему. Часто нужно понимать архитектуру MySQL, без этого понимания настройки выглядят какой-то магией.

Например, так «выстрелила» компания Percona: они вели MySQL Performance Blog, и в этом блоге было множество статей, в которых рассматривались отдельные моменты эксплуатации MySQL. Это принесло бешеную популярность, привело клиентов в консалтинг, позволило привлечь ресурсы для запуска разработки собственного форка Percona-Server. Существование и востребованность MySQL Performance Blog доказывают, что официальной документации просто недостаточно.

У PostgreSQL фактически все ответы есть в документации. С другой стороны, я слышал много критики при сравнении документации PostgreSQL со «взрослой» Oracle. Но это, на самом деле, очень важный показатель. MySQL с взрослым Oracle никто не пытается сравнивать вообще — это было бы смешно и нелепо — а PostgreSQL уже начинают сравнивать вполне серьезно, PostgreSQL-коммьюнити эту критику слышит и работает над улучшением продукта. Это говорит о том, что он по своим возможностям и производительности начинает конкурировать со столь мощной системой как Oracle, на которой работают мобильные операторы и банки, в то время как MySQL остаётся сидеть в нише веб-сайтов. И проекты-гиганты, доросшие до большого количества данных и пользователей, хлебают горе с MySQL большой ложкой, постоянно упираясь в его ограничения и архитектурные проблемы, которые невозможно исправить, затратив разумное количество сил и времени.

Примером таких крупных проектов на PostgreSQL является 1C: PostgreSQL идёт как опция вместо Microsoft SQL, а Microsoft SQL действительно фантастическая СУБД, одна из самых мощных. PostgreSQL может заместить MS SQL, а попытка заместить его MySQL… давайте опустим завесу жалости над этой сценой, как писал Марк Твен.

PostgreSQL соответствует стандартам SQL-92, SQL-98, SQL-2003 (реализованы все его разумные части) и уже работает над SQL-2011. Это очень круто. Для сравнения, MySQL не поддерживает даже SQL-92. Кто-то скажет, что в MySQL такая цель просто не ставилась разработчиками. Но нужно понимать, что разница между версиями стандарта заключается не в мелких изменениях — это новые функциональные возможности. То есть в тот момент, когда MySQL говорил: «Мы не будем следовать стандарту», они не просто вносили какие-то мелкие различия, из-за которых MySQL тяжело поддержать, они еще закрывали дорогу к реализации многих нужных и важных возможностей. Там до сих пор нет нормально оптимизатора. То, что там называется оптимизацией, в PostgreSQL называется «парсер» плюс нормализации. В MySQL это лишь план выполнения запросов, без разделения. И MySQL к поддержке стандартов придут еще очень нескоро, поскольку на них давит груз обратной совместимости. Да, они хотят, но лет через пять, может, что-нибудь у них появится. В PostgreSQL есть уже все и сейчас. С точки зрения простоты администрирования сравнение не в пользу PostgreSQL. MySQL администрировать гораздо проще. И не потому, что в этом смысле он лучше продуман, а просто гораздо меньше умеет делать. Соответственно, и настраивать его проще.

У MySQL есть проблема со сложными запросами. Например, MySQL не умеет спускать группировку в отдельные части union all. Разница между двумя запросами — на нашем примере группировка по отдельным таблицам и union all сверху работала в 15 раз быстрее, чем union all и потом группировка, хотя оптимизатор должен оба запроса приводить в одинаковый, эффективный план выполнения запроса. Нам придется делать генерацию таких запросов руками — т. е. тратить время разработчиков на то, что должна делать база.

«Простота» MySQL вытекает, как можно увидеть выше, из крайне бедных возможностей — MySQL работает просто хуже и требует больше времени и усилий во время разработки. В противоположность этому, у PostrgreSQL есть гистограммы и нормальный оптимизатор, и он выполнит такие запросы эффективно. Но если есть гистограммы, значит, есть их настройки — как минимум bucket size. Про настройки нужно знать и в отдельных случаях их менять — следовательно, нужно понимать, что это за настройка, за что она отвечает, уметь распознавать такие ситуации, увидеть выбрать оптимальные параметры.

Изредка случается, что умелость PostrgreSQL может помешать, а не помочь. В 95% случаев все хорошо работает — лучше, чем MySQL, — а какой-то один дурацкий запрос работает гораздо медленнее. Или всё работает хорошо, а потом внезапно (с точки зрения пользователя) по мере роста проекта некоторые запросы стали работать плохо (стало больше данных, стал выбираться другой план выполнения запроса). Скорее всего, для исправления достаточно запустить analyze или немножко покрутить настройки. Но нужно знать, что делать и как это делать. Как минимум, нужно прочитать документацию PostgreSQL на эту тему, а читать документацию почему-то не любят. Может потому, что в MySQL от неё мало помощи? :)

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

Чтобы определиться с выбором между MySQL и PostgreSQL для конкретного проекта, прежде всего нужно ответить на другие вопросы.

Во-первых, какой опыт есть у команды? Если вся команда имеет 10 лет опыта работы с MySQL и нужно запуститься как можно быстрее, то не факт, что стоит менять знакомый инструмент на незнакомый. Но если сроки не критичны, то стоит попробовать PostgreSQL.

Во-вторых, нужно не забывать про проблемы эксплуатации. Если у вас не высоконагруженный проект, то с точки зрения производительности разницы между этими двумя СУБД нет. Зато у PostgreSQL есть другое важное преимущество: он более строгий, делает больше проверок за вас, дает меньше возможности ошибиться, и это в перспективе огромное преимущество. Например, в MySQL приходится писать собственные инструменты для верификации обычной ссылочной целостности базы. И даже с этим могут быть проблемы. В этом смысле PostgreSQL инструмент более мощный, более гибкий, разрабатывать на нем приятнее. Но это во многом зависит от опыта разработчика.

Подводя итог: если у вас простенький интернет-магазин, нет денег на админа, нет серьезных амбиций перерасти в большой проект и есть опыт работы с MySQL — то берите MySQL. Если предполагаете, что проект будет популярным, если он большой, его будет тяжело переписать, если в нём сложная логика и связи между таблицами — возьмите PostgreSQL. Даже из коробки он у вас будет работать, поможет в разработке, сэкономит время, и вам проще будет расти.

habr.com


Prostoy-Site | Все права защищены © 2018 | Карта сайта