@pgsql

Страница 947 из 1062
Terminator
21.08.2018
17:13:06
Timur Solodovnikov будет жить. Поприветствуем!

Yaroslav
21.08.2018
17:14:07
я это понял что выполняется полностью, но тело не очищается ?
Да, при CONCURRENTLY — не очищается, а обновляется. Просто в Вашем случае все записи — новые (а все старые удалены). :)

Anton
21.08.2018
17:15:37
да. это просто обновление строками, а не таблицей. Я размечтался о другом :)))

Terminator
21.08.2018
17:37:00
Nina Shevchenko будет жить. Поприветствуем!

Google
Let Eat
21.08.2018
17:41:13
Подскажите, постгрес умеет пропускать джоины с шардированными таблицами если конкретный джоины там точно не может сработать? Раньше оно могло только если при планировании знало какие значения будут.

Yaroslav
21.08.2018
18:12:12
Konstantin
21.08.2018
18:37:56
@knizhnik , подскажите, а вот эта штука - IMCS - живая или уже не сильно?
Да, я её поддерживаю. и ещё у меня появилась более новая штука по тем же мотивам - VOPS.

Ilia
21.08.2018
18:56:55
почему?
Потому что EAV не анти паттерн. Просто другой подход. Есть плюсы и минусы. Кто это считает это анти паттерном, просто неосиливший му#$@б.

Yaroslav
21.08.2018
19:02:12
Потому что EAV не анти паттерн. Просто другой подход. Есть плюсы и минусы. Кто это считает это анти паттерном, просто неосиливший му#$@б.
EAV — это именно что anitpattern. Да, это другой подход, нереляционный. И в нём есть минусы.. и ещё минусы, в основном. ;)

Сергей
21.08.2018
19:02:55
Не антипаттерн это

Он просто мало кому нужен

Yaroslav
21.08.2018
19:03:20
Не антипаттерн это
Ну-ну. И почему?

Сергей
21.08.2018
19:03:40
Потому что часто он решает свою задачу

Динамические атрибуты

Yaroslav
21.08.2018
19:05:42
Потому что часто он решает свою задачу
Да, конечно... если эта задача состит в создании с трудом обрабатываемой кучи мусора в базе (причём эта куча пытается прикидываться "динамическими атрибутами"). ;)

Сергей
21.08.2018
19:06:04
У тя таких задач видимо не было

Yaroslav
21.08.2018
19:07:21
У тя таких задач видимо не было
Как вышеописанная? Ну почему же, было. EAV отлично достигает этой цели, вообще без проблем. :)

Google
Сергей
21.08.2018
19:07:41
Достигает и мусора нет

Yaroslav
21.08.2018
19:08:45
Достигает и мусора нет
И каким же образом?

Сергей
21.08.2018
19:09:58
Мусор это лишние записи. Их нет

Yaroslav
21.08.2018
19:10:51
Мусор это лишние записи. Их нет
Причём тут лишние записи? Мусор — это чушь вместо данных. И такое с EAV достигается очень легко.

Сергей
21.08.2018
19:12:03
Вместо eav хранить в json? Есть предложения лучше?

Yaroslav
21.08.2018
19:12:44
Сергей
21.08.2018
19:13:19
Flat table не решает задачи eav...

А причес тут шестая нормальная форма? Как она поможет?

Yaroslav
21.08.2018
19:14:22
Flat table не решает задачи eav...
Почему же? Да, это DDL (как и 6NF).

Сергей
21.08.2018
19:15:22
На момент запуска приложения я еще не знаю структуру данных. Я ее другими таблицами описываю и в рантайме пишу в eav

Yaroslav
21.08.2018
19:15:25
А причес тут шестая нормальная форма? Как она поможет?
entity_propertyX(entity_id REFERENCES entities, property REFERENCES property_values).

Сергей
21.08.2018
19:16:10
entity_propertyX(entity_id REFERENCES entities, property REFERENCES property_values).
Я не понял что это, дай ссылку на доку

Yaroslav
21.08.2018
19:17:10
На момент запуска приложения я еще не знаю структуру данных. Я ее другими таблицами описываю и в рантайме пишу в eav
Да, я знаю. А с flat table меняется структура таблицы (и какие-то, возможно, добавляются), в runtime.

