powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Пронетирование бд электроэнергетических устройств
25 сообщений из 106, страница 2 из 5
Пронетирование бд электроэнергетических устройств
    #39673336
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помидор, берите любой многоуровневый JSON и считайте скорость
lvl1 => [
lvl2 => [key21 => val21, key22 => [
lvl3 => [key31 => val31, key 32 => [
lvl4 => [key41 => val41]
]]]

вот наделайте таких миллион строк и тестируйте поиск val31, val41.
ну или https://postgrespro.ru/docs/postgrespro/10/datatype-json#JSON-INDEXING]почитайте внимательно доки
и послушайте Бартунова перед сном:
YouTube Video
...
Рейтинг: 0 / 0
Пронетирование бд электроэнергетических устройств
    #39673341
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78Помидор, берите любой многоуровневый JSON

Ээ, а при чем тут "многоуровневый JSON"? Вы же вроде c EAV-моделью собрались сравнивать - какая это EAV-модель требует для отображения именно многоуровневый JSON для каждого entity?
...
Рейтинг: 0 / 0
Пронетирование бд электроэнергетических устройств
    #39673344
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин, а это что по-вашему?
Код: sql
1.
2.
3.
4.
5.
SELECT ...
FROM t1
JOIN t2 ON t1.id = t2.uid
LEFT JOIN t3 ON t3.id = t2.cid
LEFT JOIN t4 ON t4.id = t3.pid
...
Рейтинг: 0 / 0
Пронетирование бд электроэнергетических устройств
    #39673346
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и далее, соот-но: WHERE t3.a = x AND t4.b = y
...
Рейтинг: 0 / 0
Пронетирование бд электроэнергетических устройств
    #39673358
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78 Кот Матроскин, а это что по-вашему?А это сбор одной строки. Достать одну строку с BLOB (а это можеть быть хоть JSON хоть XML) в разы быстрее чем в EAV. И вероятность накосячить у EAV выше.
...
Рейтинг: 0 / 0
Пронетирование бд электроэнергетических устройств
    #39673363
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78Кот Матроскин, а это что по-вашему?

Какой-то незаконченный запрос непонятно чего :) может сойти в качестве примера "как не надо называть объекты в БД".

Я спросил структуру EAV (т.е., грубо говоря, какие сущности с какими атрибутами Вы планируете в ней хранить).
И почему-то мне кажется, что в JSON-ах, хранящих эти атрибуты для каждой сущности, вполне можно будет обойтись одним уровнем.
...
Рейтинг: 0 / 0
Пронетирование бд электроэнергетических устройств
    #39673366
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПомидорНу может в этой статье ничего не сказано как ограничить администратора системы который собственно и решает надо добавлять новое поле или нет, но большой разницы с eav не вижу. Да, в случае с eav это ограничение на основе внешних ключей на уровне базы данных, а в случае с жейсон эту же логику ограничений можно сделать на уровне приложения.

Тогда postgres здесь как бы не упёрся, берём монгу или другое документо-ориентированное хранилище и привет. Суть именно EAV в сохранении ограничений целостности БД, хоть в какой-то мере.


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

Это бардак.
...
Рейтинг: 0 / 0
Пронетирование бд электроэнергетических устройств
    #39673368
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПомидорВ случае с постгерс ни не заставляет все поля кроме первичного ключа загонять в жейсон поле. Жейсон поле просто приятная возможность чтобы не плодить лишние сущности в базе, причем очень эффективная.

Эффективная, но это не альтернатива EAV, в полной мере так сказать. Это другое. Например, со стороны приложения запихать каких-то полей, чудоковатых, при чём у каждой записи вообще свой набор полей. Или сохранить объектную структуру документа, да много чего. Но это не EAV.
...
Рейтинг: 0 / 0
Пронетирование бд электроэнергетических устройств
    #39673370
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt Но это не EAV.
Какая задача, легко решаемая EAV, не может быть решена при помощи подхода с JSON/XML?
...
Рейтинг: 0 / 0
Пронетирование бд электроэнергетических устройств
    #39673372
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt Суть именно EAV в сохранении ограничений целостности БД, хоть в какой-то мереЭто какие такие ограничения накладывает EAV?
...
Рейтинг: 0 / 0
Пронетирование бд электроэнергетических устройств
    #39673374
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинhVostt Но это не EAV.
Какая задача, легко решаемая EAV, не может быть решена при помощи подхода с JSON/XML?

Ну давайте посмотрим. Независимость от конкретных РСУБД. Ограничения целостности (не может быть значений отсутствующих атрибутов). Расширенный EAV мог бы вести типовые значения в отдельных таблицах или колонках, т.е. спектр типов, поддерживаемый БД шире JSON, даже в понятиях ANSI. Ну XML слишком жирный, хотя поддерживаемых примитивных типов больше.

И "решена", имеется в виду средствами БД. Так как если сводить на уровень приложения, вообще всё можно решить, даже без БД ))
...
Рейтинг: 0 / 0
Пронетирование бд электроэнергетических устройств
    #39673375
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257hVosttСуть именно EAV в сохранении ограничений целостности БД, хоть в какой-то мереЭто какие такие ограничения накладывает EAV?

Нельзя создать значение для отсутствующего атрибута. Можно запретить удаление атрибута при наличии значений. Если создавать типовые колонки или таблицы значений, можно задать соответственно типовые ограничения, в том числе ссылки.
...
Рейтинг: 0 / 0
Пронетирование бд электроэнергетических устройств
    #39673377
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскинtip78Кот Матроскин, а это что по-вашему?

Какой-то незаконченный запрос непонятно чего :) может сойти в качестве примера "как не надо называть объекты в БД".

Я спросил структуру EAV (т.е., грубо говоря, какие сущности с какими атрибутами Вы планируете в ней хранить).


как это "непонятно чего"? Обычная отчётность захватывает кучу таблиц и требует их фильтрации.
Поиск свойств товаров.
Любые случаи, которые не решаются простым "overlaps".

авторИ почему-то мне кажется, что в JSON-ах, хранящих эти атрибуты для каждой сущности, вполне можно будет обойтись одним уровнем.
я не пойму, вы никогда не видели многоуровневые JSON-ы?
Берёте любой и ищите значение из последней группы, а потом сравниваете с поиском в отдельных колонках.
...
Рейтинг: 0 / 0
Пронетирование бд электроэнергетических устройств
    #39673378
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257tip78 Кот Матроскин, а это что по-вашему?А это сбор одной строки. Достать одну строку с BLOB (а это можеть быть хоть JSON хоть XML) в разы быстрее чем в EAV. И вероятность накосячить у EAV выше.
не достать. НАЙТИ! В последней ветке.
...
Рейтинг: 0 / 0
Пронетирование бд электроэнергетических устройств
    #39673380
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttКот Матроскинпропущено...

Какая задача, легко решаемая EAV, не может быть решена при помощи подхода с JSON/XML?

Ну давайте посмотрим. Независимость от конкретных РСУБД.

Вполне достигается :) Вряд ли найдется СУБД, которая не сможет хранить XML/JSON. Возможно, не получится эффективно искать в них - ну так опаньки, "независимость от конкретных СУБД" вообще плохо сочетается с максимальной эффективностью, тут снявши голову по волосам не плачут.

hVostt Ограничения целостности (не может быть значений отсутствующих атрибутов).

У XML и JSON внезапно есть схемы :) Возможности которых гораздо шире, чем "не может быть значений отсутствующих атрибутов". Так что тут минус у EAV.
...
Рейтинг: 0 / 0
Пронетирование бд электроэнергетических устройств
    #39673382
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78Кот Матроскинпропущено...

Какой-то незаконченный запрос непонятно чего :) может сойти в качестве примера "как не надо называть объекты в БД".

Я спросил структуру EAV (т.е., грубо говоря, какие сущности с какими атрибутами Вы планируете в ней хранить).


как это "непонятно чего"? Обычная отчётность захватывает кучу таблиц и требует их фильтрации.

Я еще раз напоминаю, что Вы собрались сравнивать EAV . Так что давайте будем смотреть запрос сущностей, лежащих в EAV, и по атрибутам, тоже лежащим в EAV.
...
Рейтинг: 0 / 0
Пронетирование бд электроэнергетических устройств
    #39673385
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинВполне достигается :) Вряд ли найдется СУБД, которая не сможет хранить XML/JSON. Возможно, не получится эффективно искать в них - ну так опаньки, "независимость от конкретных СУБД" вообще плохо сочетается с максимальной эффективностью, тут снявши голову по волосам не плачут.

Вот не надо. Классический EAV, будет примерно одинаковый на широком спектре СУБД и примерно одинаково будет работать по скорости.

Инструменты для работы с XML/JSON в разных СУБД, если они есть, то работа с ними отличается полностью. А хранить типа в string, ну это извините, уже за рамками дискуссии. Можно всю БД таким образом хранить в одном поле одной записи в XML.


Кот МатроскинУ XML и JSON внезапно есть схемы :)

Динамические схемы? Которые проверяются со стороны БД? Нет? Тогда не очень тут говорить :)

Кот МатроскинВозможности которых гораздо шире, чем "не может быть значений отсутствующих атрибутов". Так что тут минус у EAV.

Это поддерживается СУБД? В динамике? Нет? Ну а чего тогда.
...
Рейтинг: 0 / 0
Пронетирование бд электроэнергетических устройств
    #39673389
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt

Кот МатроскинУ XML и JSON внезапно есть схемы :)

Динамические схемы?

Что имеется в виду под "динамическими схемами"?
...
Рейтинг: 0 / 0
Пронетирование бд электроэнергетических устройств
    #39673393
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинЧто имеется в виду под "динамическими схемами"?

Значит новые атрибуты добавляются/изменяются как данные.
...
Рейтинг: 0 / 0
Пронетирование бд электроэнергетических устройств
    #39673397
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttКот МатроскинЧто имеется в виду под "динамическими схемами"?

Значит новые атрибуты добавляются/изменяются как данные.
Они добавляются и изменяются, но не "как данные" (и это, опять же, плюс, а не минус). Путать в один винегрет данные и метаданные - это родимое пятно EAV, странно это считать достоинством.
...
Рейтинг: 0 / 0
Пронетирование бд электроэнергетических устройств
    #39673404
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинhVosttпропущено...


Значит новые атрибуты добавляются/изменяются как данные.
Они добавляются и изменяются, но не "как данные" (и это, опять же, плюс, а не минус). Путать в один винегрет данные и метаданные - это родимое пятно EAV, странно это считать достоинством.

В этом весь смысл EAV, а не достоинство. Иначе нафига мне эти JSON с XML-ем упёрлись, если я просто могу создавать таблицы и налаживать между ними связи? Как обычно.
...
Рейтинг: 0 / 0
Пронетирование бд электроэнергетических устройств
    #39673411
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскинtip78пропущено...


как это "непонятно чего"? Обычная отчётность захватывает кучу таблиц и требует их фильтрации.

Я еще раз напоминаю, что Вы собрались сравнивать EAV . Так что давайте будем смотреть запрос сущностей, лежащих в EAV, и по атрибутам, тоже лежащим в EAV.
ну так разложите дерево JSON по таблицам и сравнивайте. Я про это говорю уже 3й пост.
Или откройте видео на 25:00 и послушайте минуту самих разработчиков.
Кстати, hVostt напомнил ещё один важный момент - даже цифры там являются текстом. Т.е. скорость поиска падает уже даже на этом простом факте.
...
Рейтинг: 0 / 0
Пронетирование бд электроэнергетических устройств
    #39673413
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, на 29й минуте он рассказывает про jsonpath, а на 31й про ф-ю JSON_TABLE()
оба нововведения выйдут в 11й версии
'jsonpath' -- позволяет указывать путь поиска внутри дерева. Крутой бафф индексов.
JSON_TABLE() -- позволяет представить JSON-tree в виде таблицы. Делать с ней JOIN и т.д.

Т.е. мы получим EAV через JSON. На-ко-нец-то.
Вопрос - "а нах*й оно нам надо?", это отдельный вопрос.
Искать по глубокому дереву всё ещё будет медленнее, чем в обычном EAV. Разве что только по верхней ветке будет более-менее быстро.
Но с отдельными колонками думаю всё-равно не сравнить.
...
Рейтинг: 0 / 0
Пронетирование бд электроэнергетических устройств
    #39673420
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78,

На самом деле JSONB действительно лучше, чем EAV, если не принимать во внимание такие недостатки как:

крайне сильная зависимость от конкретной СУБД и даже от конкретной её версии, это значит, что для другой СУБД придётся переписать всё, в то время как EAV останется рабочим на стандартном диалекте SQL

очень слабый контроль целостности со стороны БД

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

Но это не EAV, не является её альтернативой, и не решает задач так, как их решает EAV.
...
Рейтинг: 0 / 0
Пронетирование бд электроэнергетических устройств
    #39673421
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78Искать по глубокому дереву всё ещё будет медленнее,
В третий раз - чтобы эмулировать EAV, никакие "глубокие деревья" в JSON не нужны.
...
Рейтинг: 0 / 0
25 сообщений из 106, страница 2 из 5
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Пронетирование бд электроэнергетических устройств
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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