Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / В чем разница между тип поля и тип поля[] / 11 сообщений из 11, страница 1 из 1
24.02.2015, 13:28
    #38887125
Perederiy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между тип поля и тип поля[]
Например, text и text[]
...
Рейтинг: 0 / 0
24.02.2015, 13:47
    #38887156
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между тип поля и тип поля[]
PerederiyНапример, text и text[]

По идее text[] - это массив типа text :-)
Хотя разница сомнительная.
...
Рейтинг: 0 / 0
24.02.2015, 13:57
    #38887180
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между тип поля и тип поля[]
mad_nazgul,

Скалярное значение и массив, строгая типизация.

Разница в том, что во втором случае нельзя массив использовать просто по имени в операциях над скалярными выражениями, нужно всегда обращаться к конкретному элементу или как-то преобразовывать массив в скалярное значение.

А почему возник такой вопрос?
...
Рейтинг: 0 / 0
24.02.2015, 14:28
    #38887241
Perederiy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между тип поля и тип поля[]
vyegorov,
если предполагается в поле хранить (и работать с ним) массив, то какой тип лучше

PS
Вдогонку общий вопрос. Меня убеждают, что использовать массивы - это здорово ( в базе два десятка таблиц и в каждой много полей с массивами в полях). Я признаться в своих проектах массивы вообще не использовал. Кто имеет опыт с массивами - поделитесь: плюсы и минусы
...
Рейтинг: 0 / 0
24.02.2015, 14:45
    #38887286
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между тип поля и тип поля[]
Perederiyvyegorov,
если предполагается в поле хранить (и работать с ним) массив, то какой тип лучше

PS
Вдогонку общий вопрос. Меня убеждают, что использовать массивы - это здорово ( в базе два десятка таблиц и в каждой много полей с массивами в полях). Я признаться в своих проектах массивы вообще не использовал. Кто имеет опыт с массивами - поделитесь: плюсы и минусы

Ну вообще-то массивы это уход от реляционной модели.
По большому это "синтаксический сахар".
Т.е. вместо нормализации БД, мы можем ввести в какую-нибудь таблицу массив.
Плюсы - простота
Минусы - отход от реляционной модели данных.

И раньше, по моему до 8 версии, массивы тормозили.
Сейчас вроде бы нормально.
...
Рейтинг: 0 / 0
24.02.2015, 15:28
    #38887368
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между тип поля и тип поля[]
Perederiyесли предполагается в поле хранить (и работать с ним) массив, то какой тип лучше
Реляционные СУБД строго типизированы. Если нужны временные метки, используйте timestamptz, если числа — соответствующий числовой тип. И массив строить на основе соответствующего типа. Если вы хотите хранить дома, километры и литры в одном поле типа text[], то у вас будут проблемы, даже если вы думаете (или вас убеждают) в обратном!

PerederiyМеня убеждают, что использовать массивы - это здорово ( в базе два десятка таблиц и в каждой много полей с массивами в полях). Я признаться в своих проектах массивы вообще не использовал. Кто имеет опыт с массивами - поделитесь: плюсы и минусы Думаю, что вас склоняют к No-SQL (key-value). Для этого будет лучше использовать JSONB тип.

Массивы очень удобны для специфических задач. Но в целом для дизайна я предпочитаю реляционную модель. Она и гибка (для построения запросов), и строга (типы данных и ограничения целостности) одновременно.
...
Рейтинг: 0 / 0
24.02.2015, 15:41
    #38887390
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между тип поля и тип поля[]
mad_nazgulИ раньше, по моему до 8 версии, массивы тормозили.
Сейчас вроде бы нормально.Более того, в http://www.postgresql.org/message-id/flat/20178.1423598435@sss.pgh.pa.us]работе код , который позволит избежать сворачивания/разворачивания массивов (и других "пакуемых" типов данных) между вызовами функций, прирост в скорости существенный. Я надеюсь, что в 9.5 засунут, хотя бы для массивов и PL/pgSQL.
...
Рейтинг: 0 / 0
24.02.2015, 18:01
    #38887590
этта
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между тип поля и тип поля[]
vyegorov Думаю, что вас склоняют к No-SQL (key-value). Для этого будет лучше использовать JSONB тип.
для плоского key--value удобнее был hstore (в нём конкатенация была "искаропки")

vyegorov Массивы очень удобны для специфических задач. Но в целом для дизайна я предпочитаю реляционную модель. Она и гибка (для построения запросов), и строга (типы данных и ограничения целостности) одновременно.
для индексирования как по телу таблицы так и подчинённым записям реляционная модель будет пригодна , если завести такую штуку, как кросс-табличные индексы.

А пока их нет -- суем все нужные подчиненки в массив -- и имеем возможность индексировать хоть GIST-ом + btree_gist. (с поиском по операторам над массивами). Хоть btree по скалярным ф-ям от массивов (применяю). В букваре по gist-ам у Бартунова встречалось. Можно комбинировать -- строгая реляционка, + триггерно поддерживаемые мат-вью (плата -- двойная и более нагрузка на диск).

минусы массивов (и прочей НоСКЛ) -- стандартные средства разработки морд их не поддерживают в плане наличия готовых контролов. надо кодить.
...
Рейтинг: 0 / 0
24.02.2015, 18:57
    #38887635
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между тип поля и тип поля[]
эттадля индексирования как по телу таблицы так и подчинённым записям реляционная модель будет пригодна , если завести такую штуку, как кросс-табличные индексы.
Да, я забыл об этом аспекте, GiST с массивами тут рулят.
...
Рейтинг: 0 / 0
24.02.2015, 20:41
    #38887691
этта
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между тип поля и тип поля[]
vyegorov,

минусы массивов

если вы меняете содержимое починенной реляционной записи -- она меняется одна

в случае массива -- поменяется вся запись "головной". каждое изменение "подчиненной" -- перезапись всего. если в массиве элементов много, добавляются удаляются они отдельными операциями -- индексы там опухают -- только в путь. а в toast-ах после чистки бывают много--гигабайтные индексы по пустой таблице тостов. требуется reindex. в общем плата не маленькая.

кросс-индексы были бы гораздо предпочтительнее. IOT какой-нибудь, хотя бы -- для handjob-а.
...
Рейтинг: 0 / 0
24.02.2015, 22:11
    #38887749
Misha Tyurin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между тип поля и тип поля[]
этта,

> а в toast-ах после чистки бывают много--гигабайтные индексы по пустой таблице тостов

во на это надо показательный тест. может быть интересно
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / В чем разница между тип поля и тип поля[] / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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