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