The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"Доступен Pgfe 2, клиентский C++ API к PostgreSQL"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Доступен Pgfe 2, клиентский C++ API к PostgreSQL"  +/
Сообщение от opennews (??), 18-Апр-22, 22:05 
Опубликован первый стабильный выпуск Pgfe 2 (PostGres FrontEnd), продвинутого и многофункционального драйвера (клиентский API) для PostgreSQL, написанного на языке C++ и упрощающего работу с PostgreSQL в проектах на C++. Код проекта распространяется под лицензией Apache 2.0. Для сборки требуется компилятор с поддержкой стандарта C++17...

Подробнее: https://www.opennet.ru/opennews/art.shtml?num=57039

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "Доступен Pgfe 2, клиентский C++ API к PostgreSQL"  +/
Сообщение от Аноним (1), 18-Апр-22, 22:05 
Есть сравнение с libpqxx?
Ответить | Правка | Наверх | Cообщить модератору

8. "Доступен Pgfe 2, клиентский C++ API к PostgreSQL"  +3 +/
Сообщение от Аноним (8), 19-Апр-22, 02:51 
libpq на чистом C очень простая, приятная и удобная в работе вещь! Забудь про биндинги к плюсам (за исключением универсальных либ с возможностью поменять драйвер СУБД), там сложнее и хуже.

P.S. Я серьезно, постгрес один из немногих случаев, когда сразу сделано нормально и удобно.

Ответить | Правка | Наверх | Cообщить модератору

17. "Доступен Pgfe 2, клиентский C++ API к PostgreSQL"  +/
Сообщение от Аноним (17), 19-Апр-22, 12:18 
>Забудь про биндинги к плюсам

Без классов - не по феншую.

Ответить | Правка | Наверх | Cообщить модератору

26. "Доступен Pgfe 2, клиентский C++ API к PostgreSQL"  +/
Сообщение от Аноним (26), 19-Апр-22, 21:20 
> Без классов - не по феншую.

Реализации классов типа DBconnection/dataset поверх чисто сишной libpq получаются очень компактными и простыми. И здесь во многом заслуга сишного API libpq.

Умещался в 2 модуля .cpp/.h: самый большой - меньше 1000 строк, в сумме - около 2000 строк. Ради такой фигни выбирать отдельную либу как-то и не хочется... RAII/подходящий variant/логи,обработку ошибок,исключения и т.д. проще самому добавить по вкусу.

Ответить | Правка | Наверх | Cообщить модератору

30. "Доступен Pgfe 2, клиентский C++ API к PostgreSQL"  +/
Сообщение от adolfus (ok), 23-Апр-22, 02:10 
ООП плохо стыкуется с базами данных. Причем на всех уровнях -- от ISAM, что внизу, до SQL, что над ним. Паридигмы несовместимы. В С++ выручает только то, что это не ОО язык, а язык с некоторыми элементами ООП, которые можно просто отодвинуть в сторону. На бейсике удобнее с базами работать, нежели на любом из ОО языков.
Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

20. "Доступен Pgfe 2, клиентский C++ API к PostgreSQL"  +4 +/
Сообщение от dmitigremail (ok), 19-Апр-22, 17:20 
Если вкратце, то Pgfe предоставляет гораздо более богатый набор возможностей, современней и является отечественным ПО ;-)
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

5. Скрыто модератором  –9 +/
Сообщение от Аноним (5), 18-Апр-22, 23:38 
Ответить | Правка | Наверх | Cообщить модератору

6. Скрыто модератором  –7 +/
Сообщение от Аноним (6), 19-Апр-22, 01:13 
Ответить | Правка | Наверх | Cообщить модератору

7. Скрыто модератором  +1 +/
Сообщение от Заноним (?), 19-Апр-22, 02:50 
Ответить | Правка | Наверх | Cообщить модератору

9. Скрыто модератором  +2 +/
Сообщение от aaaaa (?), 19-Апр-22, 02:55 
Ответить | Правка | К родителю #6 | Наверх | Cообщить модератору

12. Скрыто модератором  +/
Сообщение от Аноним (12), 19-Апр-22, 07:49 
Ответить | Правка | К родителю #6 | Наверх | Cообщить модератору

13. Скрыто модератором  +/
Сообщение от Аноним (13), 19-Апр-22, 07:51 
Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору

10. "Доступен Pgfe 2, клиентский C++ API к PostgreSQL"  +2 +/
Сообщение от Аноним (10), 19-Апр-22, 03:14 
Когда-то писал свой драйвер Postges для C++. Подключение было неблокирующее по бинарному протоколу с динамической генерацией конвертации из бинарных данных Postgres в переменные C++ и обратно. С помощью шаблонов во время компиляции определялся тип переменной C++, а во время рантайма запрашивались типы полей в базе. Так становилось понятно, какие типы куда конвертировать. Далее генерировались функции преобразования из, например, PG:bigint в C++:int32 для ответов и обратно для запросов. Для этого изначально компилировался объектник с разными преобразованиями и из него в mmaped память копировались тела нужных функций в нужном порядке с релокациями (в результате для преобразования нужно было обратиться к одной большой функции конвертации через указатель - остальное линейный код, т.е. для select bigint, real, varchar в int, float, string генерировалась фукнция преобразования трех переменных из байтового массива, пришедшего от Postgres). Делается через mmap(), запись туда кода, mprotect(m, size, PROT_READ | PROT_EXEC) и вызов кода по указателю (в общем, все, как в Java/UPX).

