Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
mad_nazgul
FreemanZAV
пропущено...


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


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


Насколько я знаю, в PG есть временные таблицы, которые можно создавать на "лету", конкретно такой реализации табличных типов нет. Я могу ошибаться, но хотелось бы как здесь говорят "тынц".
6 ноя 12, 12:24    [13425649]     Ответить | Цитировать Сообщить модератору
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5824
FreemanZAV
Насколько я знаю, в PG есть временные таблицы, которые можно создавать на "лету", конкретно такой реализации табличных типов нет. Я могу ошибаться, но хотелось бы как здесь говорят "тынц".


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

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

P.S. Спорить смысла не вижу, т.к. Вам "плюшки" MS SQL более значимы, чем для меня. :-)
6 ноя 12, 12:48    [13425854]     Ответить | Цитировать Сообщить модератору
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
mad_nazgul


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


И над всем этим можно выполнять операции DML?
6 ноя 12, 12:51    [13425882]     Ответить | Цитировать Сообщить модератору
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
mad_nazgul
FreemanZAV
Насколько я знаю, в PG есть временные таблицы, которые можно создавать на "лету", конкретно такой реализации табличных типов нет. Я могу ошибаться, но хотелось бы как здесь говорят "тынц".


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

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

P.S. Спорить смысла не вижу, т.к. Вам "плюшки" MS SQL более значимы, чем для меня. :-)
спорить не надо, но хотелось бы какой-то пример как оно выглядит на разных СУБД
это действительно было бы полезным
6 ноя 12, 13:04    [13426012]     Ответить | Цитировать Сообщить модератору
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5824
FreemanZAV
И над всем этим можно выполнять операции DML?


Если только обернуть во View.
Над View можно делать DML, только правила нужно прописать.
6 ноя 12, 13:11    [13426068]     Ответить | Цитировать Сообщить модератору
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5824
mad_nazgul,

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

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

Если хотите узнать о "плюшках" PostgreSQL то dfv сюда
6 ноя 12, 13:18    [13426133]     Ответить | Цитировать Сообщить модератору
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
mad_nazgul
FreemanZAV
И над всем этим можно выполнять операции DML?


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


Честно - не понял. Табличные типы используются в процедурах. Т.е. получается, что в PG в plsql коде надо нечто обернуть во view, прописать правила, а потом уже использовать? Мне кажется это не оч. удобным. Большой плюс табличных типов в MSSQL как раз в том, что достаточно только объявить переменную (синтаксис схож с create table, можно и индексы определить), а потом пользоваться ей как обычной таблицей. И никаких дополнительных познаний в tsql не нужно.
6 ноя 12, 14:59    [13426904]     Ответить | Цитировать Сообщить модератору
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
FreemanZAV
синтаксис схож с create table, можно и индексы определить

индексы определить нельзя
6 ноя 12, 15:10    [13427024]     Ответить | Цитировать Сообщить модератору
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Зайцев Фёдор
FreemanZAV
синтаксис схож с create table, можно и индексы определить

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


Ну, это в стиле майкрософт. Всегда что-нибудь не доделают.
6 ноя 12, 15:12    [13427040]     Ответить | Цитировать Сообщить модератору
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Зайцев Фёдор
FreemanZAV
синтаксис схож с create table, можно и индексы определить

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


интересно, unique constraint без индексов работают?
6 ноя 12, 15:14    [13427061]     Ответить | Цитировать Сообщить модератору
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
FreemanZAV
Зайцев Фёдор
пропущено...

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


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


А нет, вроде бы с индексами. Т.е. индекс определить можно, но через ж...
6 ноя 12, 15:15    [13427079]     Ответить | Цитировать Сообщить модератору
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
FreemanZAV
Зайцев Фёдор
пропущено...

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


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

ограничения реальзованы через индексы, можно даже указать index option, но определить индексы всё равно нельзя
6 ноя 12, 15:17    [13427094]     Ответить | Цитировать Сообщить модератору
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Зайцев Фёдор
FreemanZAV
пропущено...


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

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


Ну суть не меняется. Определить нельзя, но создать можно. Если нужен индексный поиск, то его несложно реализовать . Или mssql не будет этот индекс использовать?
6 ноя 12, 15:21    [13427139]     Ответить | Цитировать Сообщить модератору
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
FreemanZAV
Ну суть не меняется.
вообще-то меняется. индексы получится создать только уникальные, без включаемых полей и т.п.
FreemanZAV
Или mssql не будет этот индекс использовать?

могут быть использованы индексы, созданные для ограничаний. всё как с табличными переменными, т.е. план может быть несколько неожиданным
6 ноя 12, 15:29    [13427222]     Ответить | Цитировать Сообщить модератору
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Зайцев Фёдор
вообще-то меняется. индексы получится создать только уникальные


Это легко обходится. Ничто не мешает создать составное ограничение, где второе поле будет уникальным - например identity.
6 ноя 12, 15:33    [13427263]     Ответить | Цитировать Сообщить модератору
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5824
FreemanZAV
Честно - не понял. Табличные типы используются в процедурах. Т.е. получается, что в PG в plsql коде надо нечто обернуть во view, прописать правила, а потом уже использовать? Мне кажется это не оч. удобным. Большой плюс табличных типов в MSSQL как раз в том, что достаточно только объявить переменную (синтаксис схож с create table, можно и индексы определить), а потом пользоваться ей как обычной таблицей. И никаких дополнительных познаний в tsql не нужно.


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

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

Опять же "на прямую" PostgreSQL и MS SQL сравнивать не имеет смысла, т.к. PostgreSQL может сделать все что и MS SQL, но чуть-чуть по другому :-)
6 ноя 12, 15:36    [13427293]     Ответить | Цитировать Сообщить модератору
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
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, но чуть-чуть по другому :-)


Что чуть-чуть, я бы не сказал.
6 ноя 12, 15:58    [13427506]     Ответить | Цитировать Сообщить модератору
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54784

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

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

Posted via ActualForum NNTP Server 1.5

6 ноя 12, 16:07    [13427629]     Ответить | Цитировать Сообщить модератору
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Dimitry Sibiryakov
mad_nazgul
Т.е. мне никогда не требовалось в прецедуре объявлять переменную, которая
вела себя как таблица.

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


Собственно в ссылке, которую я привёл, об этом сказано.
6 ноя 12, 16:09    [13427650]     Ответить | Цитировать Сообщить модератору
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5824
FreemanZAV
Не нравится моё описание - я привёл другое.


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

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


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

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


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

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


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

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


Вы бы не сказали, а я вот сказал. ;-)
6 ноя 12, 16:12    [13427675]     Ответить | Цитировать Сообщить модератору
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
mad_nazgul
Если я говорю "Зачем?", это не значит, что оно не нужно совсем, это значит, что оно не нужно мне.
Вам например очень нужно, мне не очень.


"Зачем", популярно описано в ссылке, которую я привёл. Ну а Дмитрий одну из причин сформулировал по русски. Если этого мало, то вот ещё
6 ноя 12, 16:17    [13427744]     Ответить | Цитировать Сообщить модератору
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5824
Dimitry Sibiryakov
mad_nazgul
Т.е. мне никогда не требовалось в прецедуре объявлять переменную, которая
вела себя как таблица.

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


Понятно...
Для PostgreSQL это не нужно. :-)
6 ноя 12, 16:22    [13427817]     Ответить | Цитировать Сообщить модератору
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
mad_nazgul
Зачем?! Если есть таблицы?
Т.е. зачем переменные которые ведут себя как таблицы, когда есть таблицы, которые ведут себя как таблицы. :-)
вы что-то путаете - нужны таблицы, которые ведут себя как переменные.
у вас такие есть?
6 ноя 12, 16:23    [13427830]     Ответить | Цитировать Сообщить модератору
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
mad_nazgul

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


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


Я могу привести в пример оператор merge. В postgre можно извернуться, но ничего похожего на merge не получится.
6 ноя 12, 16:24    [13427845]     Ответить | Цитировать Сообщить модератору
 Re: ...и снова MSSQL 2008 R2 vs PostgreSQL  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
mad_nazgul
Dimitry Sibiryakov
пропущено...

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


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


А как, например, многократно использовать какую-нибудь тяжёлую выборку, если в PG подзапросы не материализуются?
6 ноя 12, 16:28    [13427898]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить