|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
У меня есть основная таблица для хранения сущности, в которой довольно много столбцов. Периодически приходят требования на расширение списка атрибутов сущности. Во многих случаях новый атрибут нужен лишь для небольшого процента сущностей и я бы не хотел все больше раздувать таблицу, добавляя в нее столбцы, которые часто будут разреженные. Поэтому я решил создать отдельную унифицированную таблицу для хранения произвольных атрибутов сущности. Она имеет столбцы: EntityId (ссылка на сущность). TypeId (тип значения атрибута), Key (имя ключа атрибута), TextValue, IntValue, BoolValue, DateValue. На данный момент меня такое решение устраивает. Насколько такой подход приветствуется при проектировании БД? Какие потенциальные минусы такого решения могут проявиться в перспективе? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2019, 15:03 |
|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
Google "EAV". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2019, 15:25 |
|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
Interloper Насколько такой подход приветствуется при проектировании БД? Какие потенциальные минусы такого решения могут проявиться в перспективе? Просто будет много глупой еботни. А все из-за глупой фобии Interloper я бы не хотел все больше раздувать таблицу, добавляя в нее столбцы, которые часто будут разреженные. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2019, 15:26 |
|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
ёёёёё, В чем глупость? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2019, 15:39 |
|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
Interloper ёёёёё, В чем глупость? Interloper я бы не хотел все больше раздувать таблицу, добавляя в нее столбцы, которые часто будут разреженные. - а в чем "ум"? Ты берешь на себя то, что уже давным-давно сделано в движке. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2019, 15:57 |
|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
ёёёёё Interloper ёёёёё, В чем глупость? Interloper я бы не хотел все больше раздувать таблицу, добавляя в нее столбцы, которые часто будут разреженные. - а в чем "ум"? Ты берешь на себя то, что уже давным-давно сделано в движке. Что именно сделано в движке? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2019, 16:27 |
|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
Interloper ёёёёё пропущено... пропущено... - а в чем "ум"? Ты берешь на себя то, что уже давным-давно сделано в движке. Что именно сделано в движке? DDL, DML и вопросы оптимального хранения "пустых" полей. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2019, 16:31 |
|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2019, 17:02 |
|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
ёёёёё Interloper пропущено... Что именно сделано в движке? DDL, DML и вопросы оптимального хранения "пустых" полей. Есть нюанс. Я работаю с ORM. Поэтому добавления нового атрибута также влечет за собой необходимость доработки сущностей ORM. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2019, 17:04 |
|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
Interloper ёёёёё пропущено... DDL, DML и вопросы оптимального хранения "пустых" полей. Есть нюанс. Я работаю с ORM. Поэтому добавления нового атрибута также влечет за собой необходимость доработки сущностей ORM. А с твоей схемой "key-value" сущности модифицироваться будут сами собой, понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2019, 17:20 |
|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
ёёёёё Interloper пропущено... Есть нюанс. Я работаю с ORM. Поэтому добавления нового атрибута также влечет за собой необходимость доработки сущностей ORM. А с твоей схемой "key-value" сущности модифицироваться будут сами собой, понятно. Да, с такой схемой класс сущности меняться не будет при добавлении нового атрибута. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2019, 18:32 |
|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
Interloper ёёёёё пропущено... А с твоей схемой "key-value" сущности модифицироваться будут сами собой, понятно. Да, с такой схемой класс сущности меняться не будет при добавлении нового атрибута. И еще, у меня есть код для синхронизации изменений из БД в Elasticsearch. При добавлении атрибута как столбца в таблицу, придется править и этот код, в который хотелось бы лезть как можно реже. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2019, 18:34 |
|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
Ну раз все в порядке - в чем вопрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2019, 19:17 |
|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
InterloperНасколько такой подход приветствуется при проектировании БД? Какие потенциальные минусы такого решения могут проявиться в перспективе? Key-value - это плохо. Прежде всего релиационную модель key-value ложатся херово, особенно если у тебя двухзвенка и самый лучший стак. Потом таблица станет толстой, тормозной и ты будешь спрашивать тут, как сделать pivot/unpivot, а я буду язвить и издеваться. Ты заплывешь жиром, облысеешь и станешь типичным ораклистом. Еще всё это сложно рефакторить, так что тебе обеспечено пассивно-агрессивное поведение и хроническая прокрастинация. А потом тебя выкинут с работы и наймут трех студентов-пистонщиков на твою зарплату. Не делай key-value. А если уж делаешь, то не в РСУБД. А если в РСУБД, то это должна быть не двухзвенка на вложенках. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 11:00 |
|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
Interloper Я работаю с ORM. Поэтому добавления нового атрибута также влечет за собой необходимость доработки сущностей ORM. Уууу. Ну тогда делай, не думай. Хуже своей бд ты уже не сделаешь. В крайнем случае переложишь всё в какую-нибудь nosql типа redis или tarantool. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 11:09 |
|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 11:25 |
|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
Я его слышал в варианте: "Фурманов, а у тебя спички есть? …" ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2019, 08:48 |
|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
Мне в тему другой анекдот вспоминается: Подходит Бабушка к нарикам и спрашивает: "Как мне на пролетарскую улицу пройти?" "Как в кайф, так и иди" Делайте, как считаете нужным, а остальное субъективно... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2019, 08:59 |
|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
Interloper У меня есть основная таблица для хранения сущности, в которой довольно много столбцов. Периодически приходят требования на расширение списка атрибутов сущности. Во многих случаях новый атрибут нужен лишь для небольшого процента сущностей и я бы не хотел все больше раздувать таблицу, добавляя в нее столбцы, которые часто будут разреженные. Поэтому я решил создать отдельную унифицированную таблицу для хранения произвольных атрибутов сущности. Она имеет столбцы: EntityId (ссылка на сущность). TypeId (тип значения атрибута), Key (имя ключа атрибута), TextValue, IntValue, BoolValue, DateValue. На данный момент меня такое решение устраивает. Насколько такой подход приветствуется при проектировании БД? Какие потенциальные минусы такого решения могут проявиться в перспективе? Не существует "правильных" или "неправильных" решений. Есть работающее решение и неработающее в конкретных условиях. Я лично не всегда заморачиваюсь на том что все должно быть "по правилам". "Правильные" решения часто приводят к сложностям в сопровождении (например заказчики не хотят ставить обновления, которые касаются изменений структуры БД в четверг-пятницу, потому что админы хотят провести выходные дома с семьей), поэтому ничего не вижу зазорного в том, что в отдельных случаях отступить и сделать EAV. Но, конечно же, всю систему построить на EAV ИМХО- это утопия. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2019, 11:23 |
|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
Thanks for sharing ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2019, 11:28 |
|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
crutchmaster Key-value - это плохо. Прежде всего релиационную модель key-value ложатся херово, особенно если у тебя двухзвенка и самый лучший стак. Если у тебя двухзвенка в 21м веке- это уже что то херово ) но в данном случае двухзвенка или 3х, если ты не правильно оперируешь данными - то ничего не поможет. crutchmaster А потом тебя выкинут с работы и наймут трех студентов-пистонщиков на твою зарплату. Не делай key-value Жути то нагнали... Побежал срочно выкорчевывать EAV )) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2019, 11:40 |
|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
"Чтобы добиться успеха, надо принимать правильные решения" (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2019, 16:31 |
|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
Возможно следует разбить таблицу на несколько, может быть с общим предком. Ваш вариант работает, но я бы рассмотрел вариант с JSON для экстра аттрибутов, если потенциально каждая запись может иметь какие-то произвольные дополнительные аттрибуты. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2019, 01:07 |
|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
Serguei Жути то нагнали... Побежал срочно выкорчевывать EAV )) Ты уже не сможешь, даже если захочешь. В этом вся и подлость. А когда понимаешь это, то уже поздно. Serguei если ты не правильно оперируешь данными РСУБД никак не оперирует с EAV, кроме простейших выборок. Всё что угодно другое превратится в дикий изврат и тормоза. Извращенца, который с этим работает, вместе с его базой наблюдаю каждый день. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2019, 08:33 |
|
Использование таблицы для хранения атрибутов сущности по принципу Key-Value
|
|||
---|---|---|---|
#18+
crutchmaster Ты уже не сможешь, даже если захочешь. В этом вся и подлость. А когда понимаешь это, то уже поздно. Весь секрет в том, что я не использую это решение в тех местах, где есть частые выборки. Поэтому нет смысла что то менять. crutchmaster РСУБД никак не оперирует с EAV, кроме простейших выборок. Всё что угодно другое превратится в дикий изврат и тормоза. Извращенца, который с этим работает, вместе с его базой наблюдаю каждый день. если вы не любите кошек -значит вы не умеете их готовить. С базами тоже самое ;) Огульное использование EAV -да приведет к таким последствиям, но только огульное.;) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2019, 10:13 |
|
|
start [/forum/topic.php?fid=32&msg=39898715&tid=1539884]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 263ms |
total: | 426ms |
0 / 0 |