powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Сегментация БД на уровне реализации
5 сообщений из 5, страница 1 из 1
Сегментация БД на уровне реализации
    #34367638
Майевтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Один из принципов эффективного управления сложными структурами - разбиения однородного месива на наборы более и менее взаимосвязанных кластеров - пакетов, пространств имён и т.д. Такой подход активно применяется при проектировании системы вцелом, а также функциональных и объектных приложений.

Есть ли какие-то подходы для аналогичной операции применительно к базам данных? На уровне МОДЕЛЕЙ инструменты проектирования (CASE-tools) позволяют выделять domain areas, packages, но при переходе на уровень реализации (DB IDE) мы получаем линейный список таблиц . При работе с линейным списком проблемы обычно такого рода:
1) Трудно быстро найти нужный объект, или убедиться в его отсутствии (у меня 400 таблиц);
2) Трудно ручным и программным образом выделить подмножество объектов, которые должны быть обработаны;
3) Различные сегменты БД могут иметь различные требования по безопасности - а вручную назначать каждый объект на конкретного системного пользователя БД не очень удобно;
4) Трудно увидеть взаимосвязанные объекты, и наличие - отсутствие связей, соответственно.

Соображения такие - стоит каким-то образом отделять БД предметной области от БД приложения. Это повысит управляемость (проще оперировать 20 + 80 таблицами, чем 100), а также, потенциально, безопасность, т.к. к этим базам обычно применимы различные критерии уязвимости + возможно различные критерии строгости данных. Например, в БД приложения все внешние ключи должны существовать, а в БД предметной области могут существовать более мягкие условия.

Далее, можно разбивать внутри пакеты таблиц приложения и пакета таблиц предметной области на более мелкие пакеты, если это имеет смысл.

Пока мне приходят в голову следующие варианты:
1) Разнесение по разным схемам БД.
2) Введение префиксов.
3) Иерахическое представление набора таблиц, где в качестве корневых элементов выступают таблицы, имеющие минимальное количество исходящих ссылок.
4) Полная интеграция средства моделирования и средства рабработки БД (Управление через модель не только структурой, но и данными).

В данных момент мне наиболее интересным в смысле практической быстрой реализуемости представляется подход 1. Если у вас опыт применения подобного подхода? По крайней мере SQL 2000 жалуется, что создавать ключи на таблицы в других схемах не может, а это достаточно полезно.
...
Рейтинг: 0 / 0
Сегментация БД на уровне реализации
    #34367775
Фотография shelsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спроектирован и используем с 2003 собственный инструмент который
1) реализует идеологию доменов данных
2) из доменов формируется структура объектов учета
3) объекты учета объединяются в информационную модель, причем есть возможность сформировать подмодели включающие только те объекты которые должны быть обработаны в рамках узкой типовой задачи
4) на информационную модель можно наложить физическую модель (в т.ч. и управление пользователями) - что где находится в какой базе на каком серваке (связи описаны см пункт 3)

На пальцах - можно обратиться к этой настройке и получить документировано доступные данные, хранимки, связи, роли - т.е. система генерит разработчику документацию

Однако ...

1) когда стало более 10 баз (1 основная, остальные разно-предметные) летать даже с этой ...ней стало тяжело (совмещение информационной и логической модели).
2) при удаленном взаимодействий баз (не репликация !!!!) - опять приходится работать ручками ...

Ша переписываем с несколько другим но похожим подходом ...








___________________________________________________________________________________
... Как что достать - вторая эскадрилья. А как самолеты сбивать - первая эскадрилья ...
...
Рейтинг: 0 / 0
Сегментация БД на уровне реализации
    #34370445
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Недавно обсуждалось .Мое мнение по поводу префиксов и схем собственно там. По поводу "Соображения такие - стоит каким-то образом отделять БД предметной области от БД приложения. " - баянистое сто раз перетертое.но повторюсь:словарь системы необходим, хотя бы с точки зрения вертикального контроля доступа (на уровне атрибутов),При наличии словаря системы очень удобно делать настраиваемый механизм генерации проводок и т.д. Но факт управления 100 таблицами меня не пугает:запросы пока строят ручками,а не супер-умным автогенератором,поэтому для этого словарь применять пмсм не очень удачно (все равно хинты и прочее руками дописывать) - может быть это и не правильно,собственно в любом промышленном отчетнике на основе словаря (юниверса) отчеты строятся.Плюсов полно.По поводу интеграции case-у меня pd генерит практически все данные для словаря системы (оо-модель бизнес-сущностей в нем,словарь системы - в бд, данные загоняются туда скриптом).минусы-его еще надо пасти (я пасу pd) либо руками,либо утилитой своей или чужой.
p.s.Блин,какое умное название темы.Прямо чувствуешь свою ущербность.
...
Рейтинг: 0 / 0
Сегментация БД на уровне реализации
    #34370565
Майевтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По поводу "Соображения такие - стоит каким-то образом отделять БД предметной области от БД приложения. " - баянистое сто раз перетертое.Может быть в форумах и перетёртое, но нигде в литературе по проектированию я чётких и обоснованных рекомендаций не видел.

но повторюсь: словарь системы необходим, хотя бы с точки зрения вертикального контроля доступа (на уровне атрибутов)Что такое "вертикальный контроль доступа"? Гугль такого не знает. Словарь системы не решает проблему эффективной навигации по объектам БД средствами IDE.

При наличии словаря системы очень удобно делать настраиваемый механизм генерации проводок и т.д.Да, подобные механизмы весьма полезны и эффективны, но это сегментация через метаданные, которые оторваны от самих объектов БД.

Но факт управления 100 таблицами меня не пугает: запросы пока строят ручками, а не супер-умным автогенератором, поэтому для этого словарь применять пмсм не очень удачно (все равно хинты и прочее руками дописывать) - может быть это и не правильно, собственно в любом промышленном отчетнике на основе словаря (юниверса) отчеты строятся.
Я рассматриваю интересы не только программиста SQL-запросов, но и администратора БД и архитектора/проектировщика БД, отвечающего за "робастность" схемы. Хорошо, допустим мы разделили список таблиц по различным предметным областям с помощью префиксов, получили в каждой, скажем, по 30 таблиц. Типичный браузер объектов покажет их списком - т.е. придётся глазами искать нужную таблицу по имени. Но о их взаимосвязях можно узнать только отдельно просмотрев ключи или построив диаграмму каким-либо образом. Идея с иерархическим навигатором состоит в том, чтобы по возможности показывать дерево, начиная с самых независимых таблиц (на основе внешних ключей). Как минимум, чтобы справочники, которые используются только для одной таблицы, не показывались на первом уровне, а являлись подузлами для неё. Это ускорит доступ к таблицам с данными + повысит уровень понимания схемы тем, кто этот браузер будет использовать. Плюс будет автоматически решаться задача аудита несвязанных таблиц.

Плюсов полно. По поводу интеграции case-у меня pd генерит практически все данные для словаря системы (оо-модель бизнес-сущностей в нем, словарь системы - в бд, данные загоняются туда скриптом). минусы - его еще надо пасти (я пасу pd) либо руками, либо утилитой своей или чужой.SQL-программист и зачастую админ работают с базой не через CASE, а через IDE. Я говорил про другую интеграцию - чтобы IDE и CASE сливались в единый инструмент, который позволит вести разработку в единой среде.

Блин,какое умное название темы. Прямо чувствуешь свою ущербность."Вертикальный контроль доступа" не хуже.
...
Рейтинг: 0 / 0
Сегментация БД на уровне реализации
    #34371056
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1."Да, подобные механизмы весьма полезны и эффективны, но это сегментация через метаданные, которые оторваны от самих объектов БД." - они не могут быть оторваны.в справочнике сумм для проводок очень четко указана таблица бд и колонка,откуда сумма берется.
2.вертикальный контроль доступа,как было указано в скобках, контроль доступа на уровне видимости атрибутов.например в ведомости зарплаты петрову нельзя смотреть бонусы иванова.причем делаться он должен не на примитивном уровне создания вьюх по каждого петрова,а именно по словарю системы (у меня он автоматически добавляет "предикат безопасности" ,который кушает оракловый fgac).
3."Может быть в форумах и перетёртое, но нигде в литературе по проектированию я чётких и обоснованных рекомендаций не видел." у Фаулера (столь нелюбимого мной) в Архитектуре корпоративных приложений по-моему есть шаблон проектирования СЛоварь системы (если не в Фаулере,то в другой книге по шаблонам (у Лармана вроде)) - в общем точно есть.
4.по поводу "или построив диаграмму каким-либо образом" - она уже должна быть изначально - ее пмсм архитектор БД должен видеть.админу она вряд ли нужна-ему нужен план запросов,который и так связи выведет.
5."Идея с иерархическим навигатором состоит в том, чтобы по возможности показывать дерево, начиная с самых независимых таблиц (на основе внешних ключей). Как минимум, чтобы справочники, которые используются только для одной таблицы, не показывались на первом уровне, а являлись подузлами для неё. Это ускорит доступ к таблицам с данными + повысит уровень понимания схемы тем, кто этот браузер будет использовать. Плюс будет автоматически решаться задача аудита несвязанных таблиц." - в АБС ИБСО в модуле Администратор и Оператор именно так и сделано.
6."чтобы IDE и CASE сливались в единый инструмент, который позволит вести разработку в единой среде." - конечно стратегическая цель программинга на сегодня такая,но встает другой вопрос:это будет до-черта стоить (к радости продажников),необходимо будет повышать уровень программеров, необходимо контролировать доступ к этой модели (чтобы ее мог менять архитектор,а не каждый) и их цену соответственно,поэтому минусы тоже есть.собственно все проблемы новых афин,ибсов и прочих систем,построенных на основе словаря бд.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Сегментация БД на уровне реализации
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]