Я не понял что это, дай ссылку на доку
Ну, например (первое попавшееся): https://stackoverflow.com/questions/4824714/would-like-to-understand-6nf-with-an-example

Сергей
21.08.2018
19:21:08
Вроде понял. То есть для каждого атрибута таблица?

Yaroslav
21.08.2018
19:23:08
Вроде понял. То есть для каждого атрибута таблица?
В крайнем случае, да. На практике чаще всего группируют, впрочем (по смыслу, чтобы все связанные (используемые только вместе) атрибуты были в одной таблице).

Сергей
21.08.2018
19:23:50
А что делать, если заранее не знаю аттрибутов?

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

Yaroslav
21.08.2018
19:28:11
А что делать, если заранее не знаю аттрибутов?
А как Вы обычно эту задачу решаете? Вот откуда Вы знаете, что у поставщика есть номер... что они вообще в таблице Vendor хранятся? ;) И что значат другие поля в этой таблице, что с ними делать? Т.е. здесь нужна какая-то поддержка этих динамических атрибутов в приложении. Нередко делают для этого какой-нибудь "каталог метаданных", в виде таблиц в той же базе данных.

Антон
21.08.2018
19:29:16
В общем то я на той стадии думания и пока незнаю какой вариант выбрать

Google
Yaroslav
21.08.2018
19:29:37
Но я видел, как это делали и в приложении, кстати (синхронное изменение каталога в приложении и структуры в базе... но это как-то не очень).

Антон
21.08.2018
19:30:06
У меня есть типы товаров и к ним надо динамически привязывать и создавать атрибуты. Мало того у товара могут быть различные варианты с разными свойствами

Что можете сказать про json? Стоит ли вместо eav?

Конечно же помимо лёгкости решения хочется ещё и поддерживать это легко

Yaroslav
21.08.2018
19:34:02
Что можете сказать про json? Стоит ли вместо eav?
Понимаете, зависит от важности этого для Вас (Ваших пользователей). Я вот видел ситуации, когда пользователей, на самом деле, устраивало, что там (в атрибутах) куча мусора, что запросы возвращают чёрт знает что, что нетривиальные тормозят. Если это сойдёт, то EAV — Ваш выбор. ;) IMHO, JSON(b) может быть лучше EAV... но примерно так же, как тиф лучше чумы. :(

Антон
21.08.2018
19:34:49
Что из этих двух проще а реализации. Что быстрее во внедрении, и что легче поддерживать и понимать тоже важные факторы для меня

Решили пока просто построить с использованием jsonb несколько таблиц и поделать выборки

Код даже не писали

Yaroslav
21.08.2018
19:37:16
Идеального решения все равно не найти. Я это понимаю.
Я только что тут рассказывал про другие решения, не заметили?! ;)

Антон
21.08.2018
19:37:38
Про какое решение именно вы имеете ввиду?

Yaroslav
21.08.2018
19:38:38
Они ещё по-моему сложнее
IMHO, они выгодно отличаются от EAV/JSONb тем, что это хотя бы решения. ;)

Антон
21.08.2018
19:39:33
Я незнаю что такое flat table увы (

Видимо это все атрибуты в таблице одной?

Тогда мы модифицируем саму таблицу при добавлении нового свойства?

Yaroslav
21.08.2018
19:40:36
Видимо это все атрибуты в таблице одной?
Да, всего лишь. :) NULL-able. И да, модифицируем таблицу.

Антон
21.08.2018
19:40:55
Блин сурово звучит

Yaroslav
21.08.2018
19:43:31
Блин сурово звучит
Ну а мне кажется, что добавить ссылочную целостность и правильные типы в EAV — гораздо суровее (и быстро начинает напоминать разработку недо-СУБД "внутри" существующей... и неспроста). ;)

Google
Антон
21.08.2018
19:44:07
Так я то вообще пока в сторону jsonb )))

+ метаданные в отдельной таблице

Есть таблица свойств и их описание. А в товаре значения свойств в jsonb

Все остальные sql

Yaroslav
21.08.2018
19:45:02
Так я то вообще пока в сторону jsonb )))
А у него примерно те же проблемы (но, к счастью, хоть примитивные типы есть).

