powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
25 сообщений из 65, страница 1 из 3
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38718871
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребят, привет!

А вот изжил ли Entity-Attribute-Value (EAV) с приходом NoSQL?

Вот смотрите, раньше, если нужно было обеспечить клиентов продуктом, где схема данных заранее неизвестна и должна конфигурироваться в рантайме администратором системы, то EAV был единственным вариантом.

Сейчас же появились NoSQL решения. Они вроде как-то предполагают гибкую модель данных.

Собственно, есть ли смысл еще в EAV поверх реляционной БД, раз есть NoSQL? В чем преимущества EAV перед NoSQL и когда его имеет смысл использовать?

Спасибо.
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38718876
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VetalСобственно, есть ли смысл еще в EAV поверх реляционной БД, раз есть NoSQL?
Нет, нету. Все на Носиквел!

Самое восхитительное на носиквеле это то, что никто, кто ушёл туда - ещё не вернулся чтобы
рассказать об ощущениях. Видимо, умирают от экстаза.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38718918
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vetal, дружище, на конкурсе идиотских вопросов вы бы безоговорочно заняли первое место. Сконструировать вопрос только из фейков - это несомненный успех.

Куда катится этот мир...
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38719908
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий, а если серьезно? Я вот лично не вижу для себя особых преимуществ от EAV по сравнению с лучшими NoSQL решениями? Но очень нужно найти :) Я понимаю, оно прикольно поиздеваться над человеком, который не знает, но если знаете, можно все же ответить по теме?

guest_20040621, объясните, пожалуйста, почему вопрос идиотский и где фейки? Можно ответить по сути?
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38719930
Гхостик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vetalесли нужно было обеспечить клиентов продуктом, где схема данных заранее неизвестна и должна конфигурироваться в рантайме администратором системы, то EAV был единственным вариантом.Чем EAV в этом отношении лучше чем упрощенное, грубо говоря, средство разработки БД?
Допустим, сделал я конфигуратор, который хранит метаданные, умеет добавлять/удалять поля и таблицы и составлять sql-запросы. Чем это хуже EAV?
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38719932
Гхостик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Картинка из соседнего топика:



разве может настраивать только атрибут сущности в eav, но не поле таблицы?
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720000
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> объясните, пожалуйста

Пожалуйста.

Фейк номер раз - "гибкая модель данных". Это маскировка криворукости и кривоголовости, а не особенности структуры данных. Фейк номер два - противопоставление NoSQL и РСУБД. Это примерно то же самое, как сравнивать тёплое и мягкое.
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720070
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VetalЯ вот лично не вижу для себя особых преимуществ от EAV по сравнению с лучшими
NoSQL решениями? Но очень нужно найти
Не нужно. Используй носкуль. Потом вернёшься и расскажешь как оно у тебя работает. Будешь
первым.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720085
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VetalДмитрий, а если серьезно? Я вот лично не вижу для себя особых преимуществ от EAV по сравнению с лучшими NoSQL решениями? Но очень нужно найти :)

EAV плохо поддерживает ссылочные данные, но NOSQL (как минимум то что видел) - еще хуже :)
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720116
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГхостикVetalесли нужно было обеспечить клиентов продуктом, где схема данных заранее неизвестна и должна конфигурироваться в рантайме администратором системы, то EAV был единственным вариантом.Чем EAV в этом отношении лучше чем упрощенное, грубо говоря, средство разработки БД?
Допустим, сделал я конфигуратор, который хранит метаданные, умеет добавлять/удалять поля и таблицы и составлять sql-запросы. Чем это хуже EAV?Тем, что "добавляет/удаляет поля и таблицы". И рано или поздно, но по "живым" данным...
Ошибка в метаданных... Случайно(!) подсунули "не ту конфигурацию"...
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720118
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинEAV плохо поддерживает ссылочные данные,Не намного хуже, чем любая "стандартная" схема - просто добавьте "V со ссылкой"...
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720137
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvКот МатроскинEAV плохо поддерживает ссылочные данные,Не намного хуже, чем любая "стандартная" схема - просто добавьте "V со ссылкой"...
А ссылочная целостность?
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720140
Гхостик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sphinx_mvГхостикпропущено...
Чем EAV в этом отношении лучше чем упрощенное, грубо говоря, средство разработки БД?
Допустим, сделал я конфигуратор, который хранит метаданные, умеет добавлять/удалять поля и таблицы и составлять sql-запросы. Чем это хуже EAV?Тем, что "добавляет/удаляет поля и таблицы". И рано или поздно, но по "живым" данным...
Ошибка в метаданных... Случайно(!) подсунули "не ту конфигурацию"...
1. Бэкапы никто не отменял
2. Удаление можно и "логическое" сделать
3. В EAV удалить поле с данными ничуть не сложнее, и испортить их накатом скрипта для неверной версии тоже
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720171
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскинsphinx_mvпропущено...
Не намного хуже, чем любая "стандартная" схема - просто добавьте "V со ссылкой"...
А ссылочная целостность?А кто сказал, что для "E" нельзя сделать "А", "V" которого ссылается на другое "E"?
С декларативной ссылочной целостностью... И вообще можно хранить строго типизированные данные...
Схема усложнится, но можно.
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720177
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гхостикsphinx_mvпропущено...
Тем, что "добавляет/удаляет поля и таблицы". И рано или поздно, но по "живым" данным...
Ошибка в метаданных... Случайно(!) подсунули "не ту конфигурацию"...
1. Бэкапы никто не отменялНадеюсь, Вы в курсе, сколько времени может занимать восстановление базы данных из бэкапа?
И Вы в курсе, что все это время база физически не доступна ?
Гхостик2. Удаление можно и "логическое" сделатьНу, и чем это отличается от EAV при изменении метаданных его модели?
Гхостик3. В EAV удалить поле с данными ничуть не сложнее, и испортить их накатом скрипта для неверной версии тожеНет необходимости физического удаления стрруктур и данных в EAV. Изменить и восстановить модель проще, чем поднимать бэкап. И работать с несколькими разными версиями моделей в EAV можно одновременно - на одном наборе дланных.
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720187
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскинsphinx_mvпропущено...
Не намного хуже, чем любая "стандартная" схема - просто добавьте "V со ссылкой"...
А ссылочная целостность?Никогда не понимал, зачем нужна СЦ. Эта фича бесполезна и больше мешает, чем помогает.
Вставку/удаление (в т .ч. логическое) нужно делать процедурой, кот. сначала проведет сто проверок и только потом удалит или спрячет. Или выдаст внятное сообщение о причине невыполнения.
СЦ тормозит. Дико мешает перезаливать данные (иногда это нужно).
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720197
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvКот Матроскинпропущено...

А ссылочная целостность?А кто сказал, что для "E" нельзя сделать "А", "V" которого ссылается на другое "E"?
С декларативной ссылочной целостностью....

Кто ее поддерживать будет - некое промежуточное API? А оптимизатор эту "декларативную ссылочную целостность" использовать будет?
Это и называется "поддерживается плохо". Смотрите мое первое сообщения - я там как раз говорю, что в EAV можно хранить ссылочные данные, но криво и через задницу.
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720200
Гхостик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Надеюсь, Вы в курсе, сколько времени может занимать восстановление базы данных из бэкапа?
> И Вы в курсе, что все это время база физически не доступна ?
Это не аргумент за EAV. Потому что и в ней рестор меньше времени не займет.

> Ну, и чем это отличается от EAV при изменении метаданных его модели?
Ничем. Значит, это не аргумент в пользу EAV.

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

> И работать с несколькими разными версиями моделей в EAV можно одновременно - на одном наборе дланных.
Вот поддержка на уровне СУБД . Поддержка ручками - что в реляционной, что в EAV схеме будет представлять примерно одинаковую сложность.

А аргументы против EAV есть - это худшая производительность и сложность написания запросов по сравнению со стандартной реляционной схемой.
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720206
Гхостик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Вставку/удаление (в т .ч. логическое) нужно делать процедурой, кот. сначала проведет сто проверок и только потом удалит или спрячет. Или выдаст внятное сообщение о причине невыполнения.
Проблема в том, что удаление/изменение может вестись из разных мест. В одном месте сделали все проверки, а во втором забыли. Внешний ключ не зависит от человеческого фактора - от него не уйдешь и не забудешь.

> СЦ тормозит. Дико мешает перезаливать данные (иногда это нужно).
Если есть кривые данные, которые надо залить, можно влить их в промежуточную таблицу без fk, и по мере разбирательства переливать в боевую.
Иметь же кривые данные в боевых таблицах - это бомба замедленного действия, заложенная для самого себя.
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720272
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскинsphinx_mvпропущено...
А кто сказал, что для "E" нельзя сделать "А", "V" которого ссылается на другое "E"?
С декларативной ссылочной целостностью....
Кто ее поддерживать будет - некое промежуточное API?Ну, и какое "промежуточное АПИ" поддерживает на любом современном SQL-сервере FOREIGHN KEY ?!
EAV всего лишь очень сильно нормализованные данные, а на то, до какой степени данные нормализованы (или вообще никак не нормализованы) любому SQL-серверу должно быть сугубо "с высокой колокольни". В середине 2010-х SQL-сервер должен уметь поддерживать внешние ключи - и уметь это делать хорошо .
Кот МатроскинА оптимизатор эту "декларативную ссылочную целостность" использовать будет?Назначение ограничений ссылочной целостности не в том, чтобы ее "использовал оптимизатор", а в том, чтобы не допускать вставку в соответствующее поле неверных значений ключа.
Кот МатроскинЭто и называется "поддерживается плохо". Смотрите мое первое сообщения - я там как раз говорю, что в EAV можно хранить ссылочные данные, но криво и через задницу.Интересная "задница"... :)
Как повесить FOREIGHN KEY между двумя "обычными" таблицами в "обычной" сжеме - то "ничего страшного"... Но как сделать то же самое в EAV - так сразу "фобос и деймос" (с)
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720286
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mv,

чтобы сделать обсуждение более предметным - можно пример EAV-схемы с возможностью использования стандартных foreign key
в атрибутах?
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720312
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гхостик> Надеюсь, Вы в курсе, сколько времени может занимать восстановление базы данных из бэкапа?
> И Вы в курсе, что все это время база физически не доступна ?
Это не аргумент за EAV.Это - аргумент против Вашего предложения по изменениям модели ребилдить схему данных.
ГхостикПотому что и в ней рестор меньше времени не займет.Займет! :)
В EAV "необходимо и достаточно" восстановить/наложить на существующие данные только старую/новую схему данных.
Гхостик> Ну, и чем это отличается от EAV при изменении метаданных его модели?
Ничем. Значит, это не аргумент в пользу EAV.Вы слегка запутались: это был Ваш аргумент в пользу жесткого ребилда схемы. И этот Ваш аргумент оказался немножко бесполезным...
Гхостик>Нет необходимости физического удаления стрруктур и данных в EAV.
Нет необходимости удаления таблиц и полей и в реляционной схеме тоже. Ненужные поля делаются nullable, и в таблице метаданных проставляется признак неактуальности начиная с текущей версии.Во-первых, "на-лицо" - завязка на вендора...
Во-вторых, с "движением вперед" - все более/менее понятно. Но как быть с "движением назад"?
Гхостик> И работать с несколькими разными версиями моделей в EAV можно одновременно - на одном наборе дланных.
Вот поддержка на уровне СУБД . Поддержка ручками - что в реляционной, что в EAV схеме будет представлять примерно одинаковую сложность.Когда-то давно под очень сильным впечатлением от статей Анатолия Тенцера примерно за два с половиной месяца я "нарисовал" на MSSQL EAV-хранилище. С пользовательским интерфейсом... С возможностью версионирования схемы... С разграничением прав пользователей как на типы сущностей, так и на отдельные атрибуты типов... С наложением и суперпозицией типов сущностей - сущность одного типа можно было отмапить в другой тип просто указав идентификатор целевого типа...
Реализация была готова к включению в релиз, но "контора накрылась"...
ГхостикА аргументы против EAV есть - это худшая производительность и сложность написания запросов по сравнению со стандартной реляционной схемой."Худшая производительность" и "сложность написания запросов" при нынешнем тотальном увлечении ORMами - это ну, очень весомо...
Во-вторых, только полный (цензура) будет использовать EAV для чего-нибудь еще, кроме хранения редко меняющихся данных.
Ну, а переписывать весь DAL после изменения "стандартной реляционной схемы" - это несказаемо "сексуально"!
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720329
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскинчтобы сделать обсуждение более предметным - можно пример EAV-схемы с возможностью использования стандартных foreign key
в атрибутах?"Рисовать" не буду, но "расскажу" в двух словах: в "стандартном EAV" добавить в метаданные для атрибутов признак "ссылочный", а в данных еще одну "value"-таблицу, имеющую ссылку (внешний ключ) "значимого" поля на ключ в "entity" - вроде бы очевидное решение...
Про "одинаковость" типа данных полей для создания внешнего ключа, думаю, упоминать нет необходимости?
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720346
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVКот Матроскинпропущено...

А ссылочная целостность?Никогда не понимал, зачем нужна СЦ . Эта фича бесполезна и больше мешает, чем помогает.
Вставку/удаление (в т .ч. логическое) нужно делать процедурой , кот. сначала проведет сто проверок и только потом удалит или спрячет. Или выдаст внятное сообщение о причине невыполнения.Главное, что Вы принципиально не возражаете, против необходимости поддерживать ссылочную целостность. Но процедуру , которая это будет делать, сначала нужно написать - в отличие от декларативной поддержки ссылочной целостности.
К тому же, в следствие особенностей по-командного выполнения запросов в процедуре результат такого контроля может давать неадекватные результаты: между разными даже последовательными командами походит некоторое время, в течение которого в параллельной сессии данные могут оказаться уже измененными и не соотвествовать результатам проверки, выполненные в текущей сессии.
LSV СЦ тормозит . Дико мешает перезаливать данные (иногда это нужно).Потому и нужно внимательно думать, где это действительно необходимо и как это оптимизировать.
Ну, а для перезаливки всегда можно использовать больше одного спрособа загрузки данных. И самый простой из них - временное отключение консрэйнтов на период заливки.
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720351
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvа в данных еще одну "value"-таблицу, имеющую ссылку (внешний ключ) "значимого" поля на ключ в "entity"

Ничего не понял. И что помешает записать в этот атрибут ссылку на Entity другого типа? Foreign key пропустит - вполне валидная ссылка на Entity, никаких проблем.
...
Рейтинг: 0 / 0
25 сообщений из 65, страница 1 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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