Статьи

Хостинг PostgreSQL с Heroku

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

Heroku Postgres — это надежная и мощная база данных как услуга, основанная на PostgreSQL, предоставляемая Heroku. Размещение ваших данных с Heroku позволяет вам больше сосредоточиться на написании SQL-кода вашего приложения, а не на том, как стать администратором баз данных.

В этой статье я покажу вам, как начать работу с Heroku Postgres. Я поделюсь некоторыми преимуществами использования Heroku, покажу, как зарегистрироваться, и покажу, как легко настроить размещенный экземпляр базы данных PostgreSQL и подключиться к нему из PHP с помощью PDO.

Почему Героку?

Перед лицом серьезного выбора неплохо взвесить все за и против, прежде чем принимать окончательное решение. В основе практически любого веб-приложения в настоящее время лежат его данные, поэтому выбор правильной стратегии базы данных, вероятно, важнее, чем думает большинство людей. Heroku Postgres может не подойти вам, но как вы узнали?

Heroku Postgres — это многоуровневое предложение, самое низкое из которых стоит 200 долларов в месяц. Если вы разработчик, который хочет просто поработать и узнать что-то новое, это может стать для вас преградой. (Было бы неплохо, если бы Heroku могла предложить какую-то ограниченную бесплатную пробную версию для разработчиков в будущем, чтобы больше людей могли научиться работать со своими предложениями.) С другой стороны, 200 долларов — это всего лишь капля в море для успешного веб-приложение. Это определенно дешевле, чем использовать собственное оборудование и расходы на персонал для поддержания базы данных и соблюдения любых соответствующих норм.

Создать экземпляр базы данных невероятно легко, и вы можете обновить или понизить уровень в соответствии с вашими потребностями. На самом деле, простота создания базы данных с помощью Heroku Postgres облегчает одну из часто встречающихся жалоб на PostgreSQL — ее трудно установить. Heroku претендует на звание крупнейшего поставщика услуг баз данных PostgreSQL. Учитывая эту шкалу, имеет смысл позволить экспертам управлять вашей базой данных.

Heroku обещает 99,99% безотказной работы, и сделал некоторые впечатляющие вещи для достижения этой цели. Транзакции постоянно архивируются в географически распределенном хранилище данных, и каждые 30 секунд выполняются автоматические проверки работоспособности, чтобы обеспечить доступность вашей базы данных. Вы вводите одну команду, а Heroku буквально заботится обо всем остальном.

Heroku допускает практически неограниченное количество данных, поэтому большие наборы данных и хранилища данных не являются проблемой. Их планы оцениваются в соответствии с оперативным набором данных, той частью ваших данных, к которой обращаются чаще всего и которая остается в оперативной памяти по соображениям производительности. Самый низкий уровень поддерживает 1,7 ГБ горячих данных, а самый высокий — 68 ГБ.

Настройка экземпляра базы данных

Зарегистрироваться на сервис Heroku Postgres очень просто. Просто зайдите на postgres.heroku.com в вашем браузере и нажмите кнопку Зарегистрироваться сейчас в середине страницы. Если у вас уже есть учетная запись Heroku, вы можете просто указать адрес электронной почты и пароль, которые вы использовали для нее, и вы войдете в систему. В противном случае вы можете создать новую учетную запись сейчас.

Конечно, вам нужно будет предоставить данные вашей кредитной карты, чтобы оплатить услугу Heroku Postgres. Если вы только что создали новую учетную запись, вы попадете на страницу «Проверка учетной записи», где вы сможете предоставить необходимую информацию.

После того как вы вошли в систему и подтвердили, и если вы еще не просматриваете ее, перейдите на страницу «Ваши базы данных», доступную из записи «Ваши БД» в верхнем меню. Эта страница является информационной панелью, с которой вы можете отслеживать и управлять всеми вашими экземплярами базы данных.

Нажмите +, на который указывает стрелка, чтобы добавить базу данных; вам будет представлен список планов, из которых вы можете выбрать. Выберите нужный план, а затем кнопку «Добавить базу данных», чтобы подтвердить выбор.

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

Взаимодействие с PHP

Теперь, когда у вас запущена облачная база данных PostgreSQL, давайте попробуем взаимодействовать с ней из PHP.

Подключитесь к базе данных с помощью интерактивного терминального клиента PostgreSQL. Если вы используете PostgreSQL локально, у вас уже будет установлен клиент; в противном случае вам придется обратиться к пакету управления пакетами вашей платформы (например, в Ubuntu запустить sudo apt-get install postgresql-clientpostgresql.org , где вы найдете доступные для загрузки готовые бинарные пакеты, подходящие для FreeBSD. , Linux, Mac, Solaris и Windows, а также другие варианты установки.

Для подключения вызовите psql-h-U

  тимофей @ zarkov: ~ $ psql -h ec2-184-73-194-179.compute-1.amazonaws.com 
  -U dj1wcxb3x9fy3x5 ul28zxpr39no1rr
 Пароль для пользователя ul28zxpr39no1rr: ********
 PSQL (8.4.9, сервер 9.0.5)
 ВНИМАНИЕ: psql версия 8.4, версия сервера 9.0.
          Некоторые функции psql могут не работать.
 SSL-соединение (шифр: DHE-RSA-AES256-SHA, биты: 256)
 Напечатайте «помощь» для помощи.

dj1wcxb3x9fy3x5 =>

Создайте таблицу для хранения некоторой информации о сотрудниках, используя следующий SQL:

 CREATE TABLE employees (
    employee_id SERIAL,
    last_name VARCHAR(30),
    first_name VARCHAR(30),
    title VARCHAR(50)
);

employee_idSERIALemployee last_namefirst_nametitleVARCHAR

Затем вставьте несколько записей в таблицу, чтобы в ней были данные для работы:

 INSERT INTO employees (last_name, first_name, title) VALUES
    ('Abreu', 'Mark', 'Project Coordinator'),
    ('Nyman', 'Larry', 'Security Engineer'),
    ('Simmons', 'Iris', 'Software Architect'),
    ('Miller', 'Anthony', 'Marketing Manager'),
    ('Leigh', 'Stephen', 'UI Developer'),
    ('Lee', 'Sonia', 'Business Analyst');

Как и в случае с терминальным клиентом, большинство разработчиков, вероятно, будут использовать версию PHP, установленную с использованием инструментов управления пакетами. Если это так, расширения PostgreSQL можно включить в PHP, установив поддержку PostgreSQL (например, sudo apt-get install php5-pgsql

На самом деле есть два возможных расширения PHP, которые вы можете использовать для работы с PostgreSQL — расширение PostgreSQL, которое, по сути, является оболочкой для клиентской библиотеки C libpq, и PDO, использующее драйвер PDO_PGSQL . Оба обычно устанавливаются вместе, но здесь я буду использовать PDO, поскольку он предлагает согласованный API для работы с различными базами данных и обычно рассматривается как подходящий интерфейс для работы с базами данных в современном профессиональном коде.

Соединение устанавливается путем создания нового объекта PDO, передавая строку DSN (имя источника данных) во время создания экземпляра. Строка содержит информацию, отображаемую в разделе «Параметры подключения» для базы данных.

 <?php
$dsn = "pgsql:"
    . "host=ec2-184-73-194-179.compute-1.amazonaws.com;"
    . "dbname=ul28zxpr39no1rr;"
    . "user=dj1wcxb3x9fy3x5;"
    . "port=5432;"
    . "sslmode=require;"
    . "password=p28xwd9pjcrzyzp6mf74m99cze";

$db = new PDO($dsn);

DSN начинается с «pgsql», чтобы указать использование драйвера PDO_PGSQL, а затем каждый фрагмент информации представляется в виде пары ключ = значение, разделенной точкой с запятой.

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

 <html>
 <head>
  <title>Employees</title>
 </head>
 <body>
  <table>
   <thead>
    <tr>
     <th>Employee ID</th>
     <th>Last Name</th>
     <th>First Name</th>
     <th>Title</th>
    </tr>
   </thead>
   <tbody>
<?php
$query = "SELECT employee_id, last_name, first_name, title "
     . "FROM employees ORDER BY last_name ASC, first_name ASC";
$result = $db->query($query);
while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
    echo "<tr>";
    echo "<td>" . $row["employee_id"] . "</td>";
    echo "<td>" . htmlspecialchars($row["last_name"]) . "</td>";
    echo "<td>" . htmlspecialchars($row["first_name"]) . "</td>";
    echo "<td>" . htmlspecialchars($row["title"]) . "</td>";
    echo "</tr>";
}
$result->closeCursor();
?>
   </tbody>
  </table>
 </body>
</html>

Здесь код предполагает, что было выполнено создание экземпляра $db

Записанный соответствующей HTML-разметкой для отображения таблицы, код перебирает извлеченные записи и выводит каждое поле. Наконец, курсор результатов закрывается, чтобы освободить соединение с сервером.

Вывод скрипта похож на следующий:

Резюме

Все больше и больше разработчиков осознают, что имеет смысл передать свою базу данных на хостинг облачным сервисам, таким как Heroku. Это позволяет вам больше сосредоточиться на написании кода вашего приложения и нескольких запросов SQL, а не на том, как стать администратором базы данных.

В этой статье вы увидели, как легко зарегистрироваться и начать использовать Heroku Postgres. Весь процесс буквально занимает минуты от начала до конца, и вы можете подключиться к базе данных из PHP с помощью PDO, как и любая другая база данных PostgreSQL.

Если ваше веб-приложение использует PostgreSQL, вам определенно следует изучить предложения Heroku. Вы можете обнаружить, что они точно для вас.

Изображение через Йожефа Багота / Shutterstock