50.2. Как устанавливаются соединения#

50.2. Как устанавливаются соединения

50.2. Как устанавливаются соединения

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

Клиентский процесс может быть любой программой, которая понимает протокол Tantor SE, описанный в Глава 53. Многие клиенты основаны на библиотеке на языке C libpq, но существуют также независимые реализации протокола, такие как драйвер JDBC для Java.

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