3
Клиент и сервер
подключение аутентификация
формирование запросов выполнение запросов
управление транзакциями поддержка транзакционности
протокол
PostgreSQL
клиент Python
psycopg2
клиент Java
JDBC
клиент SQL
libpq
Клиентское приложение — например, psql или любая другая
программа, написанная на любом языке программирования, —
подключается к серверу и как-то «общается» с ним. Чтобы клиент и
сервер понимали друг друга, они должны использовать один и тот же
протокол взаимодействия. Обычно клиент использует драйвер,
реализующий протокол и предоставляющий набор функций для
использования в программе. Внутри драйвер может пользоваться
стандартной реализацией протокола (библиотекой libpq), либо может
реализовать протокол самостоятельно.
Не так важно, на каком языке написан клиент — за разным синтаксисом
будут стоять возможности, определенные протоколом. Мы будем
использовать для примеров язык SQL с помощью клиента psql.
Конечно, в реальной жизни никто не пишет клиентскую часть на SQL,
но для учебных целей это удобно. Мы рассчитываем, что сопоставить
команды SQL с аналогичными возможностями вашего любимого языка
программирования не составит для вас большого труда.
Если говорить в самых общих чертах, протокол позволяет клиенту
подключиться к одной из баз данных кластера. При этом сервер
выполняет аутентификацию — решает, можно ли разрешить
подключение, например, запросив пароль.
Далее клиент посылает серверу запросы на языке SQL, а сервер
выполняет их и возвращает результат. Наличие мощного и удобного
языка запросов — одна из особенностей реляционных СУБД.
Другая особенность — поддержка согласованной работы транзакций.