metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2010-03-13 10:57 am

А теперь насчет Postgresql

Я тут таки закончил кодогенератор на F# и запустил ноччу конвертировать базу в PGSQL.
Работало оно у меня два часа на базе с 20 таблицами и около 2.5 млн объектов, в результате получилось 1.3 гига на сервере и 500 мег нескомпрессированного дампа базы.

Но больше меня интересует другой аспект.
Я сейчас снял снифером дамп взаимодействия клиента и сервера и просто пребываю в шоке. Я сделал заранее препарированный запрос, с bind-параметрами, как положено, подставляю нужные значения и делаю выполнение запроса. А оно на сервер шлет его в виде тупого плейн-текста, т.е. insert into (поля) values (все значения параметров в виде строк).

Для интереса сделал то же самое с Firebird - вроде там все культурно - т.е. сначала препаре запроса, а потом посылка хендла запроса со списком текущих параметров на на выполнение.

Потом сделал select * from table на Postgresql - тоже вроде культурно, шлет бинарный поток с данными.

Это скажите - у меня клиентский софт такой тупой, или я тупой, и сейчас insert модно делать в лоб текстом и парсить запрос с параметрами на клиентской стороне?
Причем это ж все с кучей проблем типа того, что текст запроса будет зависеть от кучи параметров локали которые нужно учитывать.

Так што текстовый бэкап PGSQL - это не обязательно сознательное решение разработчиков, а вполне может оказаться "сделано по историческим причинам, потому что всегда разговаривали с сервером в тексте". Хотя нет - счас проверил pg_dump - читает он с сервера бинарнейший дальше некуда поток.

[identity profile] theiced.livejournal.com 2010-03-13 12:55 pm (UTC)(link)
а вот теперь расскажите как вы это делаете и чейтали ли вы http://www.postgresql.org/docs/8.4/interactive/sql-prepare.html

[identity profile] metaclass.livejournal.com 2010-03-13 01:02 pm (UTC)(link)
Т.е. prepare нужно вызывать явно? :)
Я наивно предполагаю, что если я вызываю mQuery.Prepare то это должно произойти само собой волшебным образом, как в Firebird :)

[identity profile] theiced.livejournal.com 2010-03-13 01:26 pm (UTC)(link)
в этом случае оно будет на клиенте делать вроде (клиент депендант??!). как то так. меня это особо не грузило, так что не разбираюсь.

[identity profile] metaclass.livejournal.com 2010-03-13 01:05 pm (UTC)(link)
Почитал, забавненько.
Если бы не кодогенератор, я бы сейчас свои запросы еще неделю переписывал на это дело :)