Psycopg: 20 years of mostly friendly coexistence with libpq (PConf.dev 2026)

15 подписчиков

12+
12+

4 просмотра

3 дня назад

ПожаловатьсяНарушение авторских прав

Psycopg: 20 years of mostly friendly coexistence with libpq (PConf.dev 2026)

15 подписчиков

12+
12+

4 просмотра

3 дня назад

ПожаловатьсяНарушение авторских прав
12+
12+

4 просмотра

3 дня назад

Psycopg: 20 лет в основном дружественного сосуществования с libpq (Psycopg: 20 years of mostly friendly coexistence with libpq) PGConf.dev 2026 Представлено Даниэле Варраццо (Daniele Varrazzo) на PGConf.dev 2026 (https://2026.pgconf.dev) Psycopg является де-факто стандартным адаптером PostgreSQL для Python (или, в зависимости от того, кого спросить, адаптером Python для PostgreSQL). С самого начала Psycopg был построен поверх libpq — официальной C-библиотеки клиента PostgreSQL. Этот выбор дизайна принёс явные преимущества: libpq берёт на себя сложность проводного протокола, управление состоянием запросов и многие низкоуровневые детали, избавляя пользователей от целого класса ошибок, обеспечивая при этом надёжную производительность на языке, который исторически не славился своей сырой скоростью. В то же время, использование внешней C-библиотеки сопряжено с компромиссами. Сборка и развёртывание становятся более сложными; необходимо делать выбор между строгой изоляцией и интеграцией с системой; могут возникать тонкие проблемы с зависимостями. По этим причинам многие альтернативные драйверы PostgreSQL в экосистеме Python предпочли полностью обойти libpq и работать непосредственно на уровне протокола. Даже при использовании libpq её абстракции не всегда идеально соответствуют потребностям клиентов более высокого уровня. Psycopg 3, вероятно, является одним из самых требовательных потребителей libpq, и за эти годы ему несколько раз приходилось перереализовывать значительные части функциональности, которые, как можно было бы обоснованно ожидать, должна предоставлять сама libpq. Мы обсудим несколько конкретных примеров: История успеха: конвейерный режим (pipeline mode), благодаря работе Саймона — одному из его многих непреходящих даров экосистеме PostgreSQL. Менее удачный опыт: асинхронные соединения и удивительное количество функциональности, которое приходится переписывать, когда в игру вступают таймауты. Будущая задача: поддержка логической репликации, которая может потребовать «просверлить дыру» в libpq для доступа к нижележащему сокету. Этот доклад размышляет о двух десятилетиях в значительной степени успешного сотрудничества между Psycopg и libpq. Освещая болевые точки, с которыми мы столкнулись, мы надеемся повлиять на будущую эволюцию libpq, установить реалистичные ожидания для авторов клиентов и прояснить, что перереализация функциональности — это не провал, а просто признание того, что libpq, какой бы мощной она ни была, не может решить все проблемы. https://2026.pgconf.dev/session/520

, чтобы оставлять комментарии