Что такое PostgreSQL?

«Что такое PostgreSQL?» — вопрос из категории Базы данных, который задают на 25% собеседований C/C++ Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

PostgreSQL — это мощная, открытая, объектно-реляционная система управления базами данных (СУБД). Она известна своей надежностью, строгим соответствием стандартам SQL, расширяемостью и поддержкой сложных нагрузок.

Ключевые особенности:

  • Расширяемость: Позволяет создавать пользовательские типы данных, функции, операторы и даже процедурные языки (например, PL/pgSQL).
  • Поддержка ACID: Полная поддержка транзакций, обеспечивающая целостность данных.
  • Модель параллелизма MVCC (Multiversion Concurrency Control): Позволяет выполнять чтение без блокировок на запись, что повышает производительность в многопользовательской среде.
  • Богатый набор типов данных: Помимо стандартных реляционных типов, поддерживает JSON/JSONB, XML, массивы, диапазоны, геопространственные данные (PostGIS).
  • Сложные запросы: Эффективная обработка сложных соединений, подзапросов, оконных функций и рекурсивных запросов (CTE).

Пример подключения на C++ с использованием библиотеки libpqxx:

#include <iostream>
#include <pqxx/pqxx>

int main() {
    try {
        // Создание соединения
        pqxx::connection conn("host=localhost dbname=test user=postgres password=secret");
        if (conn.is_open()) {
            std::cout << "Connected to " << conn.dbname() << std::endl;

            // Выполнение простого запроса
            pqxx::work txn(conn);
            pqxx::result r = txn.exec("SELECT id, name FROM users");

            for (auto row : r) {
                std::cout << "ID: " << row[0].as<int>() 
                          << ", Name: " << row[1].as<std::string>() << std::endl;
            }
            txn.commit();
        }
    } catch (const std::exception &e) {
        std::cerr << "Error: " << e.what() << std::endl;
        return 1;
    }
    return 0;
}