|
|
|
Вопрос по NHibernate и проектированию структуры БД с учетом наследования
|
|||
|---|---|---|---|
|
#18+
вариант 1 и 3 чатные случаи варианта 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2010, 00:09 |
|
||
|
Вопрос по NHibernate и проектированию структуры БД с учетом наследования
|
|||
|---|---|---|---|
|
#18+
barserСкажите, пожалуйста, какие могут быть 'подводные камни' при следующей организации таблиц БД. (используется СУБД Oracle 11, NHibernate 2.1) Основная таблица 'documents' содержит поля, общие для всех видов документов. Например, 'дата создания', 'автор' и т.п. На уровне приложений работа ведется с экземплярами подклассов документа (например, 'документ-договор' или 'документ-распоряжение'). Каждому подклассу в БД соответствует своя таблица, одно из полей которой - ссылка на id документа в таблице documents. Словом, реализована так называемая схема наследования 'table-per-subclass' (как в учебниках). Пока всё работает как нужно, но на данный момент существует не так много подклассов документов. Меня интересует, что может произойти при росте их числа. Конкретно - настораживает следующее: типичный запрос Код: plaintext При добавлении подкласса соответственно добавится еще один inner join. В принципе, мне кажется для конкретных ситуаций можно будет добавить методы в репозитории документов, не использующие эти join'ы, но хотелось бы знать, чего ожидать, может, не стоит вообще 'париться'... Или наоборот придется полностью менять модель данных? Кто-нибудь наверняка же проходил через подобный этап в проектировании/разработке. p.s. На уровне модели данных объединение всех типов документов базовым классом 'document' весьма удобно и представляется мне правильным. На всякий случай добавлю, что разрабатываемый продукт не относится к OLTP-системам (наверное, это уже и так понятно :) ) Повторюсь, используется СУБД Oracle 11g. Может быть, гуру подскажут, существенные особенности реализации inner join в нём. Когда идет, например, выборка единственной строки по конкретному id, но с n inner join'ами ( в n-1 из которых строки 100% не будет)... Или вариант с 'пэйджингом' - когда на странице отображается около 20 документов различных подклассов. Спасибо! Вот здесь был спор но только для MS SQL http://www.sql.ru/forum/actualthread.aspx?tid=405678&hl=%ee%ee%ef Ничего страшного в такой структуре не нашли, главное правильно спланировать. У нас вот уже два года, как система с такой структурой внедрена, тоже MS SQL, и проблем пока не видно, подклассов больше 50. Размер базы около 1 Гб, конечно не много, но тормозов не наблюдается. Соответственно, если грамотно подойти к проектированию, все будет нормально. Единственное мы не использовали Хибирнейт. Используем хранимые процедуры для доступа к данным, к классам документов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2010, 08:27 |
|
||
|
Вопрос по NHibernate и проектированию структуры БД с учетом наследования
|
|||
|---|---|---|---|
|
#18+
barserТеперь есть 2 варианта с введением Категорий (МСУ). Так, на диаграмме 2 первый из них. "Базовый документ", от которого наследуются "Категории" может и отсутствовать, но тогда во всех категориях будут иметься схожие технические поля - такие как "автор документа", "дата создания", "дата регистрации"... Да поймите же, наконец, что Вы в будущем можете отхватить такую категорию документов, которой не нужны поля базового документа! P.S. Не нужно скрещивать ООП в организации хранилища - это разные вещи. Мой вариант в аттаче. Под DML понимается скрипт, который может сгенерить сгенерить категорию. То есть, изначально, к примеру, в системе документооборота проинсталлированы 5 категорий. Но можно доустановить еще 4, доступные в DML. 2, 3 и т.д. уровни DML - это отношения мастер таблцы с детальными таблицами: M => D1 => D2 => D3 => ... На практике достаточно 1 уровня (M => D1), но в принципе, никто не может нас ограничить заложиться еще под парочку уровней вложенностей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2010, 11:25 |
|
||
|
Вопрос по NHibernate и проектированию структуры БД с учетом наследования
|
|||
|---|---|---|---|
|
#18+
ViPRosтфу, вариант 2 и нафиг какие то базовые типы, собственно тип классифицируется множественно +1 миллион! P.S. Сахават, просто нектором сильно мозг свернули ООП'ие заморочки. Вот они это уже и БД тянут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2010, 11:27 |
|
||
|
Вопрос по NHibernate и проектированию структуры БД с учетом наследования
|
|||
|---|---|---|---|
|
#18+
МСУ, вот общая схема типизации объектов. Идентификационный пул (Ид, ТипИд(опционально), Наименование(опционально))-> Тип(Ид, ТипИД, .....) -> МножественныйКлассификатор(....ТипИд, ...) -> Нетипизировынные свойства(Ид, СвойствоИД, значение) Тип и Свойства содержат метаданные. Объект оздается из иденификациооного пула. Ели надо то типизируется (т.е., получает статические свойства). В пул вносится сооветствующий ТипИд для данного объекта. Тип классифицируется множественным образом по ролям (т.е. типизированные объекты получают динамические свойства со статическим значением = ИдКлассификатора + ИдВсехРодителейЭтойВетки). Далее объект по мере нужды получает динамические свойства в Нетипизировынные свойства(Ид, СвойствоИД, значение). По мере разрастания последнего до полного домена ИДов Типа происходит миграция динамических свойств в Тип. Не знаю понятно ли обяснил. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2010, 13:16 |
|
||
|
Вопрос по NHibernate и проектированию структуры БД с учетом наследования
|
|||
|---|---|---|---|
|
#18+
ViPRosНе знаю понятно ли обяснил. :( Запутанно. Нарисуйте понятную доменную модель с классами. Или просто на самом низком уровне - логическую схему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2010, 13:24 |
|
||
|
Вопрос по NHibernate и проектированию структуры БД с учетом наследования
|
|||
|---|---|---|---|
|
#18+
barser, Думаю, комментарии излишни. Остаётся лишь выбрать более понравившуюся принципиальную схему :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2010, 14:02 |
|
||
|
Вопрос по NHibernate и проектированию структуры БД с учетом наследования
|
|||
|---|---|---|---|
|
#18+
baike2000У нас вот уже два года, как система с такой структурой внедрена, тоже MS SQL, и проблем пока не видно, подклассов больше 50. Размер базы около 1 Гб, конечно не много, но тормозов не наблюдается. :) P.S. Я бы понимаю, если бы сказали о размере 1Тб (ну, ладно, - хотя бы уж 100Гб) - я еще понял. Но про 1 Гб можно было бы промолчать. Чисто ради приличия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2010, 14:22 |
|
||
|
Вопрос по NHibernate и проектированию структуры БД с учетом наследования
|
|||
|---|---|---|---|
|
#18+
МСУ, не могу диаграмму скопировать в Paint имена таблиц становятся ????? русские там ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2010, 14:24 |
|
||
|
Вопрос по NHibernate и проектированию структуры БД с учетом наследования
|
|||
|---|---|---|---|
|
#18+
ViPRosМСУ, не могу диаграмму скопировать в Paint имена таблиц становятся ????? русские там FastStone Capture рулит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2010, 14:40 |
|
||
|
Вопрос по NHibernate и проектированию структуры БД с учетом наследования
|
|||
|---|---|---|---|
|
#18+
МСУViPRosМСУ, не могу диаграмму скопировать в Paint имена таблиц становятся ????? русские там FastStone Capture рулит. Но, если есть Word - копируйте в ворд, там кодировка нормально воспринимается. Попробуйте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2010, 14:42 |
|
||
|
Вопрос по NHibernate и проектированию структуры БД с учетом наследования
|
|||
|---|---|---|---|
|
#18+
МСУНо, если есть Word - копируйте в ворд, там кодировка нормально воспринимается. Попробуйте. А потом, разумеется, обратно из ворда в Paint. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2010, 14:44 |
|
||
|
Вопрос по NHibernate и проектированию структуры БД с учетом наследования
|
|||
|---|---|---|---|
|
#18+
МСУ, FastStone взял кое как Ну, покритикуй. (Классификатор, макроклассификатор с типами и макротипами через триггеры) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2010, 15:02 |
|
||
|
Вопрос по NHibernate и проектированию структуры БД с учетом наследования
|
|||
|---|---|---|---|
|
#18+
МСУViPRosтфу, вариант 2 и нафиг какие то базовые типы, собственно тип классифицируется множественно +1 миллион! P.S. Сахават, просто нектором сильно мозг свернули ООП'ие заморочки. Вот они это уже и БД тянут Это ты нам сейчас продемострировал в своей диаграмме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2010, 15:11 |
|
||
|
Вопрос по NHibernate и проектированию структуры БД с учетом наследования
|
|||
|---|---|---|---|
|
#18+
ViPRosFastStone взял кое как Не правильно. Нажмите скроллинговый снапшот: кнопочка со стрелочкой (capture scrolling window), и будет щастье. Переделывайте! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2010, 15:24 |
|
||
|
Вопрос по NHibernate и проектированию структуры БД с учетом наследования
|
|||
|---|---|---|---|
|
#18+
ViPRosНу, покритикуй. Саха, мы дискутируем не за универсальные классификаторы с динамик типами Нам не нужен конструктор, нам нужно хранилище документов в системе документооборота, классифицирующееся по некому абстрактному правилу (назовем его категорией). И всё :) P.S. Опять Вы лезете со своими скринами не в ту степь ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2010, 15:27 |
|
||
|
Вопрос по NHibernate и проектированию структуры БД с учетом наследования
|
|||
|---|---|---|---|
|
#18+
МСУ, ну я так и делал, он берет только вертикальный скролл ну там вся информация о метамодели пркладная модель автоматически генерируется из нее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2010, 15:37 |
|
||
|
Вопрос по NHibernate и проектированию структуры БД с учетом наследования
|
|||
|---|---|---|---|
|
#18+
МСУ, во блин два года не даешь поставить людей на истинный путь - создать универсальную БД :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2010, 15:45 |
|
||
|
Вопрос по NHibernate и проектированию структуры БД с учетом наследования
|
|||
|---|---|---|---|
|
#18+
ViPRosМСУ, ну я так и делал, он берет только вертикальный скролл Да, работает в вертикальным. Очень удобно скринить с двумя мониторами - растянуть окно на два монитора и скринить. Тогда красиво получается. Купите себе еще один монитор :) ViPRosну там вся информация о метамодели пркладная модель автоматически генерируется из нее Слово "мета" - в топку. Она не нужна и речь о ней не идёт. То, что я привёл (поле DML) - рюшечка, которая ТС'у скорей всего не понадобится :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2010, 15:45 |
|
||
|
Вопрос по NHibernate и проектированию структуры БД с учетом наследования
|
|||
|---|---|---|---|
|
#18+
ViPRosМСУ, во блин два года не даешь поставить людей на истинный путь - создать универсальную БД :) Удар по производительности. Нам хватило 1С с её мета-генерацией, хватит, хлебнули :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2010, 15:46 |
|
||
|
|

start [/forum/topic.php?fid=17&gotonew=1&tid=1351084]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
252ms |
get topic data: |
7ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 533ms |

| 0 / 0 |