Есть таблица свойств и их описание. А в товаре значения свойств в jsonb
Ну а где всё прочее, что даёт "обычная" модель? Например, ссылочная целостность? (Кстати, то, что в JSONb есть типы, не избавляет их хранения в метаданных.) И ещё появляется такая штука, как проверка схемы JSON (которой в обычной схеме нет по очевидной причине). ;)

Yaroslav
21.08.2018
19:53:02
Чёйта нереляционный? В котором месте?
Тавой-то. Поле V в EAV таблице какого типа?

Антон
21.08.2018
19:56:47
Ну я подумал что буду валидировать с помощью таблицы метаданных. Мне в eav не нравится то что значение это строка

Или придется делать под инт одну таблицу, под строки другую

И так далеп

Yaroslav
21.08.2018
20:00:00
Ну я подумал что буду валидировать с помощью таблицы метаданных. Мне в eav не нравится то что значение это строка
Вот поэтому это и нереляционная модель (т.е. с точки зрения теории). Т.е. домен этого поля — это... "ну, эээ, какие-то неведомые данные". Поэтому и FK с него не сделаешь, и т.п... а потом начинают возникать идеи про "придется делать под инт одну таблицу, под строки другую"... и вот кто-то уже пишет свою недо-СУБД. ;)

Антон
21.08.2018
20:00:43
Ну так раз данные неструктурированные так json же лучше?

Если не рассматривать 6ю форму и плоскую таблицу

Если у товара могут быть характеристики не известно какие то это что то типа документа

Понимаю что подходы разные. Сижу пытаюсь оправдать свой выбор в сторону jsonb если честно

Лукавить не буду

Yaroslav
21.08.2018
20:02:46
Ну так раз данные неструктурированные так json же лучше?
Если у вас действительно неструктурированные данные — да, лучше. Только вот я что-то сомневаюсь. ;) К примеру, Вас устроит такое: {"время высыхания":"5 метров"} ? Если нет, то всё-таки какая-то структура у Вас есть. А если устроит, то почему бы и нет. :)

Google
Антон
21.08.2018
20:03:23
Я подумал сделать так. Что свойства будут иметь варианты значений

Как метаданные

За рамки которых выходить нельзя. А если можно то оно не участвует в фильтрации, а просто описательное поле и контент менеджер сам мудак что так заполнил. Но те свойства что в фильтрах они могут быть только из существующих значений и будут администрироваться

У свойства будет уникальный символьный код, которое будет ключом

Т.е. мы сами введем некоторые ограничения чтобы пытаться сохранить целостность данных

Yaroslav
21.08.2018
20:08:50
Т.е. мы сами введем некоторые ограничения чтобы пытаться сохранить целостность данных
Я не спорю, что при достаточных усилиях можно написать свою СУБД внутри другой.. только вот стоит ли? > Но те свойства что в фильтрах они могут быть только из существующих значений и будут администрироваться Про сортировку подумайте / не забудьте, если уж будете делать, кстати. Но я это всё к тому, что Вы просто потратите какое-то (немалое?) время на реализацию того, что СУБД дала бы Вам и так... да и реализация, скорее всего, выйдет кривая. :(

Yaroslav
21.08.2018
20:15:49
Сортировку подумали
Ну, как хотите. :( Запросы ещё попробуйте. А, и ещё: . В отличие от 6NF (и даже от EAV) JSONb-поля обновляются только целиком — если нужно обновить один из сотни атрибутов, переписываются все. . Подумайте про индексацию, если будут нетривиальные запросы (можно посмотреть на expressional индексы). (И да, если Вы таких индексов не будете использовать, производительность у Вас может быть не очень... по разным причинам).

Антон
21.08.2018
20:16:49
Я читал про gis индексы. Это они?

Yaroslav
21.08.2018
20:17:13
Но кажется что это ещё сложнее. Придется какой то генератор писать который будет добавлять поля в таблицу
Да, но то, что придётся делать при EAV/JSONb (контроль целостности и схемы вручную), делать не придётся. :)

Антон
21.08.2018
20:17:30
Ой наверное gin index

Yaroslav читал что с версии 9.5 можно какой то ключ только обновить

Страница 947 из 1062