PostgreSQL: зачем и как
По-умолчанию в качестве базы данных Rails предлагает использовать SQLite 3, автономную базу данных, которая неплохо подходит для получения первого опыта в разработке приложений. Одной из особенностей SQLite является невозможность одновременно выполнять более одной операции записи, поэтому чем скорее вы откажетесь от её использования, тем лучше. При разработке приложений зачастую практикуется подход, при котором development среда имеет минимум отличий от production среды. Это позволяет значительно уменьшить вероятность появления проблем, которые могут возникнуть из-за использования различных инструментов при разработке и при работе приложения в продакшене. Этот подход является одной из причин для того, чтобы задуматься об использовании PostgreSQL в разработке.
Здесь можно спросить себя: а почему именно PostgreSQL? Почему не MySQL или другая СУБД? Дело в том, что PostgreSQL стал фактически уже стандартом при работе над приложениями на Ruby on Rails. Он быстрый, расширяемый, адаптирован к высоким нагрузкам и использует такой подход к хранению данных, при котором достаточно сложно ошибиться, принимая те или иные решения (по сравнению, например, с MySQL).
Вот несколько ссылок, которые наглядно перечисляют все за и против:
- Преимущества PostgreSQL
- PostgreSQL vs. MS SQL Server
- SQLite vs PostgreSQL vs MySQL
- PostgreSQL vs MySQL (на русском)
- PostgreSQL vs MySQL
- MySQL? Choose something else
Поскольку для разработки на Rails имеет смысл использовать OS X или ОС семейства Linux, рассмотрим установку PostgreSQL для Ubuntu и Mac OS X.
Содержание:
- Установка PostgreSQL на Ubuntu 14.04
- Установка PostgreSQL на Mac OS X через Homebrew
- Установка PostgreSQL на Mac OS X через Posgresapp
- Проверка установки
- Базовые команды PostgreSQL
- Команды терминала psql
Установка PostgreSQL на Ubuntu 14.04
Во-первых, обновим удаленные репозитории:
sudo apt-get update
Затем непосредственно установим PostgreSQL:
sudo apt-get install postgresql-9.3
Строго говоря, база данных установлена. Убедимся в этом, войдя в терминал СУБД под стандартным пользователем postgres:
sudo -u postgres psql
Если СУБД установлена корректно, в терминале появится ответ с приглашением к вводу команд:
psql (9.3.5)
Type "help" for help.
postgres=#
Установка PostgreSQL на Mac OS X через Homebrew
Одним из наиболее простых способов установки PostgreSQL на OS X является Homebrew. Обновим список пакетов:
brew update
Установим PostgreSQL:
brew install postgresql
Если вы хотите, чтобы СУБД запускалась при старте системы, выполните команду:
ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
Запустим PostgreSQL:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Готово.
Установка PostgreSQL на Mac OS X через Postgresapp
Помимо Homebrew СУБД PostgreSQL можно установить так же при помощи специального комплекта приложений, доступного для скачивания по адресу http://postgresapp.com/.
Пакет включает в себя саму PostgreSQL, PostGIS и еще несколько популярных расширений, отсутствие которых, впрочем, нисколько не помешает вам начать разрабатывать Rails-приложения использующие PostgreSQL.
Установка производится перетаскиванием иконки из загруженного пакета в папку Applications (Программы).
Проверка установки
Создадим тестовую базу данных:
postgres=# CREATE DATABASE rainbow_db;
И пользователя:
postgres=# CREATE USER happy_user WITH password 'gottasecret';
Выйдем из терминала СУБД, введя команду \q и попробуем войти туда снова, используя свежесозданного пользователя:
psql -h localhost rainbow_db happy_user
После ввода пароля, терминал PostgreSQL поприветствует нас приглашением к вводу команд:
psql (9.3.5)
Type "help" for help.
rainbow_db=>
Для надежности проверим, может ли пользователь работать с текущей базой данных:
raindbow_db=> CREATE TABLE unicorns(happy BOOLEAN);
CREATE TABLE
Таблица unicorns создалась, значит все в порядке, PostgreSQL установлен и готов к работе.
Базовые команды PostgreSQL
Чтобы работать с PostgreSQL, необходимо знать некоторые базовые команды. Некоторые из них, наиболее полезные, приведены ниже.
Вход в PostgreSQL:
psql -d имя_базы_данных -U имя_пользователя -W
psql -h удаленный_хост -d имя_базы_данных -U имя_пользователя -W
Стандартный администраторский вход:
sudo -u postgres psql -U postgres
sudo -u postgres psql
Команды терминала psql
- \dt – показать все таблицы
- \q – выход из терминала psql
- \dn – показать все схемы
- \du – показать всех пользователей
- \d имя_таблицы - показать информацию о таблице
И помните, что в любой непонятной ситуации стоит обращаться к официальной документации: http://www.postgresql.org/docs/, которой, в отличии от доков к MySQL, удобно пользоваться ;-)