А теперь насчет Postgresql
Mar. 13th, 2010 10:57 amЯ тут таки закончил кодогенератор на F# и запустил ноччу конвертировать базу в PGSQL.
Работало оно у меня два часа на базе с 20 таблицами и около 2.5 млн объектов, в результате получилось 1.3 гига на сервере и 500 мег нескомпрессированного дампа базы.
Но больше меня интересует другой аспект.
Я сейчас снял снифером дамп взаимодействия клиента и сервера и просто пребываю в шоке. Я сделал заранее препарированный запрос, с bind-параметрами, как положено, подставляю нужные значения и делаю выполнение запроса. А оно на сервер шлет его в виде тупого плейн-текста, т.е. insert into (поля) values (все значения параметров в виде строк).
Для интереса сделал то же самое с Firebird - вроде там все культурно - т.е. сначала препаре запроса, а потом посылка хендла запроса со списком текущих параметров на на выполнение.
Потом сделал select * from table на Postgresql - тоже вроде культурно, шлет бинарный поток с данными.
Это скажите - у меня клиентский софт такой тупой, или я тупой, и сейчас insert модно делать в лоб текстом и парсить запрос с параметрами на клиентской стороне?
Причем это ж все с кучей проблем типа того, что текст запроса будет зависеть от кучи параметров локали которые нужно учитывать.
Так што текстовый бэкап PGSQL - это не обязательно сознательное решение разработчиков, а вполне может оказаться "сделано по историческим причинам, потому что всегда разговаривали с сервером в тексте". Хотя нет - счас проверил pg_dump - читает он с сервера бинарнейший дальше некуда поток.
Работало оно у меня два часа на базе с 20 таблицами и около 2.5 млн объектов, в результате получилось 1.3 гига на сервере и 500 мег нескомпрессированного дампа базы.
Но больше меня интересует другой аспект.
Я сейчас снял снифером дамп взаимодействия клиента и сервера и просто пребываю в шоке. Я сделал заранее препарированный запрос, с bind-параметрами, как положено, подставляю нужные значения и делаю выполнение запроса. А оно на сервер шлет его в виде тупого плейн-текста, т.е. insert into (поля) values (все значения параметров в виде строк).
Для интереса сделал то же самое с Firebird - вроде там все культурно - т.е. сначала препаре запроса, а потом посылка хендла запроса со списком текущих параметров на на выполнение.
Потом сделал select * from table на Postgresql - тоже вроде культурно, шлет бинарный поток с данными.
Это скажите - у меня клиентский софт такой тупой, или я тупой, и сейчас insert модно делать в лоб текстом и парсить запрос с параметрами на клиентской стороне?
Причем это ж все с кучей проблем типа того, что текст запроса будет зависеть от кучи параметров локали которые нужно учитывать.
Так што текстовый бэкап PGSQL - это не обязательно сознательное решение разработчиков, а вполне может оказаться "сделано по историческим причинам, потому что всегда разговаривали с сервером в тексте". Хотя нет - счас проверил pg_dump - читает он с сервера бинарнейший дальше некуда поток.