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

Откуда:
Сообщений: 1723
Дано:
Таблицы Excel с бюджетами нескольких типов по нескольким объектам.
Число строк бюджета зависит от конкретного объекта и типа бюджета, и колеблется от нескольких десятков до пары сотен.
Число уровней строк бюджета - 4 уровня, уровни неравномерные (то есть для какой-то статьи бюджета есть подстатьи третьего уровня вложенности, а для какой-то статьи подстатей нет вообще).
Число СТОЛБЦОВ - более 250 (1 столбец - один месяц, бюджет расписан на 20 с лишним лет, плюс куча столбцов для уже посчитанных значений по кварталам и годам).
Число объектов - не менее пяти.

Поставили задачу - затащить это всё на SQL Server в обычную БД или в OLAP-куб, по моему выбору.

А теперь вопрос - как это всё хранить? И главное - обрабатывать?
Вариант с простым переносом в SQL Server - не пройдёт (см. один столбец - один месяц). "И что, каждый месяц добавлять новый столбец"?
Вариант с созданием таблицы а-ля "ID статьи, ID проекта, ID типа бюджета, дата, значение" - даёт несколько десятков тысяч строк только для одного бюджета, а их несколько видов, и умножить на число объектов, (а потом сюда обязательно ещё добавится несколько видов смет, бррр...).
При необходимости обратной выгрузки в Excel получаем геморрой с обратным развёртыванием данных этой таблицы в две с лишним сотни столбцов по числу месяцев.

С OLAP-кубом - ситуация выглядит проще только на первый взгляд, так как куб получается нестандартным (с необходимостью использовать измерение родитель-дитя, + к этому это измерение неоднородное), плюс летит в бездну текущая раскладка столбцов (в Бездне Хаоса я её видеть хотел, да, но это другой вопрос).
И это всё дерьмо ещё как-то надо сравнивать друг с другом.

Вот и вопрос - что и как можно сделать для оптимизации загрузки, хранения, обработки и выгрузки?
22 июн 17, 16:56    [20584207]     Ответить | Цитировать Сообщить модератору
 Re: Что создавать - куб или обычную БД и какой структуры?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7780
Почему добавлять столбец? Столбец будет добавлен в отчете, а в базе данные будут храниться по-другому. Куб надо наполнять из источников. Определились с источниками?
22 июн 17, 17:05    [20584245]     Ответить | Цитировать Сообщить модератору
 Re: Что создавать - куб или обычную БД и какой структуры?  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2396
DaniilSeryi,
делится на две части
1) хранить инфу - в любом случае в базе, только как вам уже написали - с правильной структурой
2) работать с инфой - куб или приложение, уже зависит только от задач
22 июн 17, 17:12    [20584272]     Ответить | Цитировать Сообщить модератору
 Re: Что создавать - куб или обычную БД и какой структуры?  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2396
DaniilSeryi,

в общем, идея "создам копию один к одному, того что есть, чтобы меньше проблем было (только подскажите как серебрянная пуля называется)"
приведет к увеличению числа проблем.
надо создавать нормальную структуру и механизмы загрузки.

это облегчит жизнь когда дойдете до "надо добавить" и "надо сравнить"
22 июн 17, 17:19    [20584290]     Ответить | Цитировать Сообщить модератору
 Re: Что создавать - куб или обычную БД и какой структуры?  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 1723
Хранить всё как есть, я и не собирался, вопрос - как это хранить.
240 столбцов * 70-140 строк - не вариант,
5 столбцов * 10000 строк - под вопросом,
какие ещё варианты?
22 июн 17, 17:31    [20584325]     Ответить | Цитировать Сообщить модератору
 Re: Что создавать - куб или обычную БД и какой структуры?  [new]
s_ustinov
Member

Откуда: Munchen, DE
Сообщений: 2201
DaniilSeryi
Хранить всё как есть, я и не собирался, вопрос - как это хранить.
240 столбцов * 70-140 строк - не вариант,
5 столбцов * 10000 строк - под вопросом,
какие ещё варианты?

5 столбцов и в качестве ключа бигинт - можно хранить много миллиардов строк.
Работать будет хорошо.

По большому счету таблица с менее чем миллоном строк - это для современных компьютеров и СУБД вообще ни о чем. Вы просто не сможете найти компьютер, который не сможет с легкостью обрабатывать такие объемы данных.
22 июн 17, 17:52    [20584397]     Ответить | Цитировать Сообщить модератору
 Re: Что создавать - куб или обычную БД и какой структуры?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
автор
5 столбцов и в качестве ключа бигинт - можно хранить много миллиардов строк.
Работать будет хорошо.

но когда вам понадобиться развернуть все 200 колонок в линию, станет не так всё хорошо. Но в любом случае вопрос объёмов. И да в одной из центральных таблиц звезды ~200 спарсовых колонок.
22 июн 17, 17:56    [20584409]     Ответить | Цитировать Сообщить модератору
 Re: Что создавать - куб или обычную БД и какой структуры?  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2396
TaPaK
когда вам понадобиться развернуть все 200 колонок в линию.

для этого и придумали кубы )

но даже (10000 строк) развернуть в 200 колонок средствами SQL - вообше ни о чем
22 июн 17, 18:15    [20584460]     Ответить | Цитировать Сообщить модератору
 Re: Что создавать - куб или обычную БД и какой структуры?  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
StarikNavy
TaPaK
когда вам понадобиться развернуть все 200 колонок в линию.

для этого и придумали кубы )

но даже (10000 строк) развернуть в 200 колонок средствами SQL - вообше ни о чем
Нужно просто объяснить пользователям, что им не нужен отчет с 200 столбцами, они правда будут сопротивляться, потому что они так привыкли.
Ну и если уж очень нужно то даже сам Excel может развернуть данные в 200 колонок.
22 июн 17, 22:56    [20584947]     Ответить | Цитировать Сообщить модератору
 Re: Что создавать - куб или обычную БД и какой структуры?  [new]
bideveloper
Member

Откуда:
Сообщений: 503
DaniilSeryi
Вариант с созданием таблицы а-ля "ID статьи, ID проекта, ID типа бюджета, дата, значение" - даёт несколько десятков тысяч строк только для одного бюджета, а их несколько видов, и умножить на число объектов, (а потом сюда обязательно ещё добавится несколько видов смет, бррр...).

Это самый лучший вариант. Потом на такой структуре будет легко настроить OLAP (SSAS или PowerPivot или PowerBI). Обычный компьютер легко справится с несколькими десятками миллионов строк.
23 июн 17, 03:47    [20585088]     Ответить | Цитировать Сообщить модератору
 Re: Что создавать - куб или обычную БД и какой структуры?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
StarikNavy
TaPaK
когда вам понадобиться развернуть все 200 колонок в линию.

для этого и придумали кубы )

но даже (10000 строк) развернуть в 200 колонок средствами SQL - вообше ни о чем

вообще не о чём это разворот десятков миллионов, это да.

автор
Нужно просто объяснить пользователям, что им не нужен отчет с 200 столбцами, они правда будут сопротивляться, потому что они так привыкли.
я где то говорил про пользователей? есть ещё всякая математика которая становится на порядок быстрее когда не требуется вытягивать суммы с разных строк
23 июн 17, 08:53    [20585210]     Ответить | Цитировать Сообщить модератору
 Re: Что создавать - куб или обычную БД и какой структуры?  [new]
Charles Weyland
Member

Откуда: Feorina "Fury" 161
Сообщений: 4339
DaniilSeryi
Вариант с простым переносом в SQL Server - не пройдёт (см. один столбец - один месяц). "И что, каждый месяц добавлять новый столбец"?

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

всё там стандартное, просто нужно набраться квалификации и задаться вопросами "как".

К сообщению приложен файл. Размер - 59Kb
23 июн 17, 10:24    [20585421]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить