|
|
|
Сегментация БД на уровне реализации
|
|||
|---|---|---|---|
|
#18+
Один из принципов эффективного управления сложными структурами - разбиения однородного месива на наборы более и менее взаимосвязанных кластеров - пакетов, пространств имён и т.д. Такой подход активно применяется при проектировании системы вцелом, а также функциональных и объектных приложений. Есть ли какие-то подходы для аналогичной операции применительно к базам данных? На уровне МОДЕЛЕЙ инструменты проектирования (CASE-tools) позволяют выделять domain areas, packages, но при переходе на уровень реализации (DB IDE) мы получаем линейный список таблиц . При работе с линейным списком проблемы обычно такого рода: 1) Трудно быстро найти нужный объект, или убедиться в его отсутствии (у меня 400 таблиц); 2) Трудно ручным и программным образом выделить подмножество объектов, которые должны быть обработаны; 3) Различные сегменты БД могут иметь различные требования по безопасности - а вручную назначать каждый объект на конкретного системного пользователя БД не очень удобно; 4) Трудно увидеть взаимосвязанные объекты, и наличие - отсутствие связей, соответственно. Соображения такие - стоит каким-то образом отделять БД предметной области от БД приложения. Это повысит управляемость (проще оперировать 20 + 80 таблицами, чем 100), а также, потенциально, безопасность, т.к. к этим базам обычно применимы различные критерии уязвимости + возможно различные критерии строгости данных. Например, в БД приложения все внешние ключи должны существовать, а в БД предметной области могут существовать более мягкие условия. Далее, можно разбивать внутри пакеты таблиц приложения и пакета таблиц предметной области на более мелкие пакеты, если это имеет смысл. Пока мне приходят в голову следующие варианты: 1) Разнесение по разным схемам БД. 2) Введение префиксов. 3) Иерахическое представление набора таблиц, где в качестве корневых элементов выступают таблицы, имеющие минимальное количество исходящих ссылок. 4) Полная интеграция средства моделирования и средства рабработки БД (Управление через модель не только структурой, но и данными). В данных момент мне наиболее интересным в смысле практической быстрой реализуемости представляется подход 1. Если у вас опыт применения подобного подхода? По крайней мере SQL 2000 жалуется, что создавать ключи на таблицы в других схемах не может, а это достаточно полезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2007, 17:00 |
|
||
|
Сегментация БД на уровне реализации
|
|||
|---|---|---|---|
|
#18+
Спроектирован и используем с 2003 собственный инструмент который 1) реализует идеологию доменов данных 2) из доменов формируется структура объектов учета 3) объекты учета объединяются в информационную модель, причем есть возможность сформировать подмодели включающие только те объекты которые должны быть обработаны в рамках узкой типовой задачи 4) на информационную модель можно наложить физическую модель (в т.ч. и управление пользователями) - что где находится в какой базе на каком серваке (связи описаны см пункт 3) На пальцах - можно обратиться к этой настройке и получить документировано доступные данные, хранимки, связи, роли - т.е. система генерит разработчику документацию Однако ... 1) когда стало более 10 баз (1 основная, остальные разно-предметные) летать даже с этой ...ней стало тяжело (совмещение информационной и логической модели). 2) при удаленном взаимодействий баз (не репликация !!!!) - опять приходится работать ручками ... Ша переписываем с несколько другим но похожим подходом ... ___________________________________________________________________________________ ... Как что достать - вторая эскадрилья. А как самолеты сбивать - первая эскадрилья ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2007, 17:34 |
|
||
|
Сегментация БД на уровне реализации
|
|||
|---|---|---|---|
|
#18+
Недавно обсуждалось .Мое мнение по поводу префиксов и схем собственно там. По поводу "Соображения такие - стоит каким-то образом отделять БД предметной области от БД приложения. " - баянистое сто раз перетертое.но повторюсь:словарь системы необходим, хотя бы с точки зрения вертикального контроля доступа (на уровне атрибутов),При наличии словаря системы очень удобно делать настраиваемый механизм генерации проводок и т.д. Но факт управления 100 таблицами меня не пугает:запросы пока строят ручками,а не супер-умным автогенератором,поэтому для этого словарь применять пмсм не очень удачно (все равно хинты и прочее руками дописывать) - может быть это и не правильно,собственно в любом промышленном отчетнике на основе словаря (юниверса) отчеты строятся.Плюсов полно.По поводу интеграции case-у меня pd генерит практически все данные для словаря системы (оо-модель бизнес-сущностей в нем,словарь системы - в бд, данные загоняются туда скриптом).минусы-его еще надо пасти (я пасу pd) либо руками,либо утилитой своей или чужой. p.s.Блин,какое умное название темы.Прямо чувствуешь свою ущербность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 10:08 |
|
||
|
Сегментация БД на уровне реализации
|
|||
|---|---|---|---|
|
#18+
По поводу "Соображения такие - стоит каким-то образом отделять БД предметной области от БД приложения. " - баянистое сто раз перетертое.Может быть в форумах и перетёртое, но нигде в литературе по проектированию я чётких и обоснованных рекомендаций не видел. но повторюсь: словарь системы необходим, хотя бы с точки зрения вертикального контроля доступа (на уровне атрибутов)Что такое "вертикальный контроль доступа"? Гугль такого не знает. Словарь системы не решает проблему эффективной навигации по объектам БД средствами IDE. При наличии словаря системы очень удобно делать настраиваемый механизм генерации проводок и т.д.Да, подобные механизмы весьма полезны и эффективны, но это сегментация через метаданные, которые оторваны от самих объектов БД. Но факт управления 100 таблицами меня не пугает: запросы пока строят ручками, а не супер-умным автогенератором, поэтому для этого словарь применять пмсм не очень удачно (все равно хинты и прочее руками дописывать) - может быть это и не правильно, собственно в любом промышленном отчетнике на основе словаря (юниверса) отчеты строятся. Я рассматриваю интересы не только программиста SQL-запросов, но и администратора БД и архитектора/проектировщика БД, отвечающего за "робастность" схемы. Хорошо, допустим мы разделили список таблиц по различным предметным областям с помощью префиксов, получили в каждой, скажем, по 30 таблиц. Типичный браузер объектов покажет их списком - т.е. придётся глазами искать нужную таблицу по имени. Но о их взаимосвязях можно узнать только отдельно просмотрев ключи или построив диаграмму каким-либо образом. Идея с иерархическим навигатором состоит в том, чтобы по возможности показывать дерево, начиная с самых независимых таблиц (на основе внешних ключей). Как минимум, чтобы справочники, которые используются только для одной таблицы, не показывались на первом уровне, а являлись подузлами для неё. Это ускорит доступ к таблицам с данными + повысит уровень понимания схемы тем, кто этот браузер будет использовать. Плюс будет автоматически решаться задача аудита несвязанных таблиц. Плюсов полно. По поводу интеграции case-у меня pd генерит практически все данные для словаря системы (оо-модель бизнес-сущностей в нем, словарь системы - в бд, данные загоняются туда скриптом). минусы - его еще надо пасти (я пасу pd) либо руками, либо утилитой своей или чужой.SQL-программист и зачастую админ работают с базой не через CASE, а через IDE. Я говорил про другую интеграцию - чтобы IDE и CASE сливались в единый инструмент, который позволит вести разработку в единой среде. Блин,какое умное название темы. Прямо чувствуешь свою ущербность."Вертикальный контроль доступа" не хуже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 10:48 |
|
||
|
Сегментация БД на уровне реализации
|
|||
|---|---|---|---|
|
#18+
1."Да, подобные механизмы весьма полезны и эффективны, но это сегментация через метаданные, которые оторваны от самих объектов БД." - они не могут быть оторваны.в справочнике сумм для проводок очень четко указана таблица бд и колонка,откуда сумма берется. 2.вертикальный контроль доступа,как было указано в скобках, контроль доступа на уровне видимости атрибутов.например в ведомости зарплаты петрову нельзя смотреть бонусы иванова.причем делаться он должен не на примитивном уровне создания вьюх по каждого петрова,а именно по словарю системы (у меня он автоматически добавляет "предикат безопасности" ,который кушает оракловый fgac). 3."Может быть в форумах и перетёртое, но нигде в литературе по проектированию я чётких и обоснованных рекомендаций не видел." у Фаулера (столь нелюбимого мной) в Архитектуре корпоративных приложений по-моему есть шаблон проектирования СЛоварь системы (если не в Фаулере,то в другой книге по шаблонам (у Лармана вроде)) - в общем точно есть. 4.по поводу "или построив диаграмму каким-либо образом" - она уже должна быть изначально - ее пмсм архитектор БД должен видеть.админу она вряд ли нужна-ему нужен план запросов,который и так связи выведет. 5."Идея с иерархическим навигатором состоит в том, чтобы по возможности показывать дерево, начиная с самых независимых таблиц (на основе внешних ключей). Как минимум, чтобы справочники, которые используются только для одной таблицы, не показывались на первом уровне, а являлись подузлами для неё. Это ускорит доступ к таблицам с данными + повысит уровень понимания схемы тем, кто этот браузер будет использовать. Плюс будет автоматически решаться задача аудита несвязанных таблиц." - в АБС ИБСО в модуле Администратор и Оператор именно так и сделано. 6."чтобы IDE и CASE сливались в единый инструмент, который позволит вести разработку в единой среде." - конечно стратегическая цель программинга на сегодня такая,но встает другой вопрос:это будет до-черта стоить (к радости продажников),необходимо будет повышать уровень программеров, необходимо контролировать доступ к этой модели (чтобы ее мог менять архитектор,а не каждый) и их цену соответственно,поэтому минусы тоже есть.собственно все проблемы новых афин,ибсов и прочих систем,построенных на основе словаря бд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 12:47 |
|
||
|
|

start [/forum/topic.php?fid=32&gotonew=1&tid=1544699]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
24ms |
get topic data: |
11ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 207ms |
| total: | 334ms |

| 0 / 0 |
