|
Пронетирование бд электроэнергетических устройств
|
|||
---|---|---|---|
#18+
Помидор, берите любой многоуровневый 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]почитайте внимательно доки и послушайте Бартунова перед сном: ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 19:50 |
|
Пронетирование бд электроэнергетических устройств
|
|||
---|---|---|---|
#18+
tip78Помидор, берите любой многоуровневый JSON Ээ, а при чем тут "многоуровневый JSON"? Вы же вроде c EAV-моделью собрались сравнивать - какая это EAV-модель требует для отображения именно многоуровневый JSON для каждого entity? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 20:00 |
|
Пронетирование бд электроэнергетических устройств
|
|||
---|---|---|---|
#18+
Кот Матроскин, а это что по-вашему? Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 20:17 |
|
Пронетирование бд электроэнергетических устройств
|
|||
---|---|---|---|
#18+
ну и далее, соот-но: WHERE t3.a = x AND t4.b = y ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 20:18 |
|
Пронетирование бд электроэнергетических устройств
|
|||
---|---|---|---|
#18+
tip78 Кот Матроскин, а это что по-вашему?А это сбор одной строки. Достать одну строку с BLOB (а это можеть быть хоть JSON хоть XML) в разы быстрее чем в EAV. И вероятность накосячить у EAV выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 20:50 |
|
Пронетирование бд электроэнергетических устройств
|
|||
---|---|---|---|
#18+
tip78Кот Матроскин, а это что по-вашему? Какой-то незаконченный запрос непонятно чего :) может сойти в качестве примера "как не надо называть объекты в БД". Я спросил структуру EAV (т.е., грубо говоря, какие сущности с какими атрибутами Вы планируете в ней хранить). И почему-то мне кажется, что в JSON-ах, хранящих эти атрибуты для каждой сущности, вполне можно будет обойтись одним уровнем. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 20:58 |
|
Пронетирование бд электроэнергетических устройств
|
|||
---|---|---|---|
#18+
ПомидорНу может в этой статье ничего не сказано как ограничить администратора системы который собственно и решает надо добавлять новое поле или нет, но большой разницы с eav не вижу. Да, в случае с eav это ограничение на основе внешних ключей на уровне базы данных, а в случае с жейсон эту же логику ограничений можно сделать на уровне приложения. Тогда postgres здесь как бы не упёрся, берём монгу или другое документо-ориентированное хранилище и привет. Суть именно EAV в сохранении ограничений целостности БД, хоть в какой-то мере. ПомидорСкажем администратор системы решил быть таким и таким полям, а модератор хочет обойти это решение, хочет добавить дополнительное поле, это очень легко решается как и в случае с eav моделем. Это бардак. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 21:01 |
|
Пронетирование бд электроэнергетических устройств
|
|||
---|---|---|---|
#18+
ПомидорВ случае с постгерс ни не заставляет все поля кроме первичного ключа загонять в жейсон поле. Жейсон поле просто приятная возможность чтобы не плодить лишние сущности в базе, причем очень эффективная. Эффективная, но это не альтернатива EAV, в полной мере так сказать. Это другое. Например, со стороны приложения запихать каких-то полей, чудоковатых, при чём у каждой записи вообще свой набор полей. Или сохранить объектную структуру документа, да много чего. Но это не EAV. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 21:02 |
|
Пронетирование бд электроэнергетических устройств
|
|||
---|---|---|---|
#18+
hVostt Но это не EAV. Какая задача, легко решаемая EAV, не может быть решена при помощи подхода с JSON/XML? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 21:07 |
|
Пронетирование бд электроэнергетических устройств
|
|||
---|---|---|---|
#18+
hVostt Суть именно EAV в сохранении ограничений целостности БД, хоть в какой-то мереЭто какие такие ограничения накладывает EAV? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 21:11 |
|
Пронетирование бд электроэнергетических устройств
|
|||
---|---|---|---|
#18+
Кот МатроскинhVostt Но это не EAV. Какая задача, легко решаемая EAV, не может быть решена при помощи подхода с JSON/XML? Ну давайте посмотрим. Независимость от конкретных РСУБД. Ограничения целостности (не может быть значений отсутствующих атрибутов). Расширенный EAV мог бы вести типовые значения в отдельных таблицах или колонках, т.е. спектр типов, поддерживаемый БД шире JSON, даже в понятиях ANSI. Ну XML слишком жирный, хотя поддерживаемых примитивных типов больше. И "решена", имеется в виду средствами БД. Так как если сводить на уровень приложения, вообще всё можно решить, даже без БД )) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 21:20 |
|
Пронетирование бд электроэнергетических устройств
|
|||
---|---|---|---|
#18+
SERG1257hVosttСуть именно EAV в сохранении ограничений целостности БД, хоть в какой-то мереЭто какие такие ограничения накладывает EAV? Нельзя создать значение для отсутствующего атрибута. Можно запретить удаление атрибута при наличии значений. Если создавать типовые колонки или таблицы значений, можно задать соответственно типовые ограничения, в том числе ссылки. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 21:22 |
|
Пронетирование бд электроэнергетических устройств
|
|||
---|---|---|---|
#18+
Кот Матроскинtip78Кот Матроскин, а это что по-вашему? Какой-то незаконченный запрос непонятно чего :) может сойти в качестве примера "как не надо называть объекты в БД". Я спросил структуру EAV (т.е., грубо говоря, какие сущности с какими атрибутами Вы планируете в ней хранить). как это "непонятно чего"? Обычная отчётность захватывает кучу таблиц и требует их фильтрации. Поиск свойств товаров. Любые случаи, которые не решаются простым "overlaps". авторИ почему-то мне кажется, что в JSON-ах, хранящих эти атрибуты для каждой сущности, вполне можно будет обойтись одним уровнем. я не пойму, вы никогда не видели многоуровневые JSON-ы? Берёте любой и ищите значение из последней группы, а потом сравниваете с поиском в отдельных колонках. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 21:27 |
|
Пронетирование бд электроэнергетических устройств
|
|||
---|---|---|---|
#18+
SERG1257tip78 Кот Матроскин, а это что по-вашему?А это сбор одной строки. Достать одну строку с BLOB (а это можеть быть хоть JSON хоть XML) в разы быстрее чем в EAV. И вероятность накосячить у EAV выше. не достать. НАЙТИ! В последней ветке. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 21:28 |
|
Пронетирование бд электроэнергетических устройств
|
|||
---|---|---|---|
#18+
hVosttКот Матроскинпропущено... Какая задача, легко решаемая EAV, не может быть решена при помощи подхода с JSON/XML? Ну давайте посмотрим. Независимость от конкретных РСУБД. Вполне достигается :) Вряд ли найдется СУБД, которая не сможет хранить XML/JSON. Возможно, не получится эффективно искать в них - ну так опаньки, "независимость от конкретных СУБД" вообще плохо сочетается с максимальной эффективностью, тут снявши голову по волосам не плачут. hVostt Ограничения целостности (не может быть значений отсутствующих атрибутов). У XML и JSON внезапно есть схемы :) Возможности которых гораздо шире, чем "не может быть значений отсутствующих атрибутов". Так что тут минус у EAV. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 21:36 |
|
Пронетирование бд электроэнергетических устройств
|
|||
---|---|---|---|
#18+
tip78Кот Матроскинпропущено... Какой-то незаконченный запрос непонятно чего :) может сойти в качестве примера "как не надо называть объекты в БД". Я спросил структуру EAV (т.е., грубо говоря, какие сущности с какими атрибутами Вы планируете в ней хранить). как это "непонятно чего"? Обычная отчётность захватывает кучу таблиц и требует их фильтрации. Я еще раз напоминаю, что Вы собрались сравнивать EAV . Так что давайте будем смотреть запрос сущностей, лежащих в EAV, и по атрибутам, тоже лежащим в EAV. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 21:41 |
|
Пронетирование бд электроэнергетических устройств
|
|||
---|---|---|---|
#18+
Кот МатроскинВполне достигается :) Вряд ли найдется СУБД, которая не сможет хранить XML/JSON. Возможно, не получится эффективно искать в них - ну так опаньки, "независимость от конкретных СУБД" вообще плохо сочетается с максимальной эффективностью, тут снявши голову по волосам не плачут. Вот не надо. Классический EAV, будет примерно одинаковый на широком спектре СУБД и примерно одинаково будет работать по скорости. Инструменты для работы с XML/JSON в разных СУБД, если они есть, то работа с ними отличается полностью. А хранить типа в string, ну это извините, уже за рамками дискуссии. Можно всю БД таким образом хранить в одном поле одной записи в XML. Кот МатроскинУ XML и JSON внезапно есть схемы :) Динамические схемы? Которые проверяются со стороны БД? Нет? Тогда не очень тут говорить :) Кот МатроскинВозможности которых гораздо шире, чем "не может быть значений отсутствующих атрибутов". Так что тут минус у EAV. Это поддерживается СУБД? В динамике? Нет? Ну а чего тогда. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 21:46 |
|
Пронетирование бд электроэнергетических устройств
|
|||
---|---|---|---|
#18+
hVostt Кот МатроскинУ XML и JSON внезапно есть схемы :) Динамические схемы? Что имеется в виду под "динамическими схемами"? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 21:51 |
|
Пронетирование бд электроэнергетических устройств
|
|||
---|---|---|---|
#18+
Кот МатроскинЧто имеется в виду под "динамическими схемами"? Значит новые атрибуты добавляются/изменяются как данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 22:01 |
|
Пронетирование бд электроэнергетических устройств
|
|||
---|---|---|---|
#18+
hVosttКот МатроскинЧто имеется в виду под "динамическими схемами"? Значит новые атрибуты добавляются/изменяются как данные. Они добавляются и изменяются, но не "как данные" (и это, опять же, плюс, а не минус). Путать в один винегрет данные и метаданные - это родимое пятно EAV, странно это считать достоинством. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 22:15 |
|
Пронетирование бд электроэнергетических устройств
|
|||
---|---|---|---|
#18+
Кот МатроскинhVosttпропущено... Значит новые атрибуты добавляются/изменяются как данные. Они добавляются и изменяются, но не "как данные" (и это, опять же, плюс, а не минус). Путать в один винегрет данные и метаданные - это родимое пятно EAV, странно это считать достоинством. В этом весь смысл EAV, а не достоинство. Иначе нафига мне эти JSON с XML-ем упёрлись, если я просто могу создавать таблицы и налаживать между ними связи? Как обычно. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 22:49 |
|
Пронетирование бд электроэнергетических устройств
|
|||
---|---|---|---|
#18+
Кот Матроскинtip78пропущено... как это "непонятно чего"? Обычная отчётность захватывает кучу таблиц и требует их фильтрации. Я еще раз напоминаю, что Вы собрались сравнивать EAV . Так что давайте будем смотреть запрос сущностей, лежащих в EAV, и по атрибутам, тоже лежащим в EAV. ну так разложите дерево JSON по таблицам и сравнивайте. Я про это говорю уже 3й пост. Или откройте видео на 25:00 и послушайте минуту самих разработчиков. Кстати, hVostt напомнил ещё один важный момент - даже цифры там являются текстом. Т.е. скорость поиска падает уже даже на этом простом факте. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 23:08 |
|
Пронетирование бд электроэнергетических устройств
|
|||
---|---|---|---|
#18+
кстати, на 29й минуте он рассказывает про jsonpath, а на 31й про ф-ю JSON_TABLE() оба нововведения выйдут в 11й версии 'jsonpath' -- позволяет указывать путь поиска внутри дерева. Крутой бафф индексов. JSON_TABLE() -- позволяет представить JSON-tree в виде таблицы. Делать с ней JOIN и т.д. Т.е. мы получим EAV через JSON. На-ко-нец-то. Вопрос - "а нах*й оно нам надо?", это отдельный вопрос. Искать по глубокому дереву всё ещё будет медленнее, чем в обычном EAV. Разве что только по верхней ветке будет более-менее быстро. Но с отдельными колонками думаю всё-равно не сравнить. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 23:27 |
|
Пронетирование бд электроэнергетических устройств
|
|||
---|---|---|---|
#18+
tip78, На самом деле JSONB действительно лучше, чем EAV, если не принимать во внимание такие недостатки как: крайне сильная зависимость от конкретной СУБД и даже от конкретной её версии, это значит, что для другой СУБД придётся переписать всё, в то время как EAV останется рабочим на стандартном диалекте SQL очень слабый контроль целостности со стороны БД Хранение структур данных в таблицах с возможностью поиска, индексации, и построения запросов это маст хев однозначно. Полноценное документное хранилище в реляционке, конец войнам и спорам. Но это не EAV, не является её альтернативой, и не решает задач так, как их решает EAV. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 23:46 |
|
|
start [/forum/topic.php?fid=32&msg=39673368&tid=1540020]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 162ms |
0 / 0 |