powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
65 сообщений из 65, показаны все 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
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720353
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскинможно пример EAV-схемы с возможностью использования стандартных
foreign key в атрибутах?
Код: sql
1.
alter table values add constraint foreign key (ref_value) references entities (id);


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720392
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинИ что помешает записать в этот атрибут ссылку на Entity другого типа?Бизнес-логика? Валидация в интерфейсе пользователя?
Кот МатроскинForeign key пропустит - вполне валидная ссылка на Entity, никаких проблем.Потому как это и есть "ссылочная целостность"...
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720398
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но процедуру, которая это будет делать, сначала нужно написать - в отличие от декларативной поддержки ссылочной целостности.Зато процедура может решить ВЕСЬ спектр задач сохранения данных, а не только одну, как встроенная СЦ.
В реальной ситуации обычной СЦ просто не хватает.
А делать у половины таблиц СЦ, а у другой половины процедуру неразумно.
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720418
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvКот МатроскинИ что помешает записать в этот атрибут ссылку на Entity другого типа?Бизнес-логика? Валидация в интерфейсе пользователя?

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

ЗЫ. У внешних ключей есть еще одна явная польза - легко восстанавливаются логические связи между данными в базе.
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720444
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVЗато процедура может решить ВЕСЬ спектр задач сохранения данных
За исключением одной: поддержания собственно ссылочной целостности в многопользовательском
окружении без эскалации эксклюзивных блокировок на всю БД.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720454
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскинsphinx_mvпропущено...
Бизнес-логика? Валидация в интерфейсе пользователя?

Именно это я и назвал "промежуточным API"Если подходить с этого ракурса, то даже банальная вставка данных в EAV-базу тоже выполняется через "промежуточное АПИ"...
Кот Матроскина валидация в интерфейсе пользователя - это вообще ни о чем, в мою текущую систему 99% данных приходят минуя какие-либо интерфейсы пользователяЭто ничего, что "пользователем" системы может выступать какой-нибудь программно-аппаратный автомат, который тупо льет данные в базу через "пользовательский интерфейс", представленный некоторой вьюхой или хранимой процедурой?
Кстати, такие варианты очень часто рассиматриваются при лицензировании серверов баз данных.
Кот Матроскинsphinx_mvПотому как это и есть "ссылочная целостность"...
Ну да, когда родителем ребенка можно указать в базе автомобиль КАМАЗ или фирму "Ромашка" - это ж отличная ссылочная целостность, непонятно что еще нужно :)Ну, это на самом деле элементарно!
Вот, что сайтопейсатели какого-нибудь "ынтырнет-магазина" позволяют выбрать в форме при заказе, и что родители ткнут в этой самой форме, такой "паровоз" ребенок и получит - EAV тут при чем?! Чистая "бизнес-логика", будь она неладна... :)
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720457
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovLSVЗато процедура может решить ВЕСЬ спектр задач сохранения данных
За исключением одной: поддержания собственно ссылочной целостности в многопользовательском
окружении без эскалации эксклюзивных блокировок на всю БД.
Тут бы еще про "версионники" вспомнить...
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720503
Фотография DirksDR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vetal
Код: sql
1.
2.
3.
А вот изжил ли Entity-Attribute-Value (EAV) с приходом NoSQL?...
Сейчас же появились NoSQL решения. Они вроде как-то предполагают гибкую модель данных.
 


Не "гибкую", а никакой модели.
ИМХО, гибкость и NoSQL понятия несовместимые. Посмотрите топик и статью
http://www.sql.ru/forum/1107687/statya-na-habre-pochemu-vy-nikogda-ne-dolzhny-ispolzovat-mongodb
(Статья на Хабре: "Почему вы никогда не должны использовать MongoDB")

Правда, можно взгромоздить на NoSQL свои метаданные а'ля EAV.
И если Ваш код будет управляться этими метаданными, можно получить какую-то гибкость.
Но это значит, что надо не противопрставлять EAV и NoSQL, а совместно использовать.

Но, есть ли смысл? Получится свой вариант СУБД с метаданными...
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720831
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvEAV всего лишь очень сильно нормализованные данныеНичего подобного.Нормализация к этому безобразию не имеет ни малейшего отношения. Это "универсальная модель данных", на которую с легкостью натягивается любая сколь угодно кривая и ненормализованная модель данных предметной области(ПО), используемая в качестве "серебрянной пули". По сути, это всего лишь прослойка между РСУБД и требуемой моделью данных, которую на практике иногда(!) применяют для решения конкретных узкоутилитарных задач. Чаще всего используется неофитами в условиях полного непонимания ПО. В целом, больше создаёт проблем, чем решает.
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720846
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChA(поскипано по причине много букв)Надеюсь, в метаданные (любого) SQL-сервера Вы заглыдывали...
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720851
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvChA(поскипано по причине много букв)Надеюсь, в метаданные (любого) SQL-сервера Вы заглыдывали...Это вопрос или аргумент ? Может попробуете ещё раз ?
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720854
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChAsphinx_mvпропущено...
Надеюсь, в метаданные (любого) SQL-сервера Вы заглыдывали...Это вопрос или аргумент ? Может попробуете ещё раз ?Это был намек... Но если Вам этого намека (и ОЧЕНЬ прозрачного) было не достаточно, могу и разжевать...

Вывод на основе Ваших утверждений: сервера баз данных проектируют неофиты... В базах данных есть структуры для хранения метаданных... Там же есть структуры для хранения данных... И есть даже некоторое API, которое на основе метаданных представляет данные как объекты реляционной базы. Итого, на выходе - "универсальная модель данных, на которую с легкостью натягивается любая сколь угодно кривая и ненормализованная модель данных предметной области(ПО), используемая в качестве серебрянной пули" (с) не буду показывать пальцем чей.

И сугубо на основе Вашего скромного мнения, Вы не вполне адекватно представляете себе ни реальной пользы, ни возможностей, ни границ применимости EAV в базах данных - поэтому Вы считаете, что оно неприменимо. Проблема в том, что оно неприменимо для Вас - это зависит только от задач из Вашей сферы деятельности. А на самом деле "в мире" существуют области, где EAV-модель является не только подходящей, но и подходящей идеально . В качестве простого примера - база данных, обслуживающая RADIUS-сервер, протоколы которого, связанные с аутентификацией, авторизацией и аккаунтингом, состоят из запросов на основе наборов пар "атрибут-значение".

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

EAV - костыли, оправданные в ограниченном количестве случаев. Это не нужно обсуждать, это нужно запомнить.

> В базах данных есть структуры для хранения метаданных...

Вас жестоко обманули. В СУБД есть структуры для хранения метаданных. И никакого отношения к EAV они не имеют. Любая метамодель описывается посредством, например, MOF, которая тоже никакого отношения к EAV не имеет. Здесь тоже нечего обсуждать.

> база данных, обслуживающая RADIUS-сервер

Который в общем случае вполне может обойтись без базы данных.

В сад, юноша.
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38720926
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621EAV - костыли, оправданные в ограниченном количестве случаев.Если Вы настолько умный, Вам следовало давным-давно хотя бы попытаться узнать, что любой принцип проектирования применим в достаточно ограниченном количествое случаев. И очень редко без разумного сочетания разных принципов получается более/менее удовлетворительный результат.
guest_20040621Это не нужно обсуждать, это нужно запомнить.Ну, так и запомнните. Вам это кто-то зарещает?
guest_20040621> В базах данных есть структуры для хранения метаданных...
Вас жестоко обманули. В СУБД есть структуры для хранения метаданных. И никакого отношения к EAV они не имеют.У Вас разрыв шаблона, потому что "там оно так не называется"? Бывает...
Таблицы метаданных, которые описывают правила представления массивов байт в виде таблиц с определенным количеством полей оределенного типа данных... Функционально - близнецы-братья/сестры...
guest_20040621Любая метамодель описывается посредством, например, MOF, которая тоже никакого отношения к EAV не имеет. Здесь тоже нечего обсуждать.EAV - принцип, а не конкретная реализация, которых может быть множество.
guest_20040621> база данных, обслуживающая RADIUS-сервер
Который в общем случае вполне может обойтись без базы данных.А чего Вы скатываетесь в "общий случай"?
Указан вполне конкретный. Или слишком "острые" не могут отличать "общее" от "частного"?

Не понятно, для чего Вам вообще базы данных для "общего случая"?
Счеты, бумага, карандаш - и вперед учитывайте, ничем особо не заморачиваясь.

ЗЫ. guest_ 20040621 ...
2004-06-21 - это памятная для Вас дата чего? Рождения?
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38721098
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvChAЭто вопрос или аргумент ? Может попробуете ещё раз ?Это был намек... Но если Вам этого намека (и ОЧЕНЬ прозрачного) было не достаточно, могу и разжевать...

Вывод на основе Ваших утверждений: сервера баз данных проектируют неофиты... В базах данных есть структуры для хранения метаданных... Там же есть структуры для хранения данных... И есть даже некоторое API, которое на основе метаданных представляет данные как объекты реляционной базы. Итого, на выходе - "универсальная модель данных, на которую с легкостью натягивается любая сколь угодно кривая и ненормализованная модель данных предметной области(ПО), используемая в качестве серебрянной пули" (с) не буду показывать пальцем чей.Вынужден констатировать, что с логикой у Вас те же проблемы, что и со знаниями. Ещё раз, нормализация не имеет никакого отношения к EAV, она применима к РМД. Как бы сам EAV не был нормализован в терминах РМД, это не переносится автоматически на ту модель данных, которую натягивают поверх него.sphinx_mvИ сугубо на основе Вашего скромного мнения, Вы не вполне адекватно представляете себе ни реальной пользы, ни возможностей, ни границ применимости EAV в базах данных - поэтому Вы считаете, что оно неприменимо. Проблема в том, что оно неприменимо для Вас - это зависит только от задач из Вашей сферы деятельности. А на самом деле "в мире" существуют области, где EAV-модель является не только подходящей, но и подходящей идеально . В качестве простого примера - база данных, обслуживающая RADIUS-сервер, протоколы которого, связанные с аутентификацией, авторизацией и аккаунтингом, состоят из запросов на основе наборов пар "атрибут-значение".К сожалению, с телепатией у Вас ещё хуже, чем с вышеупомянутым. О EAV я знаю достаточно, так как сам с ней работал и до сих пор имею дело. И прекрасно знаю все её минусы. С плюсами сложнее, их почти нет.
С чтением, по ходу, у Вас тоже проблемы. Напомню, эта модель представляет интерес только "для решения конкретных узкоутилитарных задач". Не более того. В остальных случаях, она играет роль ненужного костыля и оправдывается обычно только незнанием предметной области. Каждый неофит проходит через стадию увлечения EAV, но некоторые так и остаются в заблуждении, что это вершина проектирования БД.sphinx_mvЗЫ. То, что избыточная нормализация приводит к возникновению структур данных, эквивалентных EAV, оставляю Вам для самостоятельного практического исследования на досуге.Встречное предложение: вместо фантазий попробуйте почитать на досуге что-нибудь про нормализацию, например - Дейта, может попустит. Хотя есть опасение, что не в коня корм.
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38721120
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> любой принцип проектирования применим в достаточно ограниченном количествое случаев

и далее.

Идиоты типа вас не удивляют. Удивляет их желание открывать рот и то, что они умудряются как-то зарабатывать деньги при абсолютном отсутствии высшей нервной деятельности. Метла - ваш основной рабочий инструмент.
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38721220
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChAsphinx_mvпропущено...
Это был намек... Но если Вам этого намека (и ОЧЕНЬ прозрачного) было не достаточно, могу и разжевать...

Вывод на основе Ваших утверждений: сервера баз данных проектируют неофиты... В базах данных есть структуры для хранения метаданных... Там же есть структуры для хранения данных... И есть даже некоторое API, которое на основе метаданных представляет данные как объекты реляционной базы. Итого, на выходе - "универсальная модель данных, на которую с легкостью натягивается любая сколь угодно кривая и ненормализованная модель данных предметной области(ПО), используемая в качестве серебрянной пули" (с) не буду показывать пальцем чей.Вынужден констатировать, что с логикой у Вас те же проблемы, что и со знаниями. Ещё раз, нормализация не имеет никакого отношения к EAV, она применима к РМД. Как бы сам EAV не был нормализован в терминах РМД, это не переносится автоматически на ту модель данных, которую натягивают поверх него.Слов-то сколько! И куча ляпов в "посылах"...
"Модель данных"... "модель данных"... В EAV модель описывает способ хранения и доступа к данным - и ВСЕ! Хоть на ассемблере описывай!
А собственно про данные что промантровать сможете? Вот только терзают смутные сомнения в Ваших "возможностях"... Подсказка: ДАННЫЕ атрибутов сущностей в EAV хранятся в ОЧЕНЬ СИЛЬНО нормализованном виде с использованием реляционной модели. ДАННЫЕ!
"Нормализация не имеет никакого отношения к данным, хранящимся в реляционной модели" (с) ChA - это стопудово в анналы...
Прикол в том, что "нормализация по сути" имеет отношение еще много к чему, кроме реляционной модели данных в СУБД.
ChAsphinx_mvИ сугубо на основе Вашего скромного мнения, Вы не вполне адекватно представляете себе ни реальной пользы, ни возможностей, ни границ применимости EAV в базах данных - поэтому Вы считаете, что оно неприменимо. Проблема в том, что оно неприменимо для Вас - это зависит только от задач из Вашей сферы деятельности. А на самом деле "в мире" существуют области, где EAV-модель является не только подходящей, но и подходящей идеально . В качестве простого примера - база данных, обслуживающая RADIUS-сервер, протоколы которого, связанные с аутентификацией, авторизацией и аккаунтингом, состоят из запросов на основе наборов пар "атрибут-значение".К сожалению, с телепатией у Вас ещё хуже, чем с вышеупомянутым. О EAV я знаю достаточно, так как сам с ней работал и до сих пор имею дело . И прекрасно знаю все её минусы. С плюсами сложнее, их почти нет.Я уже затрудняюсь определить, с чем у Вас проблемы, но пример использования EAV, которое полностью раскрывает плюсы и совершенно игнорирует все минусы, был приведен. Кроме пустопорожнего растекания мыслею по древу Вы ответить ничего не смогли - что, как бы, намекает.
ChAС чтением, по ходу, у Вас тоже проблемы. Напомню, эта модель представляет интерес только "для решения конкретных узкоутилитарных задач". Не более того. В остальных случаях, она играет роль ненужного костыля и оправдывается обычно только незнанием предметной области. Каждый неофит проходит через стадию увлечения EAV, но некоторые так и остаются в заблуждении, что это вершина проектирования БД.Зато у Вас наблюдается не просто ноль с логикой, а отрицательная ее величина... Немеряно пафоса... "Все неофиты"... "Использовать EAV нельзя нигде"... И выделенное красным заставляет ОЧЕНЬ сильно задумываться, к кому Вас отнести... Кстати, в каком месте я говорил о чем-то ином, кроме некоторых вариантов использования Вы тоже придумать так и не смогли... Бывает... Соответственно, у кого проблемы, не считая логики, с чтением - вопрос интересный... Суметь прочитать то, чего не написано - это сильно!..
Но ладно... Расслабьтесь... Считайте, что Вы теперь - Д'Артаньян. Вот только, чтобы быть Д'Артаньяном не достаточно носить белые перчатки.
ChAsphinx_mvЗЫ. То, что избыточная нормализация приводит к возникновению структур данных, эквивалентных EAV, оставляю Вам для самостоятельного практического исследования на досуге.Встречное предложение: вместо фантазий попробуйте почитать на досуге что-нибудь про нормализацию, например - Дейта, может попустит. Хотя есть опасение, что не в коня корм.Похоже, Дейта Вы только на обложке и читали... Но зато знаете "цвет учебника" - на твердую троечку потянет...
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38721222
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Идиоты типа вас не удивляют.Просто рекомендация: отодвиньтесь от зеркала и выключите компьютер - становится слишком очевидно, про кого Вы пишите...
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38721303
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sphinx_mv, дружище, именно метла. Не занимайтесь проектированием, вам это противопоказано. И, пожалуйста, не пишите здесь ничего. Мне не доставляет удовольствия называть баранов баранами, даже если они этого заслуживают.
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38721350
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621sphinx_mv, дружище, именно метла. Не занимайтесь проектированием, вам это противопоказано. И, пожалуйста, не пишите здесь ничего. Мне не доставляет удовольствия называть баранов баранами, даже если они этого заслуживают.Рекомендация Вам хотя бы отодвинуться от зеркала действия не возымела...
Жаль, а то мало ли еще кого Вы в зеркале в Вашем-то состоянии способны увидеть...
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38721395
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mv но пример использования EAV, которое полностью раскрывает плюсы и совершенно игнорирует все минусы, был приведенА вот я не знаю как RADIUS работает с БД. Почему именно EAV. И какие плюсы оно раскрывает.
Хотя если вам интереснее кидатся какашками...
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38721398
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mv...Мне жаль, что Ваша воинствующая глупость была ошибочно принята мною всего лишь за заблуждение. К отсутствию у Вас упомянутых ранее положительных качеств добавились сугубо отрицательные, как-то активное враньё и безудержная, высосанная из пальца, чушь. Искренне жаль потраченного на Вас времени.
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38721467
long live sql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VetalEAV был единственным вариантомне совсем
я бы не стал совсем отбрасывать вариант "blob+xml" (часто - таблица с двумя полями, id и blob; xml можно заменить на json или бинарную сериализацию объекта)
- как реализацию в sql именно key-value storage - одного из частых применений nosql (без атрибутов, т.е. всё дерево объекта в одной blob-куче)
минусы ясны (та же ссылочная целостность; при переконфигурации проблематично удалять и переименовывать атрибуты, ладно хоть добавлять нетрудно),
но и плюсы есть (например, скорость)
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38721523
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257sphinx_mv но пример использования EAV, которое полностью раскрывает плюсы и совершенно игнорирует все минусы, был приведенА вот я не знаю как RADIUS работает с БД. Почему именно EAV.Приведу пару примеров не самых сложных RADIUS-пакетов - всего лишь диалапный аккаунтинг ( взято тут )...
пример 1
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Tue Jul 30 14:48:18 1996
	Acct-Session-Id = "35000004"
	User-Name = "bob"
	NAS-IP-Address = 172.16.64.91
	NAS-Port = 1
	NAS-Port-Type = Async
	Acct-Status-Type = Start
	Acct-Authentic = RADIUS
	Service-Type = Login-User
	Login-Service = Telnet
	Login-IP-Host = 172.16.64.25
	Acct-Delay-Time = 0
	Timestamp = 838763298
пример 2
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Tue Jul 30 14:48:39 1996
	Acct-Session-Id = "35000004"
	User-Name = "bob"
	NAS-IP-Address = 172.16.64.91
	NAS-Port = 1
	NAS-Port-Type = Async
	Acct-Status-Type = Stop
	Acct-Session-Time = 21
	Acct-Authentic = RADIUS
	Acct-Input-Octets = 22
	Acct-Output-Octets = 187
	Acct-Terminate-Cause = Host-Request
	Service-Type = Login-User
	Login-Service = Telnet
	Login-IP-Host = 172.16.64.25
	Acct-Delay-Time = 0
	Timestamp = 838763319
Кроме аккаунитинга (навскидку) есть еще аутентификация и авторизация с прописыванием параметров соединения, c динамической маршрутизация. И с RADIUS-протоколом работают не только по диалапу. Количество атрибутов и их типов зависит от вида услуги. Кроме этого возможно использование атрибутов, определяемых производителем оборудования. В одном пакете может быть несколько десятков пар "атрибут-значение" - и количество не постоянно, и для некорых атрибутов допускается повтор.

"Плоскую" таблицу с зарезервированными под каждый атрибут полями использовать? По самым скромным оценкам, примерно полей, этак на 100... И большая часть из из этих полей - "строки".
По отдельной таблице под каждый "чих моды" вид сервиса, под каждого "отдельно взятого" производителя и под каждый "отдельно взятый" тип оборудования? Чтобы "оценить последствия": список словарей одних только вендорских атрибутов, которые поддерживает небезызвестный freeradius , приближается к двум сотням штук...
Так что, EAV - и не париться!
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38721543
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChAsphinx_mv...Мне жаль, что Ваша воинствующая глупость была ошибочно принята мною всего лишь за заблуждение.Это Вы так завуалировано именуете Вашу неспособность вменяемо излагать свои мысли?
А Вы точно уверены, что хоть какие-то мысли у Вас были?
ChAК отсутствию у Вас упомянутых ранее положительных качеств добавились сугубо отрицательные, как-то активное враньёО, как! И это я, оказываеся, с враньем тут засветился... А цитатку не слабо?
ChA и безудержная, высосанная из пальца, чушь.Ваша? Факт!
Вы ее придумали. Вы ее приписали оппоненту. Вы начали с пеной ее опровергать. Справшивается: кто кому ССЗБ?!
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38721551
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mv По самым скромным оценкам, примерно полей, этак на 100... И большая часть из из этих полей - "строки".И чем вас это напрягает?

sphinx_mv список словарей одних только вендорских атрибутов, которые поддерживает небезызвестный freeradius, приближается к двум сотням штук...Опять не вижу проблемы.
По мне что иметь две сотни "логических" объектов, что две сотни физических таблиц разница небольшая.

То есть задача вполне себе легко решается и без EAV.
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38721552
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа удавы, не стоит переходить на личности.
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38721562
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
long live sql я бы не стал совсем отбрасывать вариант "blob+xml"
Такой подход (запечатаную пачку принял/выдал) отлично работает когда данные обрабатываются одним приложением. Но если данные представляют какую либо ценность вне программы, то рано или поздно пачку придется распечатывать (создавать xml индекс например), то есть серверу придется делать двойную работу (скупой платит дважды). Радует только то что этот фунционал берет на себя СУБД.

long live sql при переконфигурации проблематично удалять и переименовывать атрибутыИ если накосячишь, СУБД ругаться не будет, ругаться будет пользователь.

long live sql ладно хоть добавлять нетрудноА типа в реляционную субд добавлять атрибуты трудно.

long live sql но и плюсы есть (например, скорость)А в реляционной субд одна строка по ай-ди долго достается?
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38721594
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257sphinx_mv По самым скромным оценкам, примерно полей, этак на 100... И большая часть из из этих полей - "строки".И чем вас это напрягает?Гигабайтами выделенного для хранения места. Особенно с учетом того, что "плоские" таблицы получатся весьма разряжеными.
Ну, и потом периодически появляются новые типы оборудования, появляются новые типы обрабатываемых пакетов и услуг, появляется необходимость обслуживания дополнительных атрибутов, в которых сначала не было необходимости, и они игнорировались... Таблицы будем расширять? Ну, а куда деваться!
Вот только физическое ограничение на размер записи в MSSQL - 8 килобайт. Аналогичные ограничения есть и для серверов других производителей. Так что упереться в "предел" можно легко и непринужденно - при таких типах данных и при таком ожидаемом количестве полей.
SERG1257sphinx_mv список словарей одних только вендорских атрибутов, которые поддерживает небезызвестный freeradius, приближается к двум сотням штук...Опять не вижу проблемы. Когда используются банальные запрос на вставку записи на 100 полей - в принципе это не проблема, хотя и не очень удобно.
Но значимые атрибуты могут повторяться (с другими значениями) - это уже одной "плоской" таблицей не обойтись.
SERG1257По мне что иметь две сотни "логических" объектов, что две сотни физических таблиц разница небольшая.Логические объекты проще поддерживать, чем такое же количество физических - для внесения изменения в схему, как минимум, нет необходимости физически перестраивать структуру таблиц. А так как спроектировать "хорошо", "сразу" и "надолго" вряд ли получится, то изменять структуру таблиц придется.

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

sphinx_mvТаблицы будем расширять? Ну, а куда деваться!Например сделать таблицу наследник со связью 1:1 с основной. Так что деваться есть куда.

sphinx_mv Но значимые атрибуты могут повторяться (с другими значениями) - это уже одной "плоской" таблицей не обойтись.Это вообще непонятно.
Имя - Вася
Имя - Петя
Сохранить это можно, но как потом с этим дальше жить.

sphinx_mv А так как спроектировать "хорошо", "сразу" и "надолго" вряд ли получится, то изменять структуру таблиц придется.Если в таблице данных нет, то кроить несложно. Если данные есть, то лучше пусть меня остановит движок СУБД, чем я найду мусор в данных.

sphinx_mvПроще просто залить данные по атрибутам "как есть" - "без долгих раздумий".Еще проще залить все сообщение целиком.

Вы как то обходите стороной запросы к вашей EAV базе. Если этим будет заниматся другое приложение, а может и на другом сервере - так пусть оно и парсит и думает куда что записать, чтобы удобно было читать.
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38721653
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257sphinx_mv Гигабайтами выделенного для хранения места. Особенно с учетом того, что "плоские" таблицы получатся весьма разряжеными.Насколько я знаю null поля места не занимают. Так что место расходуется ровно столько же как и для EAV.Для ЛЮБОЙ базы данных? И это гарантированно ни когда не изменится при переходе на другую версию?
Зуб дадите? ;)
SERG1257sphinx_mvТаблицы будем расширять? Ну, а куда деваться!Например сделать таблицу наследник со связью 1:1 с основной. Так что деваться есть куда.Чего уж там: по одной таблице-наследнику со связью 1:1 к основной под каждый атрибут. А потом (сугубо потому что держать 100500 физических таблиц в базе не по фэншую) просто собираем все эти отдельно взятые таблицы в одну "супер-таблицу" (с добавлением поля-идентификатора атрибута) и наслаждаемся вариациями EAV... :)
Какой смысл огород городить?
SERG1257sphinx_mv Но значимые атрибуты могут повторяться (с другими значениями) - это уже одной "плоской" таблицей не обойтись.Это вообще непонятно.
Имя - Вася
Имя - Петя
Сохранить это можно, но как потом с этим дальше жить.Конкретно вот с этим? Возможно, что никак.
Хотя даже тут могут быть варианты: в некоторых задачах бывает важен не порядок следования, а сам факт наличия и сколько раз встречается...
SERG1257sphinx_mv А так как спроектировать "хорошо", "сразу" и "надолго" вряд ли получится, то изменять структуру таблиц придется.Если в таблице данных нет, то кроить несложно. Если данные есть, то лучше пусть меня остановит движок СУБД, чем я найду мусор в данных.Немеряное и практически неуправляемое количество пустых значений в полях записи - это уже само по себе мусор в данных...
SERG1257sphinx_mvПроще просто залить данные по атрибутам "как есть" - "без долгих раздумий".Еще проще залить все сообщение целиком.Зачем?! Чтобы потом ОПЯТЬ парсить для обработки?!
RADIUS-сервер все УЖЕ распарсил на список пар "атрибут-значение", когда получил пакет...
sphinx_mvВы как то обходите стороной запросы к вашей EAV базе. Если этим будет заниматся другое приложение, а может и на другом сервере - так пусть оно и парсит и думает куда что записать, чтобы удобно было читать.База данных - ОБЩАЯ. И хранится в ней уже распарсеные наборы данных, на основании которых по простой и очень гибкой логической модели можно выполнять любые обработки.

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

Вы сказали, что задача идеально подходит под EAV и я пытаюсь понять как оно работает и как бы я это реализовал я.
Что имеем - есть сервис занятый важным и нужным делом. Вы настраиваете сервис писать лог в СУБД. Больше сервис в СУБД не ходок, он делом занят. Затем другая программа (отчет) идет в эту базу и делает по ней отчет или гибкую обработку.
Я правильно понял?

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

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

Это не переход на личности, это оценка квалификации. Ваше право искать жемчуг в дерьме никто не оспаривает.

Стратегически важно, чтобы потолок карьерного роста быдла был ограничен подметанием трамвайных путей. Нужно объяснять, почему это так, или вы самостоятельно воспользуетесь историческими параллелями?
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38721707
long live sql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257А типа в реляционную субд добавлять атрибуты трудно.
[...]
А в реляционной субд одна строка по ай-ди долго достается?дык я же как раз про реляционную субд!!
то есть, к примеру, 1 доп. табличка (id, blob) в той же sql базе вместо прилепленной сбоку nosql
типа, еще 1 альтернатива eav есть же
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38721996
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Господа удавы, не стоит переходить на личности.

Это не переход на личности, это оценка квалификации. Ваше право искать жемчуг в дерьме никто не оспаривает.

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

Самое восхитительное на носиквеле это то, что никто, кто ушёл туда - ещё не вернулся чтобы
рассказать об ощущениях. Видимо, умирают от экстаза.

ну как же. Вот как раз вернулись одни
http://habrahabr.ru/post/231213/
...
Рейтинг: 0 / 0
Если нужна гибкая схема данных: Entity-Attribute-Value (EAV) или NoSQL?
    #38728115
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VetalА вот изжил ли Entity-Attribute-Value (EAV) с приходом NoSQL?

Я не понял, кто кого должен изжить, но EAV -- это реализация идеи schemaless DB.

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


К тому же, я не знаю ни одной стоящей промышленной СУБД на базе идеи NoSQL, такой, чтобы была бы по уровню примерно как Oracle или MSSQLServer или что-то подобное. Я не очень конечно разбираюсь в NoSQL, но знаю достаточно, чтобы утверждать, что хотя бы одной такой СУБД нет в природе, есть огромное количество разных решений, одно другого лучшехуже для каких-то конкретных целей, но какого-то итога, какого-то доминирующего решения нет. Нет даже какого-то одного формата данных для хранения, модели данных.

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


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