Забурился на том, что для генерации работы с std::string пришлось разбираться, что делать с исключениями (а там не просто скопировать сишную функцию с релокацией, там еще нужно обеспечить раскрутку стека, если, например, создание строки бросит исключение).

P.S. Конвейерная передача запросов (pipeline) имеет жесткое и неприятное ограничение - в случае ошибки в одном запросе все последующие отменяются и это нужно отслеживать.

Ответить | Правка | Наверх | Cообщить модератору

11. "Доступен Pgfe 2, клиентский C++ API к PostgreSQL"  +1 +/
Сообщение от aaaaa (?), 19-Апр-22, 04:24 
как в сравнении с yandex/ozo?
Ответить | Правка | Наверх | Cообщить модератору

21. "Доступен Pgfe 2, клиентский C++ API к PostgreSQL"  +1 +/
Сообщение от dmitigremail (ok), 19-Апр-22, 17:27 
Гораздо больше возможностей. В версии 2.1 будет добавлен API асинхронного ввода/вывода на базе обратных вызовов, что позволит использовать Pgfe в приложениях с циклом событий на базе разных его реализаций (в первую очередь, на базе libuv, но, вероятно, будет и поддержка ASIO, как в Ozo).
Ответить | Правка | Наверх | Cообщить модератору

22. "Доступен Pgfe 2, клиентский C++ API к PostgreSQL"  +/
Сообщение от aaaaa (?), 19-Апр-22, 18:42 
Дмитрий, приветствую! Спасибо за обратную связь!
Поддержка asio была бы замечательным дополнением.
Я в своем web frameworkе использую boost.asio + boost.beast и в качестве backendа для pgsql ковыряю ozo, но в ozo смущает медленное развитие и отсутствие коммитов уже год.
Ответить | Правка | Наверх | Cообщить модератору

23. "Доступен Pgfe 2, клиентский C++ API к PostgreSQL"  +1 +/
Сообщение от dmitigremail (ok), 19-Апр-22, 19:44 
Постараюсь добавить поддержку ASIO. Issue по данной задаче -- https://github.com/dmitigr/pgfe/issues/14

По любой проблеме можете смело открывать issue ;-)

Ответить | Правка | Наверх | Cообщить модератору

14. "Доступен Pgfe 2, клиентский C++ API к PostgreSQL"  +3 +/
Сообщение от Аноним (-), 19-Апр-22, 08:11 
Как ни крути, а библиотеки должны быть с сишным интерфейсом.
Ответить | Правка | Наверх | Cообщить модератору

15. "Доступен Pgfe 2, клиентский C++ API к PostgreSQL"  –4 +/
Сообщение от Аноним (15), 19-Апр-22, 10:25 
Прикол в том, что для конечного программиста максимально удобной является обертка в ООП, причем даже визуальное или полу-визуальное. Фиг знает, как это правильно объяснить. Но мне вот самому не удобно работать со всеми этими низкоуровневыми интерфейсами, так что возникает естественное желание обернуть все в ООП. Оно естественное чисто потому, что так тупо будет меньше кода. А количество кода = трудозатраты программиста. Так зачем каждый раз изобретать велосипед? Именно поэтому мне нравится идея Delphi/Lazarus и очень жаль, что для C++ нет свободной альтернативы C++ Builder.
Ответить | Правка | Наверх | Cообщить модератору

16. "Доступен Pgfe 2, клиентский C++ API к PostgreSQL"  +/
Сообщение от Аноним (16), 19-Апр-22, 10:32 
Для этого есть Qt. Но есть нюанс :]
Ответить | Правка | Наверх | Cообщить модератору

19. "Доступен Pgfe 2, клиентский C++ API к PostgreSQL"  +/
Сообщение от Аноним (12), 19-Апр-22, 13:57 
> максимально удобной является обертка в ООП

Ты путаешь язык и парадигму. ООПить можно хоть на ассемблере.

Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

24. "Доступен Pgfe 2, клиентский C++ API к PostgreSQL"  +/
Сообщение от Аноним (-), 19-Апр-22, 19:58 
Удобство это только одна сторона медали.
Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

25. "Доступен Pgfe 2, клиентский C++ API к PostgreSQL"  +/
Сообщение от Аноним (-), 19-Апр-22, 19:59 
>Но мне вот самому не удобно работать со всеми этими низкоуровневыми интерфейсами, так что возникает естественное желание обернуть все в ООП

Вам так часто нужно наследование?

Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру