Size: a a a

pgsql – PostgreSQL

2021 February 28

IM

IVAN MALAKHOV in pgsql – PostgreSQL
Friedrich Engels
Добрый день
Небольшой вопрос по проектированию
Нормальной ли практикой будет иметь несколько foreign key null в таблице, собирающей в себя различные типы?
Или это плохая практика?
Не страшно. Но все зависит от контекста. Есть ситуации, где норм. По логике вещей
источник

FE

Friedrich Engels in pgsql – PostgreSQL
Спасибо
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Max Olsson
Всем, привет, поясните плз по  репликации.
Самый популярный вариант - это pgpool-2 и один read/write-мастер с read репликами  в режиме передачи WAL логов?
А как решается проблема что данные могут отставать от мастера?
> Самый популярный вариант - это pgpool-2

Эээ.... нет?! IMNSHO, у тех кто выбрал pgpool-2, уже какие-то необычные потребности. ;)

> мастер с read репликами

И он в PostgreSQL может быть неконсистентен, кстати (к счастью, на практике это редко случается).

> А как решается проблема что данные могут отставать от мастера?

Например, никак. ;) Цель-то у вас там какая, зачем это всё нужно?
А так — есть синхронная репликация, если нужно больше уверенности в том, что меньше данных потеряется, если что.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Friedrich Engels
Добрый день
Небольшой вопрос по проектированию
Нормальной ли практикой будет иметь несколько foreign key null в таблице, собирающей в себя различные типы?
Или это плохая практика?
Смотря с какой целью...
Но даже если с "правильной" — дело тут в том, что все альтернативы тоже "так себе" (по крайней мере, не без объективных недостатков).
источник

AK

Andy Korg in pgsql – PostgreSQL
Слишком расплывчато: если бизнес хочет постоянно добавлять атрибуты к сущности (ведь таблица это какая-то бизнес-сущность), и никогда не удалять, то да, можно отдельными полями в таблице. (не забывайте только имена говорящие колонкам давать, а то часто бывает col1, col2 ...) Если будут удалять, то лучше в отдельную сущность (таблицу)
Ах да! и если это одна таблица на все приложение
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
> Я правильно понимаю, что с точки зрения оптимизации запросов лучше именно в основной таблице добавлять поля

Нет. Это же зависит от самих запросов.

> зато запросы выполняются оптимальнее, без лишни join'ов

Почему Вы думаете, что JOIN-ы уменьшают "оптимальность"?

> Просто самих свойств мб много и я вот думаю, стоит ли вынести в отдельную таблицу

А "логические" обоснования для их вынесения туда есть?
Я к чему — если подобные мелочи заставляют задумываться о производительности (если это не преждевременная оптимизация, как зачастую бывает) — может, там на самом деле [остро] не хватает "железа", и эту проблему нужно решать?
источник

В

Валерий in pgsql – PostgreSQL
подскажите как собрать пг с контриб модулями но без документации
источник

b

batyrmastyr in pgsql – PostgreSQL
Если это есть/нет, то можно использовать массивы, каждому из свойств поставив в соответствие число.
А) {10,34,65} - есть свойства с этими номерами, остальные отсутствуют, неопределённости не предполагаем.
Б) если нужно «не известно», то можно хранить явное «нет» как отрицательное число. {-5,10,34,65}.
Будет намного быстрее сцепления таблиц.
источник

b

batyrmastyr in pgsql – PostgreSQL
Если не любите числовые (читай - магические) коды - можно объявить перечисление и хранить более понятные человеку значения.
источник

b

batyrmastyr in pgsql – PostgreSQL
Не подразумевает. Насчёт идиоматики ничего не скажу.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Нет, не подразумевает. И нет, неправильно, конечно.
И я бы на Вашем месте подумал над вопросами, которые я задавал выше. ;)
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
> Ну, явно проще, чем если бы их не нужно было прописывать.

Это да. Тут могут помочь views, но они не без своих проблем ("мешают" менять структуру участвующих таблиц; и для того, чтобы на нетривиальных можно было использовать DML, придётся писать триггеры).

> Просто потому что "SELECT + JOIN" тупо сложнее/комплекснее, чем обычный "SELECT"

Но может быть так же "тупо" намного быстрее. ;)

> Пытаюсь понять, как написать правильно

В описанном я не вижу "логических" оснований для выделения таких полей в отдельную таблицу(ы), по крайней мере.

> теперь стараюсь думать

Так можно думать дни напролёт, а "в продакшн" тем временем ничего не внедряется (я намекаю на KISS, если что). ;)
источник

R

Roman in pgsql – PostgreSQL
Читай про нормализацию БД, веб макака)
Так же есть json, это касается "добавлю столбцов".
Все разговоры про производительность,чаще всего, чушь, если не было тестов.
источник

AL

Artyom Lazovikov in pgsql – PostgreSQL
Ребятушки, на собеседование скоро иду, есть где список терминов, которые нужно повторить по БД ?
Типа индексы кластерные обычные и т.п.
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
Artyom Lazovikov
Ребятушки, на собеседование скоро иду, есть где список терминов, которые нужно повторить по БД ?
Типа индексы кластерные обычные и т.п.
Собеседование - это не экзамен, так что, если ничего не знаете, ваш путь - боль и страдания, унижение и отчаяние, да...
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
И самое главное - базы данных и термин "типичное" - антагонистичны до сих пор.
источник

AL

Artyom Lazovikov in pgsql – PostgreSQL
Понял)
источник

AL

Artyom Lazovikov in pgsql – PostgreSQL
Всё зависит от ситуации, как и всегда
источник

AL

Artyom Lazovikov in pgsql – PostgreSQL
у меня были случаи, когда 25 микро-запросов работали быстрее, чем 3 составных
источник

AL

Artyom Lazovikov in pgsql – PostgreSQL
а бывает и наоборот
источник