powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / ...и снова MSSQL 2008 R2 vs PostgreSQL
92 сообщений из 92, показаны все 4 страниц
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38015342
derevyankoal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тема возможно поднималась неоднократно, но за 2 часа чтения форума ответа на свой вопрос так и не нашел.
Какие преимущества PostgreSQL 9.0 над MSSQL 2008 R2? Если они есть.
Сам с PostgreSQL никогда не работал, но человек убеждает, что эта СУБД круче и предлагает остановится на ней.
Интересуют мнения людей которые использовали оба продукта.

P.S. Что планируется. База размером 20-40Гб, нагрузка в пике 250-300 подключений, работать будет скорее всего под WinServer 2003. База для фин.организации, соответственно никаких varbinary/IMG/ntext полей не будет.

P.S.S. Вопрос цены не стоит, лицензия на MSSQL есть.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38015415
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
derevyankoal Какие преимущества PostgreSQL 9.0 над MSSQL 2008 R2?Какой ты однако непонятливый: человек убеждает, что эта СУБД круче
А если серьезно.
Приложению совсем совсем пофиг куда подключатся? Что говорят авторы?
Чья пятая точка будет страдать если база задуркует? (не по вашей вине конечно, просто так совпало с фазой луны)
Кто и сколько человек будут поддерживать вашу базу? А если ваш гуру будет в отпуске?
Короче вопрос совсем совсем не технический. И да, слоном я не пользовался, так что моим мнением можно не интересоватся.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38015486
derevyankoal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257Короче вопрос совсем совсем не технический.

Насчет того, что вопрос не совсем технический, я знаю. Изначально стоял вопрос разработки на MS SQL, но один из разработчиков очень рекламирует PostgreS. О преимуществах MS SQL я в курсе(я с ним работаю), а с PostgreS не работал вообще. Почему собственно и задал вопрос тем, кто работал в обеими продуктами.
Может в PostgreSQL маштабируемость лучше, скорость, может "фичи" какие есть аля Oracle, может он не падает никогда или его освоить можно за 2 дня... и т.д.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38015546
derevyankoalSERG1257Короче вопрос совсем совсем не технический.

Насчет того, что вопрос не совсем технический, я знаю. Изначально стоял вопрос разработки на MS SQL, но один из разработчиков очень рекламирует PostgreS. О преимуществах MS SQL я в курсе(я с ним работаю), а с PostgreS не работал вообще. Почему собственно и задал вопрос тем, кто работал в обеими продуктами.
Может в PostgreSQL маштабируемость лучше, скорость, может "фичи" какие есть аля Oracle, может он не падает никогда или его освоить можно за 2 дня... и т.д.
Ничего этого там нет. Из плюшек в отличие от MS SQL, первое - бесплатность, второе - родная версионность.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38015604
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
derevyankoalИзначально стоял вопрос разработки на MS SQL, но один из разработчиков
очень рекламирует PostgreS.
Если в конторе лицензионный MS и к нему прилагается хорошо дрессированный админ, то каким
боком в команду разработчиков затесался слоновий красноглазик, да ещё и голос подаёт?
Уволить его нахрен и нету проблемы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38015793
Фотография Asm64D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
derevyankoal...
работать будет скорее всего под WinServer 2003 .
...
P.S.S. Вопрос цены не стоит, лицензия на MSSQL есть.
В вашем случае оставляйте выбор на MSSQL
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38015818
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бесплатность и родная версионносИз плюшек в отличие от MS SQL, первое - бесплатность, второе - родная версионность.

Дедушка Фрэйд был бы доволен фразой... Кроме бесплатности и родной (интересно кому и зачем) версионности - других плюшек нет.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38015821
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только MSSQL! Финансовая организация, странно что вы вообще такие вопросы задаете.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38016229
Фотография gds
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovУволить его нахрен и нету проблемы.

+100500.

derevyankoal О преимуществах MS SQL я в курсе(я с ним работаю), а с PostgreS не работал вообще.

Ну так и пользуйте его. К тому же если есть лицензия.

p.s. Сам, давно работаю с Oracle и MSSQL, и проблем не знаю. Начинал с IB 6.5 потом FB, но волей судьбы перешел на Oracle, а потом и MSSQL. Сейчас иногда, по непонятным мне причинам, тянет освоить Слона.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38017008
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
derevyankoalТема возможно поднималась неоднократно, но за 2 часа чтения форума ответа на свой вопрос так и не нашел.
Какие преимущества PostgreSQL 9.0 над MSSQL 2008 R2? Если они есть.
Сам с PostgreSQL никогда не работал, но человек убеждает, что эта СУБД круче и предлагает остановится на ней.
Интересуют мнения людей которые использовали оба продукта.

P.S. Что планируется. База размером 20-40Гб, нагрузка в пике 250-300 подключений, работать будет скорее всего под WinServer 2003. База для фин.организации, соответственно никаких varbinary/IMG/ntext полей не будет.

P.S.S. Вопрос цены не стоит, лицензия на MSSQL есть.

"Круче" только яйца, да и то если сварены. ;-)
А так, оба сервера хороши.
Оба легко справятся с Вашими нагрузками.

Как программист работал и с тем, и с тем.
Лично мне больше нравиться PostgreSQL.
Это не значит, что MS SQL хуже, просто мне в PostgreSQL удобнее.

Как DBA... Ну в MS SQL репликация и кластеризация "из коробки", в PostgreSQL придется "пошаманить".
Да и в администрировании - PostgreSQL настраивать посложнее будет, зато если настроить, то внимания к нему поменьше, чем к MS SQL надо.
PostgreSQL может работать практически на любом сервере (грубо говоря, там где есть возможность запустить Linux, то там скорее всего можно запустить и PostgreSQL). MS SQL только на Windows.

А так, пусть "крутой" специалист подготовит экономическое обоснование для перехода с MS SQL на PostgreSQL.
Как говориться "иннициатива наказуема исполнением" ;-)
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38025321
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> *Какие преимущества PostgreSQL 9.0 над MSSQL 2008 R2?* Если они есть.


Их нет. Если не считать что PG бесплатный, и что там есть объектные расширения
(наследование таблиц).
А, ещё тонкий момент -- возможность выполнять запрос (один) параллельно. MSSQL
умеет, PG -- не знаю...

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38025322
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Ничего этого там нет. Из плюшек в отличие от MS SQL, первое - бесплатность,
> второе - родная версионность.

Она по сравнению с "неродной" мало что даёт.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38025323
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> *Какие преимущества PostgreSQL 9.0 над MSSQL 2008 R2?* Если они есть.
Сори, забыл ещё одно преимущество PostgreSQL -- кроссплатформенность.
Но это может быть не очень и важно -- есть винда в 64 бита.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38025347
MasterZiv
> *Какие преимущества PostgreSQL 9.0 над MSSQL 2008 R2?* Если они есть.


Их нет. Если не считать что PG бесплатный, и что там есть объектные расширения
(наследование таблиц).
А, ещё тонкий момент -- возможность выполнять запрос (один) параллельно. MSSQL
умеет, PG -- не знаю...


В PG нету InraQuery Parallelism.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38025699
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ведь наверняка в этой финорганизации уже стоит 100500 МС-ных серверов и скоре всего нету ни одного постгриса.
ЗАЧЕМ разводить зоопарк на ровном месте???
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026276
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бесплатность и родная версионнос Из плюшек в отличие от MS SQL, первое - бесплатность, второе - родная версионность.

Не только. Например FOR EACH ROW триггеры, секвенции (в отличие от MSSQL 2008), весьма навороченная работа с массивами (зачем - это другой вопрос).
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026461
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVвесьма навороченная работа с массивами (зачем - это другой вопрос).


Ну ч/з массивы делаются "цикличные" запросы. ;-)
Да и массивы, и способность создавать свои типы, очень приятная плюшка.
Например тип MAC-адрес и IP-адрес. :-)
В том же MS SQL только TSQL и есть, а в PotsgreSQL можно подключить например Java и писать процедуры на ней.
Так что плюшек у PostgreSQL много, но они не сравнимы с MS SQL.

Насчет производительности...
В году эдак 2002-2004 существовала "пузомерка", по которой PostgreSQL работал в 100 раз быстрее чем MS SQL.
Это ни о чем не говорит, но MS SQL-щики были всегда "не приятно удивлены". :-)
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026484
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
Ну ч/з массивы делаются "цикличные" запросы. ;-)
Да и массивы, и способность создавать свои типы, очень приятная плюшка.


Мне больше нравятся табличные типы в MSSQL (не помню, есть ли такое в PG), хотя они там и не доделаны, блин.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026492
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulспособность создавать свои типы, очень приятная плюшка.
Например тип MAC-адрес и IP-адрес. :-)это плюшка, не отличие
mad_nazgulВ том же MS SQL только TSQL и есть, а в PotsgreSQL можно подключить например Java и писать процедуры на ней.
а .NET можно прикрутить к ПГ? К MSSQL можно

mad_nazgulНасчет производительности... очень смешно )
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026498
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев Фёдор
mad_nazgulНасчет производительности... очень смешно )

Если учесть, что до 2005 в MSSQL с блокировками было всё оч. плохо, то, вероятно, можно придумать такой тест, в котором PG сильно опережает MSSQL.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026500
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVmad_nazgulНу ч/з массивы делаются "цикличные" запросы. ;-)
Да и массивы, и способность создавать свои типы, очень приятная плюшка.


Мне больше нравятся табличные типы в MSSQL (не помню, есть ли такое в PG), хотя они там и не доделаны, блин.

В PG любая таблица - тип.
Кроме того есть наследование.
Кроме того, можно создавать свои типы.
Кроме того вы в хранимой функции можете определить выходным параметром Recordset, с заданными столбцами и обращаться к ней как к таблице (Курсор не нужен!)
Зачем табличные типы?!

P.S. Работал и с тем, и с тем. Как программисту мне PostgreSQL больше нравиться, но это не значит что MS SQL плох. Просто "плюшки" PostgrSQL для меня удобнее, чем "плюшки" MS SQL.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026506
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulВ году эдак 2002-2004 существовала "пузомерка", по которой PostgreSQL работал в 100 раз быстрее чем MS SQL.
Это ни о чем не говорит, но MS SQL-щики были всегда "не приятно удивлены". :-)
Ну если это TPC тесты, то о чем то может говорит в принципе. Но что-то PG, вроде, там и в 2002-2004 не было, на скока помню. Хотя мож и пропустил: все же это может и не говорит ни о чем для обычных проектов.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026519
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
Зачем табличные типы?!



Вот здесь говорится зачем.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026520
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев Фёдорmad_nazgulспособность создавать свои типы, очень приятная плюшка.
Например тип MAC-адрес и IP-адрес. :-)это плюшка, не отличие
mad_nazgulВ том же MS SQL только TSQL и есть, а в PotsgreSQL можно подключить например Java и писать процедуры на ней.
а .NET можно прикрутить к ПГ? К MSSQL можно


Для PostgreSQL в принципе нет "принципального" запрета на использование .NET в хранимых процедурах.
API открыт, так что при желании и кучи свободного времени можно добавить еще один язык (C#) для написания хранимых процедур.
Проблема в том, что это никому не надо. Даже доступ к БД (npgsql) еще не допилен до нормального состояния.

Зайцев Фёдорmad_nazgulНасчет производительности... очень смешно )

Как раз смешно, т.к. было правдой! ;-)
Это я к тому, что всегда можно подобрать набор тестов, где та или иная СУБД будет "на коне" по сравнению с остальными.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026531
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVmad_nazgul
Зачем табличные типы?!



Вот здесь говорится зачем.

О чем я и говорил :-)
В PostgreSQL это давно есть и используется, только чуть-чуть по другому. :-)
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026537
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulFreemanZAVпропущено...


Вот здесь говорится зачем.

О чем я и говорил :-)
В PostgreSQL это давно есть и используется, только чуть-чуть по другому. :-)

Насколько я знаю, в PG есть временные таблицы, которые можно создавать на "лету", конкретно такой реализации табличных типов нет. Я могу ошибаться, но хотелось бы как здесь говорят "тынц".
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026584
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVНасколько я знаю, в PG есть временные таблицы, которые можно создавать на "лету", конкретно такой реализации табличных типов нет. Я могу ошибаться, но хотелось бы как здесь говорят "тынц".

Для этого есть
1) Типы
2) Recordset
3) Наследование

Грубо говоря я могу создать тип и возвращать его множество.
Либо я могу создать хранимую функцию и возвращать Recordset, столбцы задаются выходными параметрами функции.

P.S. Спорить смысла не вижу, т.к. Вам "плюшки" MS SQL более значимы, чем для меня. :-)
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026594
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul

Грубо говоря я могу создать тип и возвращать его множество.
Либо я могу создать хранимую функцию и возвращать Recordset, столбцы задаются выходными параметрами функции.


И над всем этим можно выполнять операции DML?
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026621
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulFreemanZAVНасколько я знаю, в PG есть временные таблицы, которые можно создавать на "лету", конкретно такой реализации табличных типов нет. Я могу ошибаться, но хотелось бы как здесь говорят "тынц".

Для этого есть
1) Типы
2) Recordset
3) Наследование

Грубо говоря я могу создать тип и возвращать его множество.
Либо я могу создать хранимую функцию и возвращать Recordset, столбцы задаются выходными параметрами функции.

P.S. Спорить смысла не вижу, т.к. Вам "плюшки" MS SQL более значимы, чем для меня. :-)спорить не надо, но хотелось бы какой-то пример как оно выглядит на разных СУБД
это действительно было бы полезным
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026631
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVИ над всем этим можно выполнять операции DML?

Если только обернуть во View.
Над View можно делать DML, только правила нужно прописать.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026647
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul,

Да еще наследование.
Т.е. можно создать потомка другой таблицы.
Причем с потомка могут быть видны данные как родителя, так и потомка.

Т.е. "плюшки" у PostgreSQL, они то что можно в MS SQL в PostgreSQL тоже можно, но чуть-чуть подругому :-)

Если хотите узнать о "плюшках" PostgreSQL то dfv сюда
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026876
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulFreemanZAVИ над всем этим можно выполнять операции DML?

Если только обернуть во View.
Над View можно делать DML, только правила нужно прописать.

Честно - не понял. Табличные типы используются в процедурах. Т.е. получается, что в PG в plsql коде надо нечто обернуть во view, прописать правила, а потом уже использовать? Мне кажется это не оч. удобным. Большой плюс табличных типов в MSSQL как раз в том, что достаточно только объявить переменную (синтаксис схож с create table, можно и индексы определить), а потом пользоваться ей как обычной таблицей. И никаких дополнительных познаний в tsql не нужно.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026907
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVсинтаксис схож с create table, можно и индексы определить
индексы определить нельзя
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026912
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев ФёдорFreemanZAVсинтаксис схож с create table, можно и индексы определить
индексы определить нельзя

Ну, это в стиле майкрософт. Всегда что-нибудь не доделают.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026917
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев ФёдорFreemanZAVсинтаксис схож с create table, можно и индексы определить
индексы определить нельзя

интересно, unique constraint без индексов работают?
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026922
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVЗайцев Фёдорпропущено...

индексы определить нельзя

интересно, unique constraint без индексов работают?

А нет, вроде бы с индексами. Т.е. индекс определить можно, но через ж...
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026927
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVЗайцев Фёдорпропущено...

индексы определить нельзя

интересно, unique constraint без индексов работают?
ограничения реальзованы через индексы, можно даже указать index option, но определить индексы всё равно нельзя
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026939
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев ФёдорFreemanZAVпропущено...


интересно, unique constraint без индексов работают?
ограничения реальзованы через индексы, можно даже указать index option, но определить индексы всё равно нельзя

Ну суть не меняется. Определить нельзя, но создать можно. Если нужен индексный поиск, то его несложно реализовать . Или mssql не будет этот индекс использовать?
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026964
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVНу суть не меняется.вообще-то меняется. индексы получится создать только уникальные, без включаемых полей и т.п.
FreemanZAVИли mssql не будет этот индекс использовать?
могут быть использованы индексы, созданные для ограничаний. всё как с табличными переменными, т.е. план может быть несколько неожиданным
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026973
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев Фёдорвообще-то меняется. индексы получится создать только уникальные


Это легко обходится. Ничто не мешает создать составное ограничение, где второе поле будет уникальным - например identity.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026980
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVЧестно - не понял. Табличные типы используются в процедурах. Т.е. получается, что в PG в plsql коде надо нечто обернуть во view, прописать правила, а потом уже использовать? Мне кажется это не оч. удобным. Большой плюс табличных типов в MSSQL как раз в том, что достаточно только объявить переменную (синтаксис схож с create table, можно и индексы определить), а потом пользоваться ей как обычной таблицей. И никаких дополнительных познаний в tsql не нужно.

В pgsql есть rowtype, который позволяет определить переменную по таблице.
Честно говоря, по Вашему описанию выглядит как "костыль".
Т.е. мне никогда не требовалось в прецедуре объявлять переменную, которая вела себя как таблица.
Есть таблица, есть DML.
Если нужны какие-то более сложные манипуляции, всегда можно объявить переменную типа rowtype и использовать ее, ну или ч/з хранимые функции.

А про view...
Можно для любого view задать действия на insert и update.
Соответственно view, для внешнего пользователя, ничем не будет отличаться от таблицы.
Очень удобно. :-)

Опять же "на прямую" PostgreSQL и MS SQL сравнивать не имеет смысла, т.к. PostgreSQL может сделать все что и MS SQL, но чуть-чуть по другому :-)
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027024
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul В pgsql есть rowtype, который позволяет определить переменную по таблице.
Честно говоря, по Вашему описанию выглядит как "костыль".
Не нравится моё описание - я привёл другое.

mad_nazgulТ.е. мне никогда не требовалось в прецедуре объявлять переменную, которая вела себя как таблица.
Значит, наверное, надо сообщить майкрософту, чтоб убрала этот функционал нафиг.

mad_nazgulЕсли нужны какие-то более сложные манипуляции, всегда можно объявить переменную типа rowtype и использовать ее, ну или ч/з хранимые функции.

ROWTYPE - это по сути запись, как этот тип можно сравнивать с табличными переменными? Табличные переменные - это не одна запись, а по сути своей таблица.

mad_nazgulА про view...
Можно для любого view задать действия на insert и update.
Соответственно view, для внешнего пользователя, ничем не будет отличаться от таблицы.
Очень удобно. :-)
Всё таки опять не понял. Причём здесь view, если речь речь идёт о табличных переменных? Как можно сравнивать представления и процедурное расширение? Это вещи из разных опер.

mad_nazgulОпять же "на прямую" PostgreSQL и MS SQL сравнивать не имеет смысла, т.к. PostgreSQL может сделать все что и MS SQL, но чуть-чуть по другому :-)

Что чуть-чуть, я бы не сказал.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027058
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulТ.е. мне никогда не требовалось в прецедуре объявлять переменную, которая
вела себя как таблица.
Это потому, что ты не натыкался на тормоза с таблицами. Переменные не нуждаются в локах
(которые у MS на каждом первом шагу).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027061
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovmad_nazgulТ.е. мне никогда не требовалось в прецедуре объявлять переменную, которая
вела себя как таблица.
Это потому, что ты не натыкался на тормоза с таблицами. Переменные не нуждаются в локах
(которые у MS на каждом первом шагу).


Собственно в ссылке, которую я привёл, об этом сказано.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027065
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVНе нравится моё описание - я привёл другое.


По нему у меня вопрос возник "Зачем?!"

FreemanZAVЗначит, наверное, надо сообщить майкрософту, чтоб убрала этот функционал нафиг.


Если я говорю "Зачем?", это не значит, что оно не нужно совсем, это значит, что оно не нужно мне.
Вам например очень нужно, мне не очень.

FreemanZAVROWTYPE - это по сути запись, как этот тип можно сравнивать с табличными переменными? Табличные переменные - это не одна запись, а по сути своей таблица.


Зачем?! Если есть таблицы?
Т.е. зачем переменные которые ведут себя как таблицы, когда есть таблицы, которые ведут себя как таблицы. :-)

FreemanZAVВсё таки опять не понял. Причём здесь view, если речь речь идёт о табличных переменных? Как можно сравнивать представления и процедурное расширение? Это вещи из разных опер.


О чем и речь!
Зачем нужны табличные переменные?
Если нужна таблица, я использую таблицу.
Зачем создавать "Самурая без меча, который подобен самураю с мечем, только без меча"?!

FreemanZAVЧто чуть-чуть, я бы не сказал.


Вы бы не сказали, а я вот сказал. ;-)
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027076
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul Если я говорю "Зачем?", это не значит, что оно не нужно совсем, это значит, что оно не нужно мне.
Вам например очень нужно, мне не очень.


"Зачем", популярно описано в ссылке, которую я привёл. Ну а Дмитрий одну из причин сформулировал по русски. Если этого мало, то вот ещё
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027090
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovmad_nazgulТ.е. мне никогда не требовалось в прецедуре объявлять переменную, которая
вела себя как таблица.
Это потому, что ты не натыкался на тормоза с таблицами. Переменные не нуждаются в локах
(которые у MS на каждом первом шагу).


Понятно...
Для PostgreSQL это не нужно. :-)
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027093
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulЗачем?! Если есть таблицы?
Т.е. зачем переменные которые ведут себя как таблицы, когда есть таблицы, которые ведут себя как таблицы. :-)вы что-то путаете - нужны таблицы, которые ведут себя как переменные.
у вас такие есть?
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027095
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
FreemanZAVЧто чуть-чуть, я бы не сказал.


Вы бы не сказали, а я вот сказал. ;-)

Я могу привести в пример оператор merge. В postgre можно извернуться, но ничего похожего на merge не получится.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027105
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulDimitry Sibiryakovпропущено...

Это потому, что ты не натыкался на тормоза с таблицами. Переменные не нуждаются в локах
(которые у MS на каждом первом шагу).


Понятно...
Для PostgreSQL это не нужно. :-)

А как, например, многократно использовать какую-нибудь тяжёлую выборку, если в PG подзапросы не материализуются?
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027109
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVА как, например, многократно использовать какую-нибудь тяжёлую выборку,
если в PG подзапросы не материализуются?
Временные таблицы для этого есть.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027151
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovFreemanZAVА как, например, многократно использовать какую-нибудь тяжёлую выборку,
если в PG подзапросы не материализуются?
Временные таблицы для этого есть.


Собственно тынца я и просил всю дорогу. А мне говорили про какие-то view. Я просто подзабыл, что механизм временных таблиц в PG не такой, как в oracle, например. В PG есть LOCAL TEMP TABLE ON COMMIT DROP, что вполне может заменить табличные переменные
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027186
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVDimitry Sibiryakovпропущено...

Временные таблицы для этого есть.


Собственно тынца я и просил всю дорогу. А мне говорили про какие-то view. Я просто подзабыл, что механизм временных таблиц в PG не такой, как в oracle, например. В PG есть LOCAL TEMP TABLE ON COMMIT DROP, что вполне может заменить табличные переменные

Хотя не уверен
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027189
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVВ PG есть LOCAL TEMP TABLE ON COMMIT DROP, что вполне может заменить табличные переменные
и в качестве параметра функции можно передать?
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027198
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев ФёдорFreemanZAVВ PG есть LOCAL TEMP TABLE ON COMMIT DROP, что вполне может заменить табличные переменные
и в качестве параметра функции можно передать?

Нет необходимости. Таблица будет видна всем вызываемым функциям (хотя не очень кошерно). Но, в отличие от табличных переменных, таблица не будет Readonly.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027290
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVТаблица будет видна всем вызываемым функциям (хотя не очень кошерно).

Функция, обрабатывающая заранее неизвестную таблицу, некошерна сама по себе.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027522
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovFreemanZAVТаблица будет видна всем вызываемым функциям (хотя не очень кошерно).

Функция, обрабатывающая заранее неизвестную таблицу, некошерна сама по себе.

Нет в жизни совершенства. В PG нет табличных переменных, в MSSQL они есть, но передать их по человечески в другую функцию нельзя.

А касаемо вопроса про табличные переменные в MSSQL:
mad_nazgul Зачем?! Если есть таблицы?


Тот же вопрос можно задать про массивы в PG.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027567
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVА как, например, многократно использовать какую-нибудь тяжёлую выборку, если в PG подзапросы не материализуются?
Зависит от плана, может и материализовать :)

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
explain with b as (select * from b) select count(1) from a join b using(n);
                              QUERY PLAN                               
-----------------------------------------------------------------------
 Aggregate  (cost=360685.00..360685.01 rows=1 width=0)
   CTE b
     ->  Seq Scan on b  (cost=0.00..145.00 rows=10000 width=4)
   ->  Nested Loop  (cost=0.00..360240.00 rows=120000 width=0)
         Join Filter: (a.n = b.n)
         ->  CTE Scan on b  (cost=0.00..200.00 rows=10000 width=4)
         ->  Materialize  (cost=0.00..46.00 rows=2400 width=4)
               ->  Seq Scan on a  (cost=0.00..34.00 rows=2400 width=4)
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027633
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЁшFreemanZAVА как, например, многократно использовать какую-нибудь тяжёлую выборку, если в PG подзапросы не материализуются?
Зависит от плана, может и материализовать :)

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
explain with b as (select * from b) select count(1) from a join b using(n);
                              QUERY PLAN                               
-----------------------------------------------------------------------
 Aggregate  (cost=360685.00..360685.01 rows=1 width=0)
   CTE b
     ->  Seq Scan on b  (cost=0.00..145.00 rows=10000 width=4)
   ->  Nested Loop  (cost=0.00..360240.00 rows=120000 width=0)
         Join Filter: (a.n = b.n)
         ->  CTE Scan on b  (cost=0.00..200.00 rows=10000 width=4)
         ->  Materialize  (cost=0.00..46.00 rows=2400 width=4)
               ->  Seq Scan on a  (cost=0.00..34.00 rows=2400 width=4)

а если он еще сотни строчек занимает? А если он результат нескольких запросов?
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027823
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев Фёдорвы что-то путаете - нужны таблицы, которые ведут себя как переменные.
у вас такие есть?

Зачем?!
Когда есть
1) Таблицы
2) Функции
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027827
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVА как, например, многократно использовать какую-нибудь тяжёлую выборку, если в PG подзапросы не материализуются?

Э-э-э.... А в чем проблема использовать тяжелую выборку?
Как минимум план запроса строиться и последующие запросы к такой выборке будут быстрее.
Т.е. ощущение, что табличные переменные - "костыль" меня не покидают. :-)
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027831
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев ФёдорFreemanZAVВ PG есть LOCAL TEMP TABLE ON COMMIT DROP, что вполне может заменить табличные переменные
и в качестве параметра функции можно передать?

Можно... вот только как массив. ;-)
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027832
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovFreemanZAVТаблица будет видна всем вызываемым функциям (хотя не очень кошерно).

Функция, обрабатывающая заранее неизвестную таблицу, некошерна сама по себе.


Наследование ;-)
Т.е. можно обрабатывать только то что известно.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027902
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul

Э-э-э.... А в чем проблема использовать тяжелую выборку?


Чтобы понять, в чём проблема тяжёлых выборок, можно например почитать про хинт materialize в oracle - что он делает и для чего он нужен.

mad_nazgulТ.е. ощущение, что табличные переменные - "костыль" меня не покидают. :-)
В сущности как и массивы
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027914
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulЗайцев Фёдорвы что-то путаете - нужны таблицы, которые ведут себя как переменные.
у вас такие есть?

Зачем?!
Когда есть
1) Таблицы
2) Функции

Ещё раз могу объяснить. Табличные переменные по сути являются временными таблицами, только их можно объявлять внутри процедур как переменные и передавать из процедуры в процедуру. Зачем нужны временные таблицы объяснять надо?
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027945
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЁшFreemanZAVА как, например, многократно использовать какую-нибудь тяжёлую выборку, если в PG подзапросы не материализуются?
Зависит от плана, может и материализовать :)

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
explain with b as (select * from b) select count(1) from a join b using(n);
                              QUERY PLAN                               
-----------------------------------------------------------------------
 Aggregate  (cost=360685.00..360685.01 rows=1 width=0)
   CTE b
     ->  Seq Scan on b  (cost=0.00..145.00 rows=10000 width=4)
   ->  Nested Loop  (cost=0.00..360240.00 rows=120000 width=0)
         Join Filter: (a.n = b.n)
         ->  CTE Scan on b  (cost=0.00..200.00 rows=10000 width=4)
         ->  Materialize  (cost=0.00..46.00 rows=2400 width=4)
               ->  Seq Scan on a  (cost=0.00..34.00 rows=2400 width=4)



Да, ошибался. Умеет.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027963
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVЁшпропущено...

Зависит от плана, может и материализовать :)

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
explain with b as (select * from b) select count(1) from a join b using(n);
                              QUERY PLAN                               
-----------------------------------------------------------------------
 Aggregate  (cost=360685.00..360685.01 rows=1 width=0)
   CTE b
     ->  Seq Scan on b  (cost=0.00..145.00 rows=10000 width=4)
   ->  Nested Loop  (cost=0.00..360240.00 rows=120000 width=0)
         Join Filter: (a.n = b.n)
         ->  CTE Scan on b  (cost=0.00..200.00 rows=10000 width=4)
         ->  Materialize  (cost=0.00..46.00 rows=2400 width=4)
               ->  Seq Scan on a  (cost=0.00..34.00 rows=2400 width=4)



Да, ошибался. Умеет.

Хотя процесс не управляемый.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38028261
ОКТОГЕН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVЕщё раз могу объяснить. Табличные переменные по сути являются временными таблицами, только их можно объявлять внутри процедур как переменные и передавать из процедуры в процедуру. Зачем нужны временные таблицы объяснять надо?
Чем массивы плохи? Создавай какие хочешь типы записей и перегоняй массивами как и куда хочешь.
Код: sql
1.
2.
3.
4.
5.
6.
WITH tst AS
(
	SELECT array_agg(t.*) AS test
	FROM public.tbl1 t
)
SELECT ((unnest(tst.test))::public.tbl1).*  FROM tst


Свёртка и развёртка таблицы из массива
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38028276
ОКТОГЕН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо массива типов записей конкретной таблицы можно подставить любую запись, которая описана как составной тип.
Не хочется объявлять типы - можно создать двумерные массивы текста и, передавая в/из процедуру, преобразовывать во что
хочешь. Это несколько громоздко, но тоже правомерно.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38028330
ОКТОГЕН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОКТОГЕНВместо массива типов записей конкретной таблицы можно подставить любую запись, которая описана как составной тип.
Не хочется объявлять типы создавать таблицы - можно создать двумерные массивы текста и, передавая в/из процедуру, преобразовывать во что
хочешь. Это несколько громоздко, но тоже правомерно.
FIXED
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38028404
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОКТОГЕН
Чем массивы плохи? Создавай какие хочешь типы записей и перегоняй массивами как и куда хочешь.


Не поддерживают DML, например.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38028406
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVОКТОГЕН
Чем массивы плохи? Создавай какие хочешь типы записей и перегоняй массивами как и куда хочешь.


Не поддерживают DML, например.

Я уже вроде говорил.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38029772
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVmad_nazgulТ.е. ощущение, что табличные переменные - "костыль" меня не покидают. :-)
В сущности как и массивы

Ну массивы идут от концепции ООБД.
PostgreSQL как бы ООБД (хотя и не совсем)
Соответственно в нем можно реализовать любой тип, в том числе и массив

Так что это не костыль, а вполне концептуальное решение.
Вопрос только в другом, на сколько концепция ООБД соотноситься с СУРБД.
Думаю это уже философский вопрос.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38029850
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulFreemanZAVпропущено...

В сущности как и массивы

Ну массивы идут от концепции ООБД.
PostgreSQL как бы ООБД (хотя и не совсем)
Соответственно в нем можно реализовать любой тип, в том числе и массив

Так что это не костыль, а вполне концептуальное решение.
Вопрос только в другом, на сколько концепция ООБД соотноситься с СУРБД.
Думаю это уже философский вопрос.

Ну тогда костылём можно считать всю концепцию ООБД.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38029995
какбе
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FreemanZAVFreemanZAVпропущено...


Да, ошибался. Умеет.

Хотя процесс не управляемый .какбе CTE до последнего всегда именно и только материализовывался. будет ли это изменено - не уверен.

т.е. если хотите материализовать - делаете через CTE (WITH) если на усмотрение оптимайзера - то через подзапрос "в старом стиле". т.е. жесткая "управляемая" материализация через CTE существует.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38030001
какбе
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЁшFreemanZAVА как, например, многократно использовать какую-нибудь тяжёлую выборку, если в PG подзапросы не материализуются?
Зависит от плана, может и материализовать :)

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
explain with b as (select * from b) select count(1) from a join b using(n);
                              QUERY PLAN                               
-----------------------------------------------------------------------
 Aggregate  (cost=360685.00..360685.01 rows=1 width=0)
   CTE b
     ->  Seq Scan on b  (cost=0.00..145.00 rows=10000 width=4)
   ->  Nested Loop  (cost=0.00..360240.00 rows=120000 width=0)
         Join Filter: (a.n = b.n)
         ->  CTE Scan on b  (cost=0.00..200.00 rows=10000 width=4)
         ->  Materialize  (cost=0.00..46.00 rows=2400 width=4)
               ->  Seq Scan on a  (cost=0.00..34.00 rows=2400 width=4)

а что, CTE в постгресе уже можно не материализовывать
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38030015
какбе
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PS табличные @@переменные конечно вкусная штука
т.ч. зря некоторые от них отпихиваются

но временные таблицы в PostGres ведут себя очень шустро. (некие минимальные дисковые в системных таки происходят, что печалька).
-- я через них обходился как-то для хранения диких декартовых - для комбинаторных упражнений. И DML какой хотите, и DDL.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38030024
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какбеFreemanZAVпропущено...


Хотя процесс не управляемый .какбе CTE до последнего всегда именно и только материализовывался. будет ли это изменено - не уверен.

т.е. если хотите материализовать - делаете через CTE (WITH) если на усмотрение оптимайзера - то через подзапрос "в старом стиле". т.е. жесткая "управляемая" материализация через CTE существует.

Ну управляемость весьма условна. В CTE (WITH) материализация не управляема таки. Т.е. если есть хороший индекс, то PG будет материализовывать, вместо того, чтобы этот индекс использовать .
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38030029
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какбеPS табличные @@переменные конечно вкусная штука
т.ч. зря некоторые от них отпихиваются

но временные таблицы в PostGres ведут себя очень шустро. (некие минимальные дисковые в системных таки происходят, что печалька).
-- я через них обходился как-то для хранения диких декартовых - для комбинаторных упражнений. И DML какой хотите, и DDL.

Ну тему "табличные переменные vs временные таблицы" мы уже обсудили.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38030071
какбе
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FreemanZAVкакбепропущено...
какбе CTE до последнего всегда именно и только материализовывался. будет ли это изменено - не уверен.

т.е. если хотите материализовать - делаете через CTE (WITH) если на усмотрение оптимайзера - то через подзапрос "в старом стиле". т.е. жесткая "управляемая" материализация через CTE существует.

Ну управляемость весьма условна. В CTE (WITH) материализация не управляема таки. Т.е. если есть хороший индекс, то PG будет материализовывать, вместо того, чтобы этот индекс использовать .какбе тут вы полностью хозяин на этапе написания, есть хороший индекс - тождественное преобразование CTE в "старый стиль" доступно и автомату -- (REPLACE все вхождения алиаса CTE на его же содержимое с алиасом, но не префикс, а постфикс), а не токмо кодеру с минимальным навыком копипаста.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38030231
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какбеFreemanZAVпропущено...


Ну управляемость весьма условна. В CTE (WITH) материализация не управляема таки. Т.е. если есть хороший индекс, то PG будет материализовывать, вместо того, чтобы этот индекс использовать .какбе тут вы полностью хозяин на этапе написания, есть хороший индекс - тождественное преобразование CTE в "старый стиль" доступно и автомату -- (REPLACE все вхождения алиаса CTE на его же содержимое с алиасом, но не префикс, а постфикс), а не токмо кодеру с минимальным навыком копипаста.
А рекурсия как-же?
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38030238
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVкакбепропущено...
какбе тут вы полностью хозяин на этапе написания, есть хороший индекс - тождественное преобразование CTE в "старый стиль" доступно и автомату -- (REPLACE все вхождения алиаса CTE на его же содержимое с алиасом, но не префикс, а постфикс), а не токмо кодеру с минимальным навыком копипаста.
А рекурсия как-же?

Или union?
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38031009
какбе
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FreemanZAVкакбепропущено...
какбе тут вы полностью хозяин на этапе написания, есть хороший индекс - тождественное преобразование CTE в "старый стиль" доступно и автомату -- (REPLACE все вхождения алиаса CTE на его же содержимое с алиасом, но не префикс, а постфикс), а не токмо кодеру с минимальным навыком копипаста.
А рекурсия как-же?ну вы уж как-то опредилитесь, или вам CTE +индекс хороший(т.е. без мат-ции), или итерационный CTE - который по определению - с материализацией итераций.

Какой уж вам тут-то "индекс кароши" может помешать?
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38033587
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пардон, но пришлось потереть разборки в песочнице между двумя оппонентами, поскольку это не очень красило их обоих

люди, ну зачем вам это? зачем бросаться грудью на продукты, к созданию которых вы не имеете никакого отношения? ради чего друг дружку оскорблять? неужели это лучше чем сказать что-то приятное?
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38034102
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И всё же хотелось бы уточнить. Например если есть таблица table1 с сотнями миллионов записей и с уникальным индексом field_1, то в запросе
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 
with 
t1
as
(
  select  field_1 , 
  	case when field_2 between 10 and 20 then field_3 else field_4 end f2,   
        case when field_3 between 128 and 345  then field_7 else field_8 end f3   /*и ещё масса выражений*/ 
  from table1 t 
) 
select * from t1 where field_1 = 1
union all
select * from t1 where field_1 = 2
union all
select * from t1 where field_1 = 3
 



PG будет материализовать все сотни миллионов записей?

P.S. Вопрос чисто технический. Без иронии и попыток умаления достоинств PG.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38034406
тысячи их
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FreemanZAVИ всё же хотелось бы уточнить. Например если есть таблица table1 с сотнями миллионов записей и с уникальным индексом field_1, то в запросе
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 
with 
t1
as
(
  select  field_1 , 
  	case when field_2 between 10 and 20 then field_3 else field_4 end f2,   
        case when field_3 between 128 and 345  then field_7 else field_8 end f3   /*и ещё масса выражений*/ 
  from table1 t 
) 
select * from t1 where field_1 = 1
union all
select * from t1 where field_1 = 2
union all
select * from t1 where field_1 = 3
 



PG будет материализовать все сотни миллионов записей?

P.S. Вопрос чисто технический. Без иронии и попыток умаления достоинств PG.
ответ для 9.1 таков ( у меня по случаю завалялась тестовая таблица на лям записей, но не такая как у вас):
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
select count(*) FROM test_table;
--1000000
EXPLAIN 
SELECT foo.* FROM test_table foo WHERE high_cardinality =1000;
/*
"Bitmap Heap Scan on test_table foo  (cost=6.11..359.75 rows=98 width=16)"
"  Recheck Cond: (high_cardinality = 1000)"
"  ->  Bitmap Index Scan on test_table_high_cardinality_key  (cost=0.00..6.08 rows=98 width=0)"
"        Index Cond: (high_cardinality = 1000)"
*/

EXPLAIN 
WITH foo AS (SELECT * FROM test_table)
SELECT foo.* FROM foo WHERE high_cardinality =1000;
/*
"CTE Scan on foo  (cost=15406.00..37906.00 rows=5000 width=16)"
"  Filter: (high_cardinality = 1000)"
"  CTE foo"
"    ->  Seq Scan on test_table  (cost=0.00..15406.00 rows=1000000 width=16)"
*/

EXPLAIN ANALYZE
SELECT foo.* FROM test_table foo WHERE high_cardinality =1000;
/*
"Bitmap Heap Scan on test_table foo  (cost=6.11..359.75 rows=98 width=16) (actual time=38.859..41.468 rows=98 loops=1)"
"  Recheck Cond: (high_cardinality = 1000)"
"  ->  Bitmap Index Scan on test_table_high_cardinality_key  (cost=0.00..6.08 rows=98 width=0) (actual time=38.798..38.798 rows=98 loops=1)"
"        Index Cond: (high_cardinality = 1000)"
"Total runtime: 41.523 ms"
*/

EXPLAIN ANALYZE 
WITH foo AS (SELECT * FROM test_table)
SELECT foo.* FROM foo WHERE high_cardinality =1000;
/*
"CTE Scan on foo  (cost=15406.00..37906.00 rows=5000 width=16) (actual time=3.727..433.065 rows=98 loops=1)"
"  Filter: (high_cardinality = 1000)"
"  Rows Removed by Filter: 999902"
"  CTE foo"
"    ->  Seq Scan on test_table  (cost=0.00..15406.00 rows=1000000 width=16) (actual time=0.048..103.362 rows=1000000 loops=1)"
"Total runtime: 440.657 ms"
*/


-- видим, что PG не называет это "materialize" но прямо "CTE", при этом CTE в нем есть темповая таблица. (что видно при рассмотрения плана рекурсий). Поэтому для PG пока надо таки так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
 
select * from (
  select  field_1 , 
  	case when field_2 between 10 and 20 then field_3 else field_4 end f2,   
        case when field_3 between 128 and 345  then field_7 else field_8 end f3   /*и ещё масса выражений*/ 
  from table1 t 
) t1 where field_1 = 1
union all
select * from (
  select  field_1 , 
  	case when field_2 between 10 and 20 then field_3 else field_4 end f2,   
        case when field_3 between 128 and 345  then field_7 else field_8 end f3   /*и ещё масса выражений*/ 
  from table1 t 
)  t1 where field_1 = 2
union all
select * from (
  select  field_1 , 
  	case when field_2 between 10 and 20 then field_3 else field_4 end f2,   
        case when field_3 between 128 and 345  then field_7 else field_8 end f3   /*и ещё масса выражений*/ 
  from table1 t 
)  t1 where field_1 = 3


если конечно не рассматривать сразу правильного:
Код: plsql
1.
2.
3.
4.
5.
6.
WITH foo AS (SELECT * FROM table1 t  WHERE field1 IN (1,2,3))
SELECT * from (
  select  field_1 , 
  	case when field_2 between 10 and 20 then field_3 else field_4 end f2,   
        case when field_3 between 128 and 345  then field_7 else field_8 end f3   /*и ещё масса выражений*/ 
  from foo; 
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38034638
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тысячи их -- видим, что PG не называет это "materialize" но прямо "CTE", при этом CTE в нем есть темповая таблица.
Ок. Вопросов больше не имею.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38036579
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAV, CTE в PostgreSQL пока реализован просто как синтаксис, его оптимизацией пока никто не занимался :)
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38058951
MicrosoftProjectRU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Славный холивар идет во всю?? :)

На деле в корпоративном мире CIO принимают решения так:

- Лучшие ОПТИМИЗАТОРЫ SQL-запросов: Oracle и MS SQL
- Лучший транзакционный движок ЗАПИСИ - Oracle
- Лучший легкий SQL-сервер для массовой обработки записей без сложных запросов - MySQL
- Самые старшие сертификаты для гостайны - PostgreSQL

Вот собственно и весь холивар. Выбор делается по алгоритму

try

case Бабло
Когда денег чуть более чем до фига - Oracle
Когда нет сложной записи в БД и бабла поменьше - MS SQL
Сайты и простой SaaS бесплатно или почти бесплатно - MySQL

catch Exception
Секьюрность с "бамажками" - PostgreSQL
Стандарт - то что стандарт

END

Именно так CIO будут делать выбор, размахивание руками кодеров и пузомерки рассматриваются чуть менее чем полностью как аргумент не влияющий на принятие решения :)
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38058991
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MicrosoftProjectRU,

Возможно это CIO и спашивал
Возможно он не знает что он CIOo
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38059035
MicrosoftProjectRU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решение примет в терминологии Microsoft так называемый TDM - Technology Decision Manager.
Обычно это CIO, он может спросить совета у своего программиста, но на деле он спросит советов и в других местах.
Также логика CIO МЕНЕДЖЕРСКАЯ, а не кодерская. CIO (и TDM) не будет обращать внимание на стенания кодеров.
Он как раз будет смотреть в БРЕНДЫ. Дело в том, что это ассоциирование с портфелями выполненных вендоров проектов, т.е. это РАБОТАЕТ не в теории и пузомерках, а на ПРАКТИКЕ. Переубедить CIO и TDM можно только примерами внедрений. Причем внедрения должны иметь ЭКОНОМИЧЕСКУЮ привлекательность, т.к. важно не только что достигли, но и КАК БЫСТРО и КАК ДОРОГО.

С учетом сказанного весь холивар лишен смысла, т.к. скорее всего решение будет принято на другом уровне и другими методами и по другим мотивам, нежели чем тут обсуждалось.

Чтобы повлиять на TDM нужно тащить КЕЙСЫ. А тут как раз нет ни слова об этом.

Поэтому CIO просто поставит перед фактом кодера о выбранной платформе и еще будет злится, что ему в выборе кодер не помог. Он-то хотел примеров внедрений со сроками/деньгами по факту, а не примеров кусков кода на которые ему наплевать с высокой башни его кресла "насяльника". :)

Говорите на одном языке с бизнесом и станете богаче, джентльмены.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38059173
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MicrosoftProjectRUГоворите на одном языке с бизнесом и станете богаче, джентльмены.

Так ТС-у это в самом начале топика и говорили.
Пусть "новатор" покажет что PostgreSQL "круче" MS SQL в виде экономического обоснования. :-)

Просто потом начался простой холивар PostgreSQL vs MS SQL, который к сабжу никакого отношения не имеет, зато было весело. :-)
...
Рейтинг: 0 / 0
92 сообщений из 92, показаны все 4 страниц
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / ...и снова MSSQL 2008 R2 vs PostgreSQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]