|
|
|
XML vs Таблицы доп. свойств vs Атомарный словарь
|
|||
|---|---|---|---|
|
#18+
Как лучше реализовать возможность дополнительных полей в структуре БД? Вижу пока 3 варианта: - добавить поле xml (плюсы: удобно, что минимальные изменения структуры БД (если нужно расширить уже существующую, к примеру, с помощью схемы можно задать ограничения на возможные значения, удобно хранить сложные, иерархические данные; минусы: производительность - не понятно, насколько быстро будет добавление, и поиск, с xml-индексом и без) - для каждой группы новых свойств добавить свою таблицу с внешним ключом на основную (плюсы: полная свобода действий в оптимизации, минусы: не нравится идея менять схему БД, каждый раз, когда добавляется новая группа свойств, к тому же количество джойнов в таком случае может вырасти до слишком большого размера) - атомарный словарь - хранить все свойства в одной группе таблиц, которая описывает построчно словарь (т.е. одна таблица для хранения списка словарей, другая - для хранения списка колонок каждого словаря, третья - списка строк, 4-я - списка значений в строках) (плюсов особых не вижу, среди минусов - производительность, ограничения по типа возможных значений - обычно только числа, пары чисел или строки) Вопрос возник в связи с необходимостью реализовать иерархию наследования сущностей в БД оптимальным образом. Предполагается, что данных в основной таблице будет много (порядка 10 млрд строк, плюс ежедневное обновление 200-300 млн строк) Ваше мнение, что лучше, хуже. Еще варианты. Модератор: Тема перенесена из форума "Microsoft SQL Server". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 12:42 |
|
||
|
XML vs Таблицы доп. свойств vs Атомарный словарь
|
|||
|---|---|---|---|
|
#18+
Попробуйте взглянуть в сторону EAV ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 18:04 |
|
||
|
XML vs Таблицы доп. свойств vs Атомарный словарь
|
|||
|---|---|---|---|
|
#18+
Золотая рыбка,про EAV знаю. это третий вариант (атомарный словарь). Пока не вижу никаких особенных преимуществ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2010, 16:25 |
|
||
|
XML vs Таблицы доп. свойств vs Атомарный словарь
|
|||
|---|---|---|---|
|
#18+
tangueros Предполагается, что данных в основной таблице будет много Вариант 2 однозначно. EAV ф топку. XML только если данные ВСЕГДА будут обрабатываться одним куском, но обычно (по мере развития системы) данные начинают представлять собственную ценность и все опять сводится к варианту 2. Произойдет ли это при вашей жизни или нет - решать вам. По минусам tangueros не нравится идея менять схему БД, каждый раз, когда добавляется новая группа свойствА программу менять типа нравится. Новая функциональность - новая программа - новая база tangueros к тому же количество джойнов в таком случае может вырасти до слишком большого размераНа то он и сервер чтобы джойнить. Это его работа. В худшем случае подхинтите запросы. tangueros Вопрос возник в связи с необходимостью реализовать иерархию наследования сущностей в БД оптимальным образом.А вот с этого места поподробнее в терминах - вставляем, ищем, обновляем, удаляем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2010, 19:06 |
|
||
|
XML vs Таблицы доп. свойств vs Атомарный словарь
|
|||
|---|---|---|---|
|
#18+
Не совсем понятно, что значит в терминах " вставляем, ищем, обновляем, удаляем". Допустим, у нас есть объект ценная бумага. В принципе, все ценные бумаги обладают неким базовым набором характеристик, но уже конкретная ЦБ может иметь дополнительные. В терминах ООП - это наследование. Типов ц/б - много, поэтому заранее заводить нужное количество полей не удобно (хотя, в принципе, можно, но уж будет криво). Аналогичная ситуация со сделками - типов много, сделок еще больше. Нужно грамотно реализовать наследование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2010, 14:07 |
|
||
|
XML vs Таблицы доп. свойств vs Атомарный словарь
|
|||
|---|---|---|---|
|
#18+
> В терминах ООП - это наследование. В данном случае ни о каком наследовании речь не идет. > Типов ц/б - много Как раз мало. Много производных инструментов. Но и их конечное количество. Подробнее: что проектируете и каков статус продукта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2010, 15:23 |
|
||
|
XML vs Таблицы доп. свойств vs Атомарный словарь
|
|||
|---|---|---|---|
|
#18+
tangueros Не совсем понятно, что значит в терминах " вставляем, ищем, обновляем, удаляем"То что для базы данных все ваши объекты - ценные бумаги суть записи, которых надо обрабатывать по типу CRUD. И делать это можно по-разному смещая акценты в зависимости от нужд приложения (типа можно подождать со вставкой за счет быстрого чтения по определенным критериям или обновлений/удалений не будет по определению поэтому просадка производительности этой операции никого не трогает). tangueros Типов ц/б - много, поэтому заранее заводить нужное количество полей не удобно (хотя, в принципе, можно, но уж будет криво)Вот интересно, заведение дополнительного свойства, отображение его на форме, редактирование и т.п. это типа не криво. А заведение специального поля под дополнительное свойство это уже не удобно. То есть вы базу данных рассматриваете как ящик куда можно свалить все со стола как попало, зато быстро и стол чистый. А то что доставать будем долго так это база данных виновата - тормозит, надо другую брать, авось будет быстрее, ага и приложение делать независимое от базы. tangueros Нужно грамотно реализовать наследование.Поищите по форуму на предмет хранения людей, контрагентов, легковых/грузовых машин. Способов несколько и хранение предков в одной таблице и и доп.свойств в разных таблицах связанных ссылками с главной, и отдельные таблицы с одинаковыми полями, и одна большая таблица со всеми полями из которых заполнены только нужные. Какой именно способ - выбирать вам в зависимости от нужд приложения, а не соответствия принципам ООП. Просто помните, что за любую гибкость, как правило приходится платить . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2010, 19:36 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36578757&tid=1542759]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
194ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 521ms |

| 0 / 0 |
