|
|
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#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 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Petro1232. У меня есть один такой проект от которого отказался заказчик из-за того что в БД 100 таблиц - справочников к одной главной таблице (ROT) Хм. Заказчики бывают и более талантливыми идиотами - но что из этого следует? С другой стороны, в одном проекте коллеги сделали совершенно замечательную фигню. Им показалось, что справочники "слишком маленькие", и поэтому они сделали справочники "два в одном" - то есть вместо справочников А и Б сделали справочники вида А cross join Б. Как Вы догадываетесь, работать с этим было офигенно удобно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 12:39 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
softwarer"слишком маленькие" я про такой критерий не говорил. Заказчик выбрал не ROT и это его право. Моё IMHO по теме я сказал: /topic/294156&pg=1#2678055 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 12:56 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
> ваша структура на мой взгляд подходит для математических систем Если бы. ;) На самом деле это очень простой вариант реализации справочника. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 12:59 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
> Другой пример: средство связи от почтового адреса > (разного в разных странах кстати) до URL Великолепный пример. Давайте чуть подробнее на нем остановимся. Если я правильно понимаю, Вы полагаете, что целесообразно иметь некий универсальный справочник под именем "средства связи"? > _Внимательно_: Извините, пропустил фразу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 13:02 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
> Высота (высокий, низкий) > Глубина (глубокий, ооочень глубокий) > Бугорки (есть, нет) ;))) > Это ведь справочники? А сами-то Вы как думаете? ;)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 13:07 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Petro123Заказчик выбрал не ROT и это его право. Безусловно. Я к тому, что "мнение заказчика" - нисколько не аргумент в разговоре о технической стороне дела. Такой аргумент мог бы быть уместен в беседе о "продаваемости" того или иного варианта решения. К сожалению, зависимость между этими двумя факторами... весьма нелинейна, назовем так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 13:07 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
> потребность по ходу эксплуатации уточнить классификацию Справочник и классификатор - суть разные вещи. Конечно, возможна (часто - необходима) связь между классификатором и справочниками, но - подчеркну - это абсолютно разные структуры данных для разных целей. > вполне реальна Imho информативность приведенных характеристик стремится к нулю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 13:13 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Petro123 wrote: > locky > > после записи в справочник приходится вызывать процедуру проверки > структурной целостности элемента справочника, потому как накладки таки > имели место быть. > > не могли бы вы привести пример? Поскольку все референсы идут к одной и той же таблице, содержащие экземпляры разных объектов, запросто вместо счета можно сослаться по подразделение. Я боролся путем процедуры доп. контроля при записи. Выше люди показывали еще один оччень интересный способ (надо над этим подумать). > > *IMHO* > Я так понял особенности: > EAV: > *+* > - хранение переменного количества атрибутов > - атрибуты развёрнуты по вертикали а не по полям (зависит от заказчика) а это пофиг... хошь - так показывай, хошь - так... на физическом то уровне всё равно - всё вертикально :-) > *_* > > - нет связей по целостности данных на уровне БД ага :-( хотя физические есть, и, как писалось выше, можно реализовать и логические связи (хотя если промахнешься в подчиненной табличке с типом объекта....) > - для вывода шахматки приходится извращаться недопонил. при чем тут отображение данных к хранению? из 3НФ что, легче? > - больше логики и кода переносится на БД и его язык минус ли это? кому как. > - проблемы в использовании визуального проектирования "морды" в > bound-присоеденённом режиме к БД. про "боунд" - не понил, а проблем в проектировании интерфейсов вроде как не было - всё эдак ровненько пострижено, покрашено, единообразно... Юзеров учить легче, опять таки. -- ------------------------- There's no silver bullet! Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 13:55 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
locky > - для вывода шахматки приходится извращаться недопонил. при чем тут отображение данных к хранению? из 3НФ что, легче? > bound-присоеденённом режиме к БД. про "боунд" - не понил, а проблем в проектировании интерфейсов вроде как не было - всё эдак ровненько пострижено, покрашено, единообразно... Юзеров учить легче, опять таки. 1. всё-таки имеет значение при прочих равных условиях , т.к. если данные по горизонтали (в полях) и их нужно развернуть по вертикали (записях) на клиента, да ещё редактировать, то это не просто. Если, например, характеристики товара динамические, то на клиенте их в поля выводить нет никакого смысла. 2. Много компонентов и клиентских библиотек сами формируют текст запроса UPDATE.... и заточены работать с "исторической" ROT схемой а не EAV и моделью Тенцера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 14:23 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Sidorov AntonДобрый день Сейчас занимаемся проектированием БД. И поступило предложение организовать все справочники в одной таблице. структура такая: pk-ключ,nspr-номер справочника,nv-номер значения,v-значение Как вы считаете что будет в плане производительности лучше: использовать 10 справочников каждой в своей таблице или же организовать 1 таблицу со значениями всех справочников?Я использую такую структуру. На производительности выборки данных это практически никак не сказывается. При использовании индексов, в которых первым полем идет код справочника, зана выборки ограничивается в таблице только множеством записей указанного справочника. Поэтому, это еще не извествно, как будет происходит выборка быстрее, каогда у вас несколько join к одной таблице с разными условиями, или тоже, но к разным таблицам. Может быть потеряна производительность при поддержке целостности базы данных на триггерах. В MS SQL при такой структуре справочников на консрейнах не получится. Но это уто уже засит от качества реализации триггера. Хотя, введя искуственные поля в связанные таблицы, значения которых всегда равны коду справочника, можно использовать и констрейны. На счет скорости программирования - много раз убедился в том, что это было хорошое решение. Справочники добавляются на лету, без остановки системы, без необходимости измень структуру базы данных (за редким исключением). В интерфейсной части со всеми справочниками работают две-три формы. Легко описывать состав справочников, легко ими управлять. Это очень важно при сопровождении тем программистам, которые не являеются разработчиками. Объясняя им показываешь - вот одна таблица, вот два индекса, вот одно поле код справочника - включай в запросы. А как бы объявнял, когда были бы десятки таблиц, не знаю. ИМХО. Старшее поколение правильно предлагает. Недостаков нет, одни преимущества. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 14:53 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
PVP не могли бы вы рпивести скрин управления и модификации такими "справочниками в одном флаконе". У нас это называется классификатор, и он может менятся - переподключаться пользователем. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 15:14 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Petro123 PVP не могли бы вы рпивести скрин управления и модификации такими "справочниками в одном флаконе". У нас это называется классификатор, и он может менятся - переподключаться пользователем. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!Счас попробую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 15:17 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
http://www.softbas.com.ua/forum/index.php?act=module&module=gallery&cmd=si&img=22 - это окно для настройки справочников ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 15:20 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
http://www.softbas.com.ua/forum/index.php?act=module&module=gallery&cmd=si&img=23 - общий ввод данных в справочники ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 15:24 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Petro123У нас это называется классификатор, и он может менятся - переподключаться пользователем.Ну, наверное "подключаться пользователями" - это перебор. Все мои попытки и эксперименты моих знакомых дать возможность девушкам-пользователям, а особенно продвинутым спецам-пользователям добираться в те места, где подключаются справочники, заканчивались тем, что отключали им вообще доступ к возможности настроек. Подключение справочников - это по сути настройка структуры базы данных, а именно связей между наборами данных. Если бы это были отдельные таблицы, то я сказал бы связей между таблицами, констрейнов. И к этой работе лучше пользователей не подпускать. Пусть этим программисты занимаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 15:34 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Другой пример: средство связи от почтового адреса > (разного в разных странах кстати) до URL Великолепный пример. Давайте чуть подробнее на нем остановимся. Если я правильно понимаю, Вы полагаете, что целесообразно иметь некий универсальный справочник под именем "средства связи"? Давайте. Открыл тему т.к. в единую таблицу точно не укладывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 15:45 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
PVPИМХО. Старшее поколение правильно предлагает. Недостаков нет, одни преимущества. Как вы категоричны.... Новым разработикам вы тоже поясняете, что в таблице A, в колонке B могут быть только 3 значения потому что так в триггере написано ? по subj - 1 Производительность хуже, конечно, но не так чтобы очень. (ввиду отсутствия каких-либо разъяснений у автора треда, приходится давать такую умозрительную оценку) 2 "читабельность" схемы БД значительно хуже. Тут без вариантов. 3 поддержка целостности данных значительно хуже. 4 реализация редактирования и добавления справочников лучше/проще. (что увеличивает опасность превращения базы в выгребную яму, как тут уже было сказано. Кроме того я не понимаю зачем для единого редактора справочников (например) они все должны быть в одной таблице) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 18:30 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Alexey Kudinov PVPИМХО. Старшее поколение правильно предлагает. Недостаков нет, одни преимущества. Как вы категоричны.... Новым разработикам вы тоже поясняете, что в таблице A, в колонке B могут быть только 3 значения потому что так в триггере написано ?Ну я же сделал приставку "Имхо", это смягчает мою вину. К тому же, почему обязательно в триггере? В систему настройки справочника добавьте соответствующее свойство поля, введите это ограничение, и пусть триггер считывает его из свойств и применяет. Alexey Kudinov1 Производительность хуже, конечно, но не так чтобы очень. (ввиду отсутствия каких-либо разъяснений у автора треда, приходится давать такую умозрительную оценку)Это надо доказать еще, какой запрос будет быстрее, если сделать 10 штук join к одной таблице или эти же 10 к 10 таблицам. Alexey Kudinov2 "читабельность" схемы БД значительно хуже. Тут без вариантов.Ну какая же это читабельность БД, если Вы на диаграмме сделаете связи от одной таблицы к пол сотни таблиц? Неужели одна связь от одной таблицы к одной другой менее наглядна? Alexey Kudinov3 поддержка целостности данных значительно хуже. Я бы сказал труднее. Опять же не известно, что будет быстрее, контроль всех связей, установленных путем констрейнов, или работа одного умного триггера. Готов поспорить на пиво, что триггер сделаю более раактивным, чем будут выполняться проверки пол сотни консрейнов штаными средствами. Alexey Kudinov4 реализация редактирования и добавления справочников лучше/проще.(что увеличивает опасность превращения базы в выгребную яму, как тут уже было сказано. Кроме того я не понимаю зачем для единого редактора справочников (например) они все должны быть в одной таблице)В выгребную яму можно превратить какую угодно базу. А вот на счет общей итерфейсной части, работающей со всеми справочниками, так думаю, что для этого не обязательно все справочники хранить в одной таблице. Можно придумать структуру, содержащую одтдельные таблицы для каждого справочника, и описательную часть справочников, используемую интерфейсным модулем для работы со справочниками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2006, 19:39 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
>> Это надо доказать еще, какой запрос будет быстрее, если сделать 10 штук join к одной таблице или эти же 10 к 10 таблицам. При создании плана запроса оптимизатор использует статистику. Как вы думаете, когда оптимизация будет более существенной, когда у нас одна таблица (на которую все ссылаются), или когда у нас 10 таблиц и на каждой собрана статистика? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 10:41 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
>>Ну какая же это читабельность БД, если Вы на диаграмме сделаете связи от одной таблицы к пол сотни таблиц? Неужели одна связь от одной таблицы к одной другой менее наглядна? Можно вообще просто поступить. Создать в базе одну таблицу и давайте ее саму на себя по сто раз джойнить. Придет человек со стороны и, как вы думаете он быстро разберется в вашей бизнеслогике? В структуре?... Сильно сомневаюсь однако!) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 10:44 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
>> А вот на счет общей итерфейсной части, работающей со всеми справочниками Трудно что-ли параметризировать форму? Передавать имя таблички? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 10:46 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
>>Я бы сказал труднее. Опять же не известно, что будет быстрее, контроль всех связей, установленных путем констрейнов, или работа одного умного триггера. Готов поспорить на пиво, что триггер сделаю более раактивным, чем будут выполняться проверки пол сотни консрейнов штаными средствами. Боже мой... какая чушь... ((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 10:51 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
gardenman>> Это надо доказать еще, какой запрос будет быстрее, если сделать 10 штук join к одной таблице или эти же 10 к 10 таблицам. При создании плана запроса оптимизатор использует статистику. Как вы думаете, когда оптимизация будет более существенной, когда у нас одна таблица (на которую все ссылаются), или когда у нас 10 таблиц и на каждой собрана статистика? думать бесполезно, тестировать надо. Или вы знаете работу оптимизатора? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 11:36 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
gardenman>> А вот на счет общей итерфейсной части, работающей со всеми справочниками Трудно что-ли параметризировать форму? Передавать имя таблички? тогда вы не сможете использовать фильтр набора записей - что значительно быстрее работает "перезагрузки" морды на другую таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 11:39 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Petro123 gardenman>> Это надо доказать еще, какой запрос будет быстрее, если сделать 10 штук join к одной таблице или эти же 10 к 10 таблицам. При создании плана запроса оптимизатор использует статистику. Как вы думаете, когда оптимизация будет более существенной, когда у нас одна таблица (на которую все ссылаются), или когда у нас 10 таблиц и на каждой собрана статистика? думать бесполезно, тестировать надо. Или вы знаете работу оптимизатора? Такие параметры как селективность, кардинальность, вам знакомы? Вам изветсно рапределение значений колонки в таблице? Вы знавете зачем нужны гистограммы? Это все описано в документации на СУБД которую вы юзаете. Между прочим подходы у всех к этому вопросу приблизительно одинаковые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 11:41 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
gardenman Я более практик, чем теоретик (если это Вас интересует). Иногда полезно с небес на землю спуститься (чтоб не исследовать работу оптимизатора для всех БД вместе взятых). "Для определения качества приготовленной яичницы - необязательно уметь нести яйца" - (с) Я только за то, что: Не стоит строить архитектуру на "приблизительных подходах". ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 12:08 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
2 Petro123 Чтож, уважаю Вашу точку зрения. Вам с Вашего рабочего места виднее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 12:12 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
ModelR Не могли бы Вы прояснить Ваш текст в более понятном виде (никак не уясню суть без голых данных-примеров) http://www.sql.ru/forum/actualpost.aspx?bid=36&tid=294156&mid=0&p=1#2674302 ObjType 70 ???71 ???100 ??? Object 13 100 ??? Phone14 100 ??? Phone SomeTable 1 13 702 14 71 ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 10:55 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Petro123 ModelR Не могли бы Вы прояснить Ваш текст в более понятном виде (никак не уясню суть без голых данных-примеров) http://www.sql.ru/forum/actualpost.aspx?bid=36&tid=294156&mid=0&p=1#2674302 Без проблем. Ближе к теме топика: Например, в таблице SomeTable атрибут 1 "основное качество" может быть ровно одним из приведенных выше перечислений Бугорки, Глубина, Высота . ObjType = Справочник ObjType_IDObjType_Name 70 Бугорки71 Глубина100 Высота Object = Позиция справочника Object_ID ObjType_ID Object_CodeObject_Name13 100 высокий виден из далека14 100 низкий 15 71 ооочень_глубокий дна не достать SomeTable Id Attr1_ID Attr1_TypeId more attributes1 13 1002 14 1003 15 71 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 12:44 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
ModelR Petro123 ModelR Не могли бы Вы прояснить Ваш текст в более понятном виде (никак не уясню суть без голых данных-примеров) http://www.sql.ru/forum/actualpost.aspx?bid=36&tid=294156&mid=0&p=1#2674302 Без проблем. Ближе к теме топика: Например, в таблице SomeTable атрибут 1 "основное качество" может быть ровно одним из приведенных выше перечислений Бугорки, Глубина, Высота . ObjType = Справочник ObjType_IDObjType_Name 70 Бугорки71 Глубина100 Высота Object = Позиция справочника Object_ID ObjType_ID Object_CodeObject_Name13 100 высокий виден из далека14 100 низкий 15 71 ооочень_глубокий дна не достать SomeTable Id Attr1_ID Attr1_TypeId more attributes1 13 1002 14 1003 15 71 А теперь вопрос: что с этим рациональнее всего сделать, если Бугорки - Есть/Нет, Высота измеряется в метрах, а вместо Глубины Цвет (ну пусть для примера целочисленный). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2006, 11:34 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Использование 1-го справочника отрицательно скажется на отчетах (скорость), где фигурируют данные из нескольких справочников. Сервер БД может подтормаживать при плотной работе пользователей числом больше 3. Особенно в режиме редактирования этих самых справочников. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2006, 15:55 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Область применения достаточно узкая, но реальная: множесто простых и коротких (память на данные сравнима с памятью на словарь данных для таблицы) справочников с однотипными значениями. Справочники создаются достаточно часто, но после создания их содержание меняется редко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2006, 16:09 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
sqllexИспользование 1-го справочника отрицательно скажется на отчетах (скорость), где фигурируют данные из нескольких справочников. Сервер БД может подтормаживать при плотной работе пользователей числом больше 3. Особенно в режиме редактирования этих самых справочников. неужели? Сервер предназначен для МНОГОПОЛЬЗОВАТЕЛЬСКОЙ работы. Если он "подтормаживает" при > 3х пользователей . Вот вы читаете этот пост и его редактируют другие сколько_пользователей ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2006, 16:27 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Угу, представьте себе, тормозил именно сервер БД при выполнении ХП. Кол-во работников, которые работали в системе на вводе данных было аж 5 человек. Работали плотно как раз с этим справочником и документами, которые связаны были с несколькими справочниками, физически помещенными в один суперсправочник. Исходя из этого я и написал "больше 3". Хотя специально я не проверял, как повела бы себя система с 4-мя пользователми, но, думаю, большой разницы не было бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2006, 21:20 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
2 sqllex Кривизна той реализации или производительность сервера СУБД не дает вам право делать такие выводы. У нас например идет поток в 2000 сложных транзакций в сек. и ничего обрабатывается .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2006, 09:41 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
bas2 sqllex Кривизна той реализации или производительность сервера СУБД не дает вам право делать такие выводы. У нас например идет поток в 2000 сложных транзакций в сек. и ничего обрабатывается .... Кривизна реализации чего именно, можно уточнить? Разделение справочников и соответсвующие изменения кода ХП на том же железе - получили отсутствие тормозов при одновременной работе (выполняли те же действия с этими же таблицами) 12 человек - ни одной жалобы. Вывод (мой): кривая реализация именно хранения справочников все в одном. Изменили метод - проблема ушла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2006, 15:19 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
sqllexКривизна реализации чего именно, можно уточнить? Разделение справочников и соответсвующие изменения кода ХП на том же железе - получили отсутствие тормозов при одновременной работе (выполняли те же действия с этими же таблицами) 12 человек - ни одной жалобы. Вывод (мой): кривая реализация именно хранения справочников все в одном. Изменили метод - проблема ушла. С кода ХП нужно было и начинать. Какая зависимость между количеством пользователей и хранением записей однотипных справочников в одной таблице? Единственная. Какая-то ХП (зачем она для справочника?) которая тормозила. Но не тема топика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2006, 00:20 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Предлагаю назвать это не справочниками, а списками и не париться. Нормальное решение, когда необходимо в системе иметь кучу объектов типа "Ссылка-Наименование". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2006, 18:39 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
iscrafm С кода ХП нужно было и начинать. Какая зависимость между количеством пользователей и хранением записей однотипных справочников в одной таблице? Единственная. Какая-то ХП (зачем она для справочника?) которая тормозила. Но не тема топика. Ага, конечно! Зачем вообще ХП для справочников? :) Может быть покажете на примерчике как написать ХП для сабжевого справочника, которая делает выборку документов с участием нескольких справочников (у нас было максимум 7). Вот тогда и поговорим о ХП, которая в этих условиях не будет тормозить. Что касается изменения кода ХП, то обьясните мне, тугодуму, как можно было использовать старый код, если структура БД изменилась? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2006, 21:59 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
sqllexАга, конечно! Зачем вообще ХП для справочников? :) Может быть покажете на примерчике как написать ХП для сабжевого справочника, которая делает выборку документов с участием нескольких справочников (у нас было максимум 7). Вот тогда и поговорим о ХП, которая в этих условиях не будет тормозить. Что касается изменения кода ХП, то обьясните мне, тугодуму, как можно было использовать старый код, если структура БД изменилась? целых 3 параграфа, а в чем смысл? Можете яснее изъясняться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2006, 22:56 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
sqllexМожет быть покажете на примерчике как написать ХП ну хотя бы, написать так, чтобы сервер (его оптимизатор) при каждом запуске не менял план выполнения запроса . Для MS SQL Server есть куча способов, но это отдельная тема IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2006, 10:15 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
sqllexМожет быть покажете на примерчике как написать ХП для сабжевого справочника, которая делает выборку документов с участием нескольких справочников (у нас было максимум 7). Вот тогда и поговорим о ХП, которая в этих условиях не будет тормозить. Что касается изменения кода ХП, то обьясните мне, тугодуму, как можно было использовать старый код, если структура БД изменилась? Petro123ну хотя бы, написать так, чтобы сервер (его оптимизатор) при каждом запуске не менял план выполнения запроса. Ответ поразил, честно. Petro123 - скажите, а при чем тут изменение плана ? Вы полагаете, что если план не изменяется - производительность вырастет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2006, 11:39 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
[quot Alexey Kudinov[/quot] Вы полагаете, что если план не изменяется - производительность вырастет ?[/quot] разумеется, примерно на 1 сек. (не требуется оптимизация + компилировать + сохранение в кэше). Если использовать в цикле, то время набегает .... ====== Статичный запрос всегда выполняется быстрее чем динамичный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2006, 13:58 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Не забудьте про блокировки в одной таблице, они должны существенно усложнить одновременную работу с разными справочниками. Кстати, у меня есть мнение, что при работе с таблицей данных, ссылающейся на большое кол-во справочников в одной таблице (>10) иногда наблюдаются глюки оптимизатора. Вопрос к уважаемым спецам. Система хранит данные на пересечении справочников. Таблиц данных много. Справочников много. Скорость изменения справочников низкая (20-30 записей в день). Скорость изменения данных средняя (10 000 записей в день). Ссылочная целостность обязательна. Справочники имеют разный состав полей. НО, существуют (назовем так - недосправочники) это некоторые наборы строк из разных справочников. Часть полей в таблице данных должна состоять из значений строк РАЗНЫХ справочников, входящих в набор. Как реализовывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2006, 20:34 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
ЛеоНе Часть полей в таблице данных должна состоять из значений строк РАЗНЫХ справочников, входящих в набор. Как реализовывать? вот это непонятно. Простейший случай: id_справочника_ФИО зарплата23 1350руб справочник id_справочника_ФИО ФИО23 Петров ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 10:19 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Мои 5 копеек ;) А каким образом документировать подобный набор справочников и связей? Создание справочников на пром, тестовой и девелоперских базах? Инсерт скриптами? Пользователь насоздовал справочников PK на пром.схеме, потом их синхронизировать с тестовой...? Мне кааца, что описание системы будет страдать, для мелких систем возможно и пойдет, для крупных сложно поддерживать. Совместная работа при BPM, CDM, PDM и т.п. тоже наверное будет не фонтан... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 13:06 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Гость1111 вы приведите пример проблемных справочников. Они ведь разные бывают. Ведь можно создать целую БД-справочников. А можно простейший случай: БОЛЬШОЙ_справочник из мелких справочников (ДниНедели+КритическиеДни+УлицыГорода+.......) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 13:16 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Я скорее не про проблему справочников, а про то чем вы моделировать это дело будете, как документировать, как управлять изменениями? Будете писать свой редактор моделей, метамоделей, cvs и т.п.? - удачи ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 13:26 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Гость1111Я скорее не про проблему справочников, а про то чем вы моделировать это дело будете, как документировать, как управлять изменениями? Будете писать свой редактор моделей, метамоделей, cvs и т.п.? - удачи ;) что сложного-то? Справочники не создаёт пользователь. При разработке 2 варианта: 1. Вы делаете Большую таблицу с постоянным числом справочников. 2. Вы делаете много таблиц с постоянным числом этих таблиц. Всё остальное (конструкторы метаданных пользователем а-ля 1С) не для меня, этого форума, и этого уровня мЫшления. IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 14:03 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Petro123 Всё остальное (конструкторы метаданных пользователем а-ля 1С) не для меня, этого форума, и этого уровня мЫшления. IMHOВы имеете в виду способы, в которых количество таблиц не постоянно?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 14:18 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
На мой вопрос внимания не обратили. Мои 5 копеек. Описываю свою ситуацию. Поскольку справочники могут быть разными (разное число полей и разные типы), продукт будет стоять у большого кол-ва заказчиков (они сами делают справочники), то и в случае одной таблицы и в случае многих потребуется система управления справочниками. Сложность ее в обоих случаях примерно одинакова. Наличие команд DDL не является принципиальной сложностью при наличии определенных прав доступа. Документирование ведется для абстрактных справочников. Зато ссылочная целостность в случае разных таблиц не позволит получить чужой справочник там, где не надо. В моем случае все осложнается ссылкой из одного поля на элементы из разных справочников. Один из вариантов - категоризация. Подскажите еще варианты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 14:32 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Petro123 Гость1111Я скорее не про проблему справочников, а про то чем вы моделировать это дело будете, как документировать, как управлять изменениями? Будете писать свой редактор моделей, метамоделей, cvs и т.п.? - удачи ;) что сложного-то? Справочники не создаёт пользователь. При разработке 2 варианта: 1. Вы делаете Большую таблицу с постоянным числом справочников. 2. Вы делаете много таблиц с постоянным числом этих таблиц. Всё остальное (конструкторы метаданных пользователем а-ля 1С) не для меня, этого форума, и этого уровня мЫшления. IMHO Можете привести какую-либо диаграмму, подготовленную, скажем, в Power Designer описывающую связи между Бугорки-соме табле? Кроме того, при развитии системы если такое, конечно, планируется, думаю, будут проблемы с триггерами, представлениями и т.п. про целостность уже говорили... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 14:33 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Dogen Petro123 Всё остальное (конструкторы метаданных пользователем а-ля 1С) не для меня, этого форума, и этого уровня мЫшления. IMHOВы имеете в виду способы, в которых количество таблиц не постоянно?.. да! Это программа-конструктор и БД-конструктор. Другой класс программ и ТЗ другое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 14:37 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
исходя из этого поста Petro123 guest_20040621Справочники - я надеюсь, мы одно и то же под этим понимаем - как правило, имеют вполне себе конкретное происхождение; более того, их количество для предметной области, как правило, конечно. Так что т. н. "однотабличная" структура - в общем случае банальная ошибка проектирования. как тогда расценивать перечислимые характеристики какого либа объекта, которые расширяются в процессе эксплуатации. Наверно это достаточно распространённый случай: Высота (высокий, низкий) Глубина (глубокий, ооочень глубокий) Бугорки (есть, нет) Это ведь справочники? у меня работает проект на справочника-классификаторе (хоть это не одно и то-же но близко) можно сделать по таблице на - Бугорки Высота Глубина можно по EAV (как у меня) - Список_значений (тип 3 перечислимое)1 Бугорки 32 Высота 13 Глубина 1 Объекты2324 Значения23 1 1623 2 4 СправочникПеречислимых1 1 Высокие1 2 Низкие22 Тёплые22 Холодные______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 14:53 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Лео(они сами делают справочники), то и в случае одной таблицы и в случае многих потребуется система управления справочниками. Сложность ее в обоих случаях примерно одинакова. Наличие команд DDL не является принципиальной сложностью при наличии определенных прав доступа. Документирование ведется для абстрактных справочников. Зато ссылочная целостность в случае разных таблиц не позволит получить чужой справочник там, где не надо. В моем случае все осложнается ссылкой из одного поля на элементы из разных справочников. Один из вариантов - категоризация. Подскажите еще варианты. в вашем случае - клиент меняет структуру БД и создаёт таблицы в моём - добавляет записи! Т.е. то на что и должен работать сервер. Это несоизмеримо! Потом у меня просто количество атрибутов у объектов может быть 200-300. Если создавать 200-300 таблиц на клиенте пользователем это изврат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 15:00 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Petro123 Лео(они сами делают справочники), то и в случае одной таблицы и в случае многих потребуется система управления справочниками. Сложность ее в обоих случаях примерно одинакова. Наличие команд DDL не является принципиальной сложностью при наличии определенных прав доступа. Документирование ведется для абстрактных справочников. Зато ссылочная целостность в случае разных таблиц не позволит получить чужой справочник там, где не надо. В моем случае все осложнается ссылкой из одного поля на элементы из разных справочников. Один из вариантов - категоризация. Подскажите еще варианты. в вашем случае - клиент меняет структуру БД и создаёт таблицы в моём - добавляет записи! Т.е. то на что и должен работать сервер. Это несоизмеримо! Потом у меня просто количество атрибутов у объектов может быть 200-300. Если создавать 200-300 таблиц на клиенте пользователем это изврат. Клиент не должен сам создавать ни объекты, ни справочники. Структура БД, состав документов, форм, и приложения должна быть определена на этапе проектирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 15:10 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Гость1111 Petro123 Лео(они сами делают справочники), то и в случае одной таблицы и в случае многих потребуется система управления справочниками. Сложность ее в обоих случаях примерно одинакова. Наличие команд DDL не является принципиальной сложностью при наличии определенных прав доступа. Документирование ведется для абстрактных справочников. Зато ссылочная целостность в случае разных таблиц не позволит получить чужой справочник там, где не надо. В моем случае все осложнается ссылкой из одного поля на элементы из разных справочников. Один из вариантов - категоризация. Подскажите еще варианты. в вашем случае - клиент меняет структуру БД и создаёт таблицы в моём - добавляет записи! Т.е. то на что и должен работать сервер. Это несоизмеримо! Потом у меня просто количество атрибутов у объектов может быть 200-300. Если создавать 200-300 таблиц на клиенте пользователем это изврат. Клиент не должен сам создавать ни объекты, ни справочники. Структура БД, состав документов, форм, и приложения должна быть определена на этапе проектирования. я бы сказал, если заказчик не просит-платит за "конструктор". ЗЫ. посмотри рядом топик "Понятие Рабочее место" - не всё однозначно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 15:21 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Petro123 я бы сказал, если заказчик не просит-платит за "конструктор". ЗЫ. посмотри рядом топик "Понятие Рабочее место" - не всё однозначно. Подобный конструктор будет обладать лишь элементарными функционалом, сложные, большие и масштабируемые системы на нем не строить. Oracle Designer тоже, типа, конструктор - хотите повторить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 15:35 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Гость1111 Petro123 я бы сказал, если заказчик не просит-платит за "конструктор". ЗЫ. посмотри рядом топик "Понятие Рабочее место" - не всё однозначно. Подобный конструктор будет обладать лишь элементарными функционалом, сложные, большие и масштабируемые системы на нем не строить. Oracle Designer тоже, типа, конструктор - хотите повторить? Лучше приведите названия "большие и масштабируемые системы" построенные не на конструкторах или не используешие элементы конструкторов, если не брать конечно весьма специфичных систем как например ОС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 16:31 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Petro123в вашем случае - клиент меняет структуру БД и создаёт таблицы в моём - добавляет записи! Т.е. то на что и должен работать сервер. Это несоизмеримо! Потом у меня просто количество атрибутов у объектов может быть 200-300. Если создавать 200-300 таблиц на клиенте пользователем это изврат. 200-300 таблиц - это плохо. Но какая сущность содержит 200-300 СПРАВОЧНЫХ атрибутов? Это либо очень спецефическая задача с автоматизированным вводом, либо ненормализованная сущность. Либо денормализованная намеренно таблица для достижения спецефических результатов. Какой менеджер будет использовать столько атрибутов товара, заказчика и проч.? Насчет несоизмеримо - если справочники однотипные - да, а если нет? Управление полями в этой таблице выльется в крупную головную боль. Гость1111Структура БД, состав документов, форм, и приложения должна быть определена на этапе проектирования. Нет, поскольку система продажная, и состав заказчиков неизвестен до момента продаж, известен только класс решаемых задач. Например 1С не знают в момент проектирования, какие формы выпустит соотв. орган. Petro123я бы сказал, если заказчик не просит-платит за "конструктор". Это как организовать продажу продукта. В любом случае реализация (1 или много таблиц) от заказчика будет скрыта и на интерфейсе не скажется. Критерий один - внутреннее удобство реализации и поддержки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 19:14 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Лео 200-300 таблиц - это плохо. Но какая сущность содержит 200-300 СПРАВОЧНЫХ атрибутов? ======== поиск по EAV и увидишь кучю примеров. Это либо очень спецефическая задача с автоматизированным вводом, либо ненормализованная сущность. Либо денормализованная намеренно таблица для достижения спецефических результатов. Какой менеджер будет использовать столько атрибутов товара, заказчика и проч.? =========== IMHO вы мало работали. Насчет несоизмеримо - если справочники однотипные - да, а если нет? ========= бессмыслено говорить без конкретной задачи. Управление полями в этой таблице выльется в крупную головную боль. ======= в какой? ЗЫ. Например, учёт зданий-недвижимости градоначальника. Сначала атрибуты - адрес, застройщик, площадь, .......... После запуска в эксплуатацию потребовалось учитывать новый/ые атрибуты - ДавалЛиВзятку (BOOLEAN) =========== Что будешь делать - проектировщик? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2006, 10:34 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
авторНапример 1С не знают в момент проектирования, какие формы выпустит соотв. орган. т.е. вы хотите сказать, что 1С меняет структуру БД при изменении форм? ЗЫ. Мы смешали в кучу всё подряд. Тема топика - справочники а не конструктор справочников. Я бы не хотел рассматривать программы - конструкторы типа 1С с его КОНФИГУРАТОРОМ. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2006, 10:38 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Лео Petro123в вашем случае - клиент меняет структуру БД и создаёт таблицы в моём - добавляет записи! Т.е. то на что и должен работать сервер. Это несоизмеримо! Потом у меня просто количество атрибутов у объектов может быть 200-300. Если создавать 200-300 таблиц на клиенте пользователем это изврат. 200-300 таблиц - это плохо. Но какая сущность содержит 200-300 СПРАВОЧНЫХ атрибутов? Это либо очень спецефическая задача с автоматизированным вводом, либо ненормализованная сущность. Либо денормализованная намеренно таблица для достижения спецефических результатов. Какой менеджер будет использовать столько атрибутов товара, заказчика и проч.? Насчет несоизмеримо - если справочники однотипные - да, а если нет? Управление полями в этой таблице выльется в крупную головную боль. Истина где-то рядом (с) Ф.Малдер ;) Я уже упоминал в подобном топике свой подход, все однотипные спрвочники состоящие только из полей код-название (1-покупка/2-продажа, 1-активный счет/2-пассивный...) я свалил в одну таблицу Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2006, 11:06 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Мое ИМХО: работал с системой, в которой ВСЕ справочники слиты в одну таблицу - гемороя не оберешься. В прикладной части были специальные функции работы с каждым типом из справочника. Что надо: Нужно выделить отдельные сущности - перечисления, однотипные значения можно(да и намного удобней) вынести в отдельную сущность, разноплановые справочники с изменяемыми аттрибутами лучше хранить в отдельных таблицах. Но даже в этом: в чем сложность к редактору справочника привязать DDL-генератор? Примеры те же: MS SQL Enterprise Manager, 1C. --- aka VIR. No pity. No mercy. No remorse. No Regret ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2006, 21:09 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Estets Гость1111 Petro123 я бы сказал, если заказчик не просит-платит за "конструктор". ЗЫ. посмотри рядом топик "Понятие Рабочее место" - не всё однозначно. Подобный конструктор будет обладать лишь элементарными функционалом, сложные, большие и масштабируемые системы на нем не строить. Oracle Designer тоже, типа, конструктор - хотите повторить? Лучше приведите названия "большие и масштабируемые системы" построенные не на конструкторах или не используешие элементы конструкторов, если не брать конечно весьма специфичных систем как например ОС. Пример промышленного конструктора уже привел - Orcale Designer, пример системы - закупленный тиражируемый биллинг, по которому разработчик должен обеспечить работу и поддержку системы покупателю "от и до"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 08:23 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Infernal V. Raven Мое ИМХО: работал с системой, в которой ВСЕ справочники слиты в одну таблицу - гемороя не оберешься. В прикладной части были специальные функции работы с каждым типом из справочника. это всё обоснование? авторВ прикладной части были специальные функции работы с каждым типом из справочника. - создать представление view и клиент даже не узнает что у него одна таблица - если сделать как вы хотите, то вместо вашего геморроя получим новый - операторы DDL по модификации структуры БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 12:11 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Petro123Например, учёт зданий-недвижимости градоначальника. Сначала атрибуты - адрес, застройщик, площадь, .......... После запуска в эксплуатацию потребовалось учитывать новый/ые атрибуты - ДавалЛиВзятку (BOOLEAN) =========== Что будешь делать - проектировщик? Внесу в метаинформацию запись об этом поле и запущу генератор. В случае с одной таблицей - все равно вносить метаинформацию, генератор только не нужен. Акцентирую внимание на различиях - в одном случае нужен генератор, в другом невозможна типизированная ссылочная целостность через FK. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 12:19 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Petro123 Infernal V. Raven Мое ИМХО: работал с системой, в которой ВСЕ справочники слиты в одну таблицу - гемороя не оберешься. В прикладной части были специальные функции работы с каждым типом из справочника. это всё обоснование? Нет, полученный опыт. Petro123 авторВ прикладной части были специальные функции работы с каждым типом из справочника. - создать представление view и клиент даже не узнает что у него одна таблица - если сделать как вы хотите, то вместо вашего геморроя получим новый - операторы DDL по модификации структуры БД. Опять же view вы собираетесь делать ручками? Если да - то и таблицы справочников править можно напрямую. А DDL-генератор вещь довольно тривиальная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 12:32 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Лео давай с небе на землю и ближе к практике Лео Внесу в метаинформацию ========== это в терминологии администратора БД и схемы БД где? запись об этом поле и запущу генератор. ========== это что и приведи код (ХП\COM\ExtProc\DLL\.....) В случае с одной таблицей - все равно вносить метаинформацию === какую? , генератор только не нужен. Акцентирую внимание на различиях - в одном случае нужен генератор, в другом невозможна типизированная ссылочная целостность через FK. ========== вот это уже ближе к конкретики, ещё забыл, что DLL и генераторы это безопасность авторВ случае с одной таблицей - все равно вносить метаинформацию INSERT INTO СписокАтрибутов VALUES ('333', 'Давал взятку', 'id_BOOLEAN') для сервера это не мета...., а обыкновенная запись. "Сложнее всего в мире достигнуть простоты - это крайняя граница опыта и последнее усилие гения". George Sand. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 12:53 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Внесу в метаинформацию ========== это в терминологии администратора БД и схемы БД где? Не очень понял вопрос. запись об этом поле и запущу генератор. ========== это что и приведи код (ХП\COM\ExtProc\DLL\.....) Пока генераторы команд DDL были оформлены процедурами, будут наверное классами. Так удобнее. Сами команды легко структурируются. В случае с одной таблицей - все равно вносить метаинформацию === какую?Сами написали: Код: plaintext Она во всех случаях одинакова. , генератор только не нужен. Акцентирую внимание на различиях - в одном случае нужен генератор, в другом невозможна типизированная ссылочная целостность через FK. ========== вот это уже ближе к конкретики, ещё забыл, что DLL и генераторы это безопасность Можно пояснить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 13:05 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Infernal V. RavenMS SQL Enterprise Manager При чем тут EM ? EM - это бизнес приложение (мы вроде о них) ? Infernal V. Raven1CПочему то часто вспоминают по 1С. 1С - успешный, хороший продукт, но это не значит что тамошние решения являются эталоном. Не надо выдавать нужду за добродетель. Это Infernal V. Ravenв чем сложность к редактору справочника привязать DDL-генератор? - другая крайность. Давать пользователям права на DDL зело не рекомендуется. Более того, админам тоже (другое дело, что у них эти права трудно отобрать). Изменять структуру БД - удел разработчиков. IMO надо разделять справочники и справочники. Неизменный набор атрибутов, к-е описываются стандартными таблицами. И переменный (обычно они называются дополнительными атрибутами), к-й можно реализовать и в "единой" таблице. Доп атрибуты - суть есть дополнительная информация, структурированная для удобства, которую можно было бы ввести и в мемо поле. Соответственно в этом случае ссылочной целостностью, неинформативностью схемы, тормозами при выборке и прочими неудобствами единой таблицы можно принебречь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 13:17 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Лео========== вот это уже ближе к конкретики, ещё забыл, что DLL и генераторы это безопасность Можно пояснить? У пользователя есть потенциальная возможность навернуть как минимум часть данных в таблицах (совсем не те, что "задумывались" разработчиками), а скорее всего и саму таблицу(ы). Но и это еще не все. Главное(практическое) зло неконтролируемого изменения структуры БД - трудность последующего обновления и сопровождения такой системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 13:25 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Alexey Kudinov У пользователя есть потенциальная возможность навернуть как минимум часть данных в таблицах (совсем не те, что "задумывались" разработчиками), а скорее всего и саму таблицу(ы). Но и это еще не все. Главное(практическое) зло неконтролируемого изменения структуры БД - трудность последующего обновления и сопровождения такой системы. С навернуть данные не соглашусь, команды выдает оттестированный генератор, максимальное зло при ошибке - отказ выполнить действие. Хтя потенциальная возможность действительно есть. Так - же как навернуть свои данные разом дав команду delete. В этом случае один из рубежей обороны отсутствует. Только я в своей практике еще с этим не встречался. А вот с сопровождением соглашусь. Все сопровождение придется делать через эти - же генераторы. Ихмо - целостность это перевешивает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 13:37 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Леонавернуть свои данные разом дав команду delete триггеры рулят :) ЛеоС навернуть данные не соглашусь, команды выдает оттестированный генератор, максимальное зло при ошибке - отказ выполнить действие. Хтя потенциальная возможность действительно есть. Понимаете, проблемы безопасности - они всегда потенциальные. Действительно, в жизни вряд ли кто будет конструировать специальную строку, чтобы сделать sql-injection например (хотя даже на sql.ru прецеденты были). Тем не менее проблема есть и есть специальные люди - IT аудиторы, к-е вам о ней обязательно напомнят. Но вот как то раз нам позвонил пользователь. Обычный парень из бек офиса. И задал наивный вопрос - он сам сделал програмку в экселе, она к базе уже коннектится, но что-то список таблиц получить не может, а ему очень надо. Можете помочь ? Я не делаю из безопасности фетиш, так же как и из ссылочной целостности. Whatever works, как говорится. Но по крайней мере представлять себе возможные последствия своих решений и знать что такое хорошо, а что такое плохо - надо. ЗЫ - это не вдаваясь в дискуссию о трудоемкости написания генератора и "обновлялки", к-я его использует. Я делал и то и то, обьем работы представляю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 14:06 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Alexey KudinovПри чем тут EM ? EM - это бизнес приложение (мы вроде о них) ?Я привел EM как раз как пример DDL-генератора, про клиента я вообще не говорил. Alexey KudinovПочему то часто вспоминают по 1С. 1С - успешный, хороший продукт, но это не значит что тамошние решения являются эталоном. Не надо выдавать нужду за добродетель. Опять пальцем в небо. Читайте выше Alexey KudinovДавать пользователям права на DDL зело не рекомендуется. Более того, админам тоже (другое дело, что у них эти права трудно отобрать). Изменять структуру БД - удел разработчиков. ...Бог мой, сколько написано. Покажите где я говорил, что нужно давать права пользователям на изменение структуры данных? Все остальное ваше ИМХО совпадает с моим, только вы это другими словами говорите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 14:36 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
авторЯ привел EM как раз как пример DDL-генератора, про клиента я вообще не говорил EM - это тоже клиент. И 1С. Но задачи 1С и EM совсем разные, п.э. я и удивился что они оба приведены в качестве примеров. Ладно, проехали, я понял что вы имели ввиду. Infernal V. RavenПокажите где я говорил, что нужно давать права пользователям на изменение структуры данных? Вы написали "в чем сложность к редактору справочника привязать DDL-генератор" Я ответил, что сложность в том, что при этом придется дать пользователям права на DDL. Если вы имели ввиду, что генератор привязать, но пользоваться им будет только программист - то приношу свои извенения, не так понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 14:49 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Alexey KudinovЕсли вы имели ввиду, что генератор привязать, но пользоваться им будет только программист - то приношу свои извенения, не так понял. А я имел ввиду, что пользоваться будет пользователь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 15:34 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Лео Alexey KudinovЕсли вы имели ввиду, что генератор привязать, но пользоваться им будет только программист - то приношу свои извенения, не так понял. А я имел ввиду, что пользоваться будет пользователь.Я думаю, что это решение в большинстве случаев все-таки принимать не стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 18:18 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Alexey KudinovЕсли вы имели ввиду, что генератор привязать, но пользоваться им будет только программист - то приношу свои извенения, не так понял.Теперь вы меня поняли. Наши позиции совпадают. Все-таки мне кажется, что конфигурацию должен производить человек специально для этого подготовленный и ответственный за работоспособность системы. Тема избитая уже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 18:21 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Точно, избитая. Конфигуратором пользуется специальная роль. Одна на систему. Просто создавать справочники по заказам 100 клиентов - тоскливо. Проще дать инструмент, и написать, что пользование этим инструментом можно доверить человеку, расбирающемуся в тонкостях системы (при этом не обязательно ему знать SQL). Простого оператора, или даже непростого в эту роль включать не стоит. Но делаться это будет на том конце, без участия основных разработчиков системы. Кстати владелец этой роли и админ могут быть разные люди. Вроде сформулировал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 18:43 |
|
||
|
Производительность при использовании единой таблицы для справочников
|
|||
|---|---|---|---|
|
#18+
Гость1111Я скорее не про проблему справочников, а про то чем вы моделировать это дело будете, как документировать, как управлять изменениями? Будете писать свой редактор моделей, метамоделей, cvs и т.п.? - удачи ;)А куда деваться? Кейсы понятия не имеют о словарях, придуманных для управления обобщенными таблицами. Так что как минимум отчеты для документирования писать придется. А лучше и контроль непротиворечивости и полноты словаря против реальных данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2006, 14:51 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1545109]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
180ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
96ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 539ms |

| 0 / 0 |
