powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Использование таблицы для хранения атрибутов сущности по принципу Key-Value
25 сообщений из 75, страница 1 из 3
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39898632
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть основная таблица для хранения сущности, в которой довольно много столбцов. Периодически приходят требования на расширение списка атрибутов сущности. Во многих случаях новый атрибут нужен лишь для небольшого процента сущностей и я бы не хотел все больше раздувать таблицу, добавляя в нее столбцы, которые часто будут разреженные.
Поэтому я решил создать отдельную унифицированную таблицу для хранения произвольных атрибутов сущности. Она имеет столбцы: EntityId (ссылка на сущность). TypeId (тип значения атрибута), Key (имя ключа атрибута), TextValue, IntValue, BoolValue, DateValue.
На данный момент меня такое решение устраивает.

Насколько такой подход приветствуется при проектировании БД? Какие потенциальные минусы такого решения могут проявиться в перспективе?
...
Рейтинг: 0 / 0
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39898656
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Google "EAV".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39898659
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper
Насколько такой подход приветствуется при проектировании БД? Какие потенциальные минусы такого решения могут проявиться в перспективе?

Просто будет много глупой еботни.

А все из-за глупой фобии
Interloper
я бы не хотел все больше раздувать таблицу, добавляя в нее столбцы, которые часто будут разреженные.
...
Рейтинг: 0 / 0
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39898669
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё,

В чем глупость?
...
Рейтинг: 0 / 0
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39898684
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper
ёёёёё,

В чем глупость?

Interloper
я бы не хотел все больше раздувать таблицу, добавляя в нее столбцы, которые часто будут разреженные.

- а в чем "ум"? Ты берешь на себя то, что уже давным-давно сделано в движке.
...
Рейтинг: 0 / 0
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39898711
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё
Interloper
ёёёёё,

В чем глупость?

Interloper
я бы не хотел все больше раздувать таблицу, добавляя в нее столбцы, которые часто будут разреженные.

- а в чем "ум"? Ты берешь на себя то, что уже давным-давно сделано в движке.

Что именно сделано в движке?
...
Рейтинг: 0 / 0
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39898715
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper
ёёёёё
пропущено...

пропущено...

- а в чем "ум"? Ты берешь на себя то, что уже давным-давно сделано в движке.

Что именно сделано в движке?

DDL, DML и вопросы оптимального хранения "пустых" полей.
...
Рейтинг: 0 / 0
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39898737
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper
Что именно сделано в движке?

нормализация
...
Рейтинг: 0 / 0
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39898739
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё
Interloper
пропущено...

Что именно сделано в движке?

DDL, DML и вопросы оптимального хранения "пустых" полей.


Есть нюанс. Я работаю с ORM. Поэтому добавления нового атрибута также влечет за собой необходимость доработки сущностей ORM.
...
Рейтинг: 0 / 0
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39898752
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper
ёёёёё
пропущено...

DDL, DML и вопросы оптимального хранения "пустых" полей.


Есть нюанс. Я работаю с ORM. Поэтому добавления нового атрибута также влечет за собой необходимость доработки сущностей ORM.


А с твоей схемой "key-value" сущности модифицироваться будут сами собой, понятно.
...
Рейтинг: 0 / 0
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39898798
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё
Interloper
пропущено...


Есть нюанс. Я работаю с ORM. Поэтому добавления нового атрибута также влечет за собой необходимость доработки сущностей ORM.


А с твоей схемой "key-value" сущности модифицироваться будут сами собой, понятно.


Да, с такой схемой класс сущности меняться не будет при добавлении нового атрибута.
...
Рейтинг: 0 / 0
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39898802
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper
ёёёёё
пропущено...


А с твоей схемой "key-value" сущности модифицироваться будут сами собой, понятно.


Да, с такой схемой класс сущности меняться не будет при добавлении нового атрибута.


И еще, у меня есть код для синхронизации изменений из БД в Elasticsearch. При добавлении атрибута как столбца в таблицу, придется править и этот код, в который хотелось бы лезть как можно реже.
...
Рейтинг: 0 / 0
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39898825
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну раз все в порядке - в чем вопрос?
...
Рейтинг: 0 / 0
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39898976
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperНасколько такой подход приветствуется при проектировании БД? Какие потенциальные минусы такого решения могут проявиться в перспективе?
Key-value - это плохо. Прежде всего релиационную модель key-value ложатся херово, особенно если у тебя двухзвенка и самый лучший стак. Потом таблица станет толстой, тормозной и ты будешь спрашивать тут, как сделать pivot/unpivot, а я буду язвить и издеваться. Ты заплывешь жиром, облысеешь и станешь типичным ораклистом. Еще всё это сложно рефакторить, так что тебе обеспечено пассивно-агрессивное поведение и хроническая прокрастинация. А потом тебя выкинут с работы и наймут трех студентов-пистонщиков на твою зарплату.
Не делай key-value. А если уж делаешь, то не в РСУБД. А если в РСУБД, то это должна быть не двухзвенка на вложенках.
...
Рейтинг: 0 / 0
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39898986
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper
Я работаю с ORM. Поэтому добавления нового атрибута также влечет за собой необходимость доработки сущностей ORM.

Уууу. Ну тогда делай, не думай. Хуже своей бд ты уже не сделаешь. В крайнем случае переложишь всё в какую-нибудь nosql типа redis или tarantool.
...
Рейтинг: 0 / 0
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39898993
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чё-то анекдот вспомнился:
- медведь, а у тебя спички есть?
- не-а
- значит ты импотент
...
Рейтинг: 0 / 0
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39902985
Фотография Програмер.Илюша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
чё-то анекдот вспомнился:
- медведь, а у тебя спички есть?
- не-а
- значит ты импотент


Я его слышал в варианте: "Фурманов, а у тебя спички есть? …"
...
Рейтинг: 0 / 0
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39903109
Riss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне в тему другой анекдот вспоминается:

Подходит Бабушка к нарикам и спрашивает: "Как мне на пролетарскую улицу пройти?"
"Как в кайф, так и иди"

Делайте, как считаете нужным, а остальное субъективно...
...
Рейтинг: 0 / 0
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39903323
Serguei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper
У меня есть основная таблица для хранения сущности, в которой довольно много столбцов. Периодически приходят требования на расширение списка атрибутов сущности. Во многих случаях новый атрибут нужен лишь для небольшого процента сущностей и я бы не хотел все больше раздувать таблицу, добавляя в нее столбцы, которые часто будут разреженные.
Поэтому я решил создать отдельную унифицированную таблицу для хранения произвольных атрибутов сущности. Она имеет столбцы: EntityId (ссылка на сущность). TypeId (тип значения атрибута), Key (имя ключа атрибута), TextValue, IntValue, BoolValue, DateValue.
На данный момент меня такое решение устраивает.

Насколько такой подход приветствуется при проектировании БД? Какие потенциальные минусы такого решения могут проявиться в перспективе?


Не существует "правильных" или "неправильных" решений. Есть работающее решение и неработающее в конкретных условиях.
Я лично не всегда заморачиваюсь на том что все должно быть "по правилам". "Правильные" решения часто приводят к сложностям в сопровождении (например заказчики не хотят ставить обновления, которые касаются изменений структуры БД в четверг-пятницу, потому что админы хотят провести выходные дома с семьей), поэтому ничего не вижу зазорного в том, что в отдельных случаях отступить и сделать EAV. Но, конечно же, всю систему построить на EAV ИМХО- это утопия.
...
Рейтинг: 0 / 0
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39903324
Nickfoster123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Thanks for sharing
...
Рейтинг: 0 / 0
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39903328
Serguei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
Key-value - это плохо. Прежде всего релиационную модель key-value ложатся херово, особенно если у тебя двухзвенка и самый лучший стак.


Если у тебя двухзвенка в 21м веке- это уже что то херово )
но в данном случае двухзвенка или 3х, если ты не правильно оперируешь данными - то ничего не поможет.

crutchmaster
А потом тебя выкинут с работы и наймут трех студентов-пистонщиков на твою зарплату.
Не делай key-value

Жути то нагнали... Побежал срочно выкорчевывать EAV ))
...
Рейтинг: 0 / 0
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39903584
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Чтобы добиться успеха, надо принимать правильные решения" (с)
...
Рейтинг: 0 / 0
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39903789
Sergei.Agalakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно следует разбить таблицу на несколько, может быть с общим предком. Ваш вариант работает, но я бы рассмотрел вариант с JSON для экстра аттрибутов, если потенциально каждая запись может иметь какие-то произвольные дополнительные аттрибуты.
...
Рейтинг: 0 / 0
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39903839
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serguei
Жути то нагнали... Побежал срочно выкорчевывать EAV ))

Ты уже не сможешь, даже если захочешь. В этом вся и подлость. А когда понимаешь это, то уже поздно.
Serguei
если ты не правильно оперируешь данными

РСУБД никак не оперирует с EAV, кроме простейших выборок. Всё что угодно другое превратится в дикий изврат и тормоза. Извращенца, который с этим работает, вместе с его базой наблюдаю каждый день.
...
Рейтинг: 0 / 0
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
    #39903870
Serguei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster

Ты уже не сможешь, даже если захочешь. В этом вся и подлость. А когда понимаешь это, то уже поздно.

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


crutchmaster

РСУБД никак не оперирует с EAV, кроме простейших выборок. Всё что угодно другое превратится в дикий изврат и тормоза. Извращенца, который с этим работает, вместе с его базой наблюдаю каждый день.


если вы не любите кошек -значит вы не умеете их готовить. С базами тоже самое ;)
Огульное использование EAV -да приведет к таким последствиям, но только огульное.;)
...
Рейтинг: 0 / 0
25 сообщений из 75, страница 1 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Использование таблицы для хранения атрибутов сущности по принципу Key-Value
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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