|
|
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Добрый день Сейчас занимаемся проектированием БД. И поступило предложение организовать все справочники в одной таблице. структура такая: pk-ключ,nspr-номер справочника,nv-номер значения,v-значение Как вы считаете что будет в плане производительности лучше: использовать 10 справочников каждой в своей таблице или же организовать 1 таблицу со значениями всех справочников? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2006, 10:47 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Будут накладки в плане использования ссылочной целостности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2006, 10:48 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Тут конечно вопрос более глубокий: производительности кого? Если работы программистов-то чуть быстрее при разработке вариант с одной таблицей (проще организовать просмотр всех справочников в одной форме, оформив,например, их в виде дерева).Если таблиц несколько - то чуть дольше (если несколько форм ввода-надо писать несколько запросов к соответствующим таблицам (хотя форма будет одна:чудеса наследования)или использовать динамический sql)-надо будет немного напрячь мозги. Если пишется промышленная система,то при ее использовании и появлении новых справочников не надо будет делать автогенерирование об-тов БД и автогенерацию интерфейса для их ведения (хотя если уже есть-то пусть будет). НО писать все программисты должны очень аккуратно: уж пару раз столкнетесь с "Будут накладки в плане использования ссылочной целостности" copiright gardenman. Ну а если про производительность системы:надо много думать и смотреть,какие нужны отчеты,какая бизнес-логика. МОжет быть этих справочников будет 5 штук и отчетов по ним нет. P.S. Есть третий вариант справочников в одной таблице - добавляются новые столбцы,соответствующие новым справочникам,а не тип значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2006, 11:01 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Sidorov Anton wrote: поискать по форуму по словам "тенцер" или "EAV" - жевалось пережевывалось. а для "Будут накладки в плане использования ссылочной целостности" - после записи в справочник приходится вызывать процедуру проверки структурной целостности элемента справочника, потому как накладки таки имели место быть. зато обычные кодеры лепят справочники с полным функционалом на 1-2-3. Вот только ядро должно быть полность отлаженным и внушать доверие. -- ------------------------- There's no silver bullet! Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2006, 11:05 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
>> чуть быстрее при разработке вариант с одной таблицей Ну очень сомнительное утверждение. Особенно когда дойдет до сопросождения и поддержки этой самой пресловутой "ссылочной целостности" А генерить формы автоматом для разных справочников - это просто. Зря разве столько силбыло вложено в OOП? Только умояляю, не надо делать справочников типа: 0 Нет No 1 Да Yes NULL Не знаю Not defined а то имеются и такие кадры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2006, 11:07 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
locky после записи в справочник приходится вызывать процедуру проверки структурной целостности элемента справочника, потому как накладки таки имели место быть. не могли бы вы привести пример? IMHO Я так понял особенности: EAV: + - хранение переменного количества атрибутов - атрибуты развёрнуты по вертикали а не по полям (зависит от заказчика) _ - нет связей по целостности данных на уровне БД - для вывода шахматки приходится извращаться - больше логики и кода переносится на БД и его язык - проблемы в использовании визуального проектирования "морды" в bound-присоеденённом режиме к БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2006, 11:57 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
To gardenman: под фразой ">> чуть быстрее при разработке вариант с одной таблицей " я имел в виду разработку именно интерфейса.Как не крути,но думать при делании интерфейса с одной таблицей надо много меньше,чем для нескольких. Причем быстрее только единовременно. ПРо целостность я и не говорил в данной фразе,про нее сказано дальше,что ее поддержка будет геморойнее. Пример: Делаем форму,к которой в стандартном виде отображаются данные из справочников:слева список справочников,справа их значения. Для одной таблицы с данными: левую табличку формы строим на основе выборки из таблицы типов справочников (1 пробитый select без всяких условий (пусть не будет контроля доступа)) правую табличку делаем на основе выборки из таблицы значений справочников (1 пробитый селект с указанием типа справочника) Для одной таблицы с данными: левую табличку формы строим на основе выборки из таблицы справочников (типа из таблички с метаданные программы ) (1 пробитый select без всяких условий (пусть не будет контроля доступа)) правую табличку делаем на основе выборки из конкретной таблицы значений справочника (1 динамически построенный селект с указанием таблицы, из которой надо брать данные) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2006, 12:37 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Чисто из опыта: Всегда когда пытались изобрести велосипед, который и ездит, и летает и ползает по землей, получался велосипед, который все это делал плохо. Если вообще получался... (( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2006, 12:57 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
EAV не совсем в тему, хотя полей тоже три :). Скорее аналог - физики-юрики, только типов побольше. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Использование с жестким контролем типа объекта Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2006, 14:02 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
gardenmanЧисто из опыта: Всегда когда пытались изобрести велосипед, который и ездит, и летает и ползает по землей, получался велосипед, который все это делал плохо. Если вообще получался... ((Но если повезет - получится мобильник с камерой и проч. и проч., который даже звонит.:). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2006, 14:05 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
> поступило предложение организовать все справочники в одной таблице Откуда поступило, если не секрет? ;) > структура такая Справочник в общем виде - это не только значения, но и как минимум: 1. Системы измерений; 2. Измеряемые величины; 3. Условные обозначения; 4. Правила соответствия одних единиц другим (формулы и условия пересчета); 5. Мультипликаторы (с условными обозначениями); 6. Языковые эквиваленты всего перечисленного; 7. Соответствие официальным стандартам. Слабо представляется, как Вы это умудритесь втиснуть в одну таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2006, 18:00 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
guest_20040621Слабо представляется, как Вы это умудритесь втиснуть в одну таблицу.Ну, во-первых часто есть определенный набор справочников где кроме наименования ничего и не требуется. К тому же и меняются они редко. Первая мысль про обобщенный справочник обычно отсюда и возникает. Но здесь по опыту большого выигрыша нет. Единственно, создание нового справочника пользователем не требует DDL, что DBA всегда в радость. Во-вторых, как с договорами -- физиками/юриками возникает необходимость в ссылках на заранее неизвестный тип объекта. Вот тут оно полезно обобщить все эти объекты в единый каталог, даже если типы объектов сильно разные и соответственно остаются разные таблицы для типов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2006, 18:56 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
> Ну, во-первых часто есть определенный набор справочников где кроме > наименования ничего и не требуется. Конечно, есть. Только чего их обсуждать? - тривиальнейший частный случай. > создание нового справочника пользователем не требует DDL, что DBA всегда в радость. Видите ли, я немного иначе отношусь к содержимому базы данных: это не выгребная яма, где любой юзер может хранить все, что пожелает. Справочники - я надеюсь, мы одно и то же под этим понимаем - как правило, имеют вполне себе конкретное происхождение; более того, их количество для предметной области, как правило, конечно. Так что т. н. "однотабличная" структура - в общем случае банальная ошибка проектирования. > как с договорами -- физиками/юриками Imho ничего похожего. > возникает необходимость в ссылках на заранее неизвестный тип объекта Вас пример не затруднит привести? > полезно обобщить все эти объекты в единый каталог Т. е. Вы полагаете, что все справочнике с требованиями, перечисленными в [2675977], можно разместить в одной плоской таблице? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2006, 22:22 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
>Видите ли, я немного иначе отношусь к содержимому базы данных: это не выгребная яма Поддерживаю полностью ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 10:02 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
guest_20040621> поступило предложение организовать все справочники в одной таблице Откуда поступило, если не секрет? ;) > структура такая Справочник в общем виде - это не только значения, но и как минимум: 1. Системы измерений; 2. Измеряемые величины; 3. Условные обозначения; 4. Правила соответствия одних единиц другим (формулы и условия пересчета); 5. Мультипликаторы (с условными обозначениями); 6. Языковые эквиваленты всего перечисленного; 7. Соответствие официальным стандартам. Слабо представляется, как Вы это умудритесь втиснуть в одну таблицу. предложение от старшего поколения. я как относительно молодой программист решил подвергнуть это сомнению, и хотел услышать мнение публики. в общем то мнения расходятся. но в нашем случае справочник это pk и значение. т.е. самый простой вариант. и я склоняюсь к единой таблице. вообще меня интересовал вопрос производительности чем реализации. я считаю что реализация на одной таблице проще. ваша структура на мой взгляд подходит для математических систем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 10:22 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
> я считаю что реализация на одной таблице проще. Флаг в руки и барабан на шею ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 10:25 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
guest_20040621 Справочники - я надеюсь, мы одно и то же под этим понимаем - как правило, имеют вполне себе конкретное происхождение; более того, их количество для предметной области, как правило, конечно . Так что т. н. "однотабличная" структура - в общем случае банальная ошибка проектирования. как тогда расценивать перечислимые характеристики какого либа объекта, которые расширяются в процессе эксплуатации. Наверно это достаточно распространённый случай: Высота (высокий, низкий) Глубина (глубокий, ооочень глубокий) Бугорки (есть, нет) Это ведь справочники? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 10:42 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Ну, во-первых часто есть определенный набор справочников где кроме > наименования ничего и не требуется. Конечно, есть. Только чего их обсуждать? - тривиальнейший частный случай. и я про тоже. 2 автор -- Производительностью рулят фичи СУБД. Партиционирование, индексы и проч. guest_20040621 > как с договорами -- физиками/юриками Imho ничего похожего. > возникает необходимость в ссылках на заранее неизвестный тип объекта Вас пример не затруднит привести? Э.. так это и был пример, так ничего он не похож на что? Другой пример: средство связи от почтового адреса (разного в разных странах кстати) до URL. guest_20040621> полезно обобщить все эти объекты в единый каталог Т. е. Вы полагаете, что все справочнике с требованиями, перечисленными в [2675977], можно разместить в одной плоской таблице? ;) _Внимательно_: ModelRи соответственно остаются разные таблицы для типов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 10:43 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Petro123 guest_20040621 Справочники - я надеюсь, мы одно и то же под этим понимаем - как правило, имеют вполне себе конкретное происхождение; более того, их количество для предметной области, как правило, конечно . Так что т. н. "однотабличная" структура - в общем случае банальная ошибка проектирования. как тогда расценивать перечислимые характеристики какого либа объекта, которые расширяются в процессе эксплуатации. Наверно это достаточно распространённый случай: Высота (высокий, низкий) Глубина (глубокий, ооочень глубокий) Бугорки (есть, нет) Это ведь справочники? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! За такие "справочники" пинал бы "проектировщика" пока не сломал ноги... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 10:45 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
gardenman>Видите ли, я немного иначе отношусь к содержимому базы данных: это не выгребная яма Поддерживаю полностьюВерно. Но к людям нужно относится еще лучше. А их потребность по ходу эксплуатации уточнить классификацию, ввести еще один признак типа Высота (высокий, низкий) Глубина (глубокий, ооочень глубокий) Бугорки (есть, нет)вполне реальна. gardenmanЗа такие "справочники" пинал бы "проектировщика" пока не сломал ноги... И затем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 10:51 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Sidorov AntonСейчас занимаемся проектированием БД. И поступило предложение организовать все справочники в одной таблице. структура такая: pk-ключ,nspr-номер справочника,nv-номер значения,v-значение Лет тринадцать назад, когда я пришел работать на Clipper в давно уже не существующую компанию, там эксплуатировалось такое решение, и в случае Clipper давало некоторые преимущества. Чуть позже, когда на следующей работе я спросил "а почему не сделать так?", мне просто и наглядно показали, что в случае нормальных СУБД и нормальных инструментов это.... изврат на пустом месте, назовем так. И с тех пор я не встречал информации, которая опровергла бы эту точку зрения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 10:53 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
IMHO модель EAV - не на пустом месте появилась, а от лени программистов делать на каждый чих отдельную таблицу. 2. У меня есть один такой проект от которого отказался заказчик из-за того что в БД 100 таблиц - справочников к одной главной таблице (ROT) ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 10:56 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Petro123 1) Если у вас таблицы-справочники такие , как писал я, - то понятно... 2) Количество таблиц в модели - не причина отказа. Посмотрите на People Soft (15000 таблиц, 15000 вьюх) - не скажу что я восхищен, однако... Нужно думать всегда над тем, как упростить модель. Вот это: Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Главное - упростить работу с с базой данных. Упростить создание приложений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 11:13 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
gardenmanPetro123 1) Если у вас таблицы-справочники такие , как писал я, - то понятно... ======= "мужчина-жен." нет, а вот таких "перечислимых" полно. 2) Количество таблиц в модели - не причина отказа. Посмотрите на People Soft (15000 таблиц, 15000 вьюх) - не скажу что я восхищен, однако... =========== конечно это не один показатель, но ОН (количество строк кода/таблиц/движений_кухарки) тоже учитывается. Нужно думать всегда над тем, как упростить модель. Вот это: Код: plaintext 1. Главное - упростить работу с с базой данных. Упростить создание приложений. ========== согласен! А то клиент "валит" на сервер, а сервер на клиента ) "Если ты сервер - не суетись под клиентом" (с) )))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 11:43 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
По теме. IMHO -если есть "застывший" перечень справочников заказчика на обозримое будущее, то в отдельные. Скорость здесь последний фактор - решается административными мерами. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 11:48 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33734750&tid=1545109]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
49ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 307ms |

| 0 / 0 |
