Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 вопрос по проектированию БД  [new]
Michail A.
Member

Откуда:
Сообщений: 96
Добрый день!

Поделитесь, пож-та, практикой.

Планируется некое подобие хранилища данных, в которое будут складываться данные из автоматизированных систем, далее они будут в зависимости от задач преобразовываться.

Собственно, вопрос, как хранить такие данные:

- делать одну огромную БД и в ней много схем? Видятся возможные проблемы с backup/restore
- делать много отдельных БД, например Источник1.Исходные_данные, Источник2.Преобразованные данные? Видятся возможные проблемы с межбазовым взаимодействием.

Возможно есть ещё какие то нюансы при выборе одного или другого решения.

В общем, кто что посоветует?
6 июн 19, 08:44    [21903120]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по проектированию БД  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30751
Michail A.
Собственно, вопрос, как хранить такие данные:

- делать одну огромную БД и в ней много схем? Видятся возможные проблемы с backup/restore
- делать много отдельных БД, например Источник1.Исходные_данные, Источник2.Преобразованные данные? Видятся возможные проблемы с межбазовым взаимодействием.
С одной БД работать проще.
Если размеры не особо большие, ну, не больше 10 Тб, то лучше одну.

Решение ещё зависит от того, насколько данные из этих разных систем "близки".
Если это совершенно разные системы (допустим одна система - это 1С база бухгалтеров, другая - база исходников для киномонтажа, третья - оперативная база турникетов на проходной), то разделение на много баз позволяет упростить управление этим бизнесом для компании.
Например, управлять разработкой разных подсистем у разных оутсорсеров, управлять финансированием, разделять разработку и модернизацию по времени, ну и так далее.
6 июн 19, 08:57    [21903126]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по проектированию БД  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7392
Michail A.,

для трехуровневой архитектуры надо принять решение о размещении второго уровня, слоя бизнес-логики.
Если большую часть бизнес-логики Вы планируете разрабатывать на языках, отличных от T-SQL, то можно без затруднений использовать многобазовый вариант, если бизнес-логику планируете писать на T-SQL, то более практичным будет вариант размещения данных в одной базе.
6 июн 19, 13:25    [21903444]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по проектированию БД  [new]
PizzaPizza
Member

Откуда:
Сообщений: 309
Michail A.,

Обратите внимание, что foreign key возможны только внутри одной базы.

Я бы смотрел насколько данные различаются по признакам уровня базы данных, типа бэкапа, логирования итп.
7 июн 19, 00:45    [21904124]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по проектированию БД  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33248
Блог
- stage-уровень, куда заливаются сырые данные
- расчетный слой, где расположены etl-процедуры, заливающие данные в сущности и суперсущности на основе данных предыдущего слоя(и только, отсюда больше никуда лезть нельзя), и расчетные процедуры
- база витрин, в отличии от первых двух может располагаться на другом сервере, туда лезут пользователи со своими adhoc-запросами, туда лезут кубы, туда лезут иные системы (при необходимости таких баз может быть несколько в разных местах)

Последнего слоя может и не быть, если юзеры не имеют к ним прямого sql доступа (например, данные поступают только в кубы).

Везде применяется единый принцип "тянем", а не "толкаем". То есть последующий слой сам берет данные из предыдущего. Соответственно за процесс отвечают те, кто отвечает за данный слой.

Никаких проблем с резервированием и восстановлением нет - достаточно соблюдать порядок.

Схемами в stage-области разделяют данные разных баз-источников.
Схемами в других слоях разделяют данные разных бизнес-сущностей или специальных отчетов, например rwa или raroc, если брать банковскую область, им ifx, если это данные Интерфакса и т.д.

Вообще, если возникают такие вопросы, то вам лучше сразу нанять архитектора.
Потом переделывать будет дорого и долго.
7 июн 19, 01:23    [21904128]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по проектированию БД  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33248
Блог
PizzaPizza
Michail A.,

Обратите внимание, что foreign key возможны только внутри одной базы.

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


В ХД fk как правило не применяются, т.к. сначала может приехать факт, а справочная запись через полчасика.
7 июн 19, 01:26    [21904129]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по проектированию БД  [new]
982183
Member

Откуда: VL
Сообщений: 3350
alexeyvg
Michail A.
Собственно, вопрос, как хранить такие данные:

- делать одну огромную БД и в ней много схем? Видятся возможные проблемы с backup/restore
- делать много отдельных БД, например Источник1.Исходные_данные, Источник2.Преобразованные данные? Видятся возможные проблемы с межбазовым взаимодействием.
С одной БД работать проще.
Если размеры не особо большие, ну, не больше 10 Тб, то лучше одну.

Решение ещё зависит от того, насколько данные из этих разных систем "близки".
Если это совершенно разные системы (допустим одна система - это 1С база бухгалтеров, другая - база исходников для киномонтажа, третья - оперативная база турникетов на проходной), то разделение на много баз позволяет упростить управление этим бизнесом для компании.
Например, управлять разработкой разных подсистем у разных оутсорсеров, управлять финансированием, разделять разработку и модернизацию по времени, ну и так далее.


Всякое бывает.

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

Например - в бухгалтерии сотового оператора совершенно не нужна информация по каждому абоненту.
Достаточно сводных оборотов.

В БД технологической линии не нужны показания с датчиков на каждую миллисекунду.
Достаточно раз в 10 секунд.

Но вся детальная информация хранится в соответствующих базах.
7 июн 19, 02:10    [21904131]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по проектированию БД  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7392
Отделение хранения кода от данных оптимально в в весьма специфических случаях, принимать это за правило не следует.
7 июн 19, 13:50    [21904490]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить