05.08.2004, 16:03 | #1 |
Moderator
|
[OLAP] - на основании чего строить кубы
Добрый день.
Вопрос к тем, кто использует Olap и Аксапту. Есть два подхода к формированию кубов: 1) строить их на основании базы данных Аксапты 2) построить отдельную БД - хранилище данных, перегонять туда данные с помощью dts и уже на основании этого хранилища формировать кубы. Насчет первого способа: а) периодически не проходит процессинг кубов - выясняется что кто-то удалил запись в таблице измерений, хотя ссылка в таблице фактов осталась б) структура таблиц аксапты все-таки не оптимальна для построения olap кубов. Хороший пример - хранение дат не в виде отдельного измерения, а прямо в таблице фактов. В связи с этим рассматриваю второй вариант. Что сразу бросается в глаза - кубы будут строиться не из Аксапты, а скажем, с помощью Analysis Services Processing Task в DTS. Не то, чтобы смертельно - кубы в Аксапте я подцеплю, но, например, label в enum-ах придется ручками прописывать в dts пакетах. Вопроса 2: 1) Какие есть еще подводные камни во втором варианте ? 2) Каким способом пользуетесь Вы ? |
|
05.08.2004, 17:13 | #2 |
Модератор
|
Re: [OLAP] - на основании чего строить кубы
Цитата:
Изначально опубликовано Андре
а) периодически не проходит процессинг кубов - выясняется что кто-то удалил запись в таблице измерений, хотя ссылка в таблице фактов осталась то, что элементы справочника удаляются без надлежащей проверки, где они уже успели поиспользоваться - это раз то, что не все DeleteActions построены - это два Цитата:
Изначально опубликовано Андре
б) структура таблиц аксапты все-таки не оптимальна для построения olap кубов. Хороший пример - хранение дат не в виде отдельного измерения, а прямо в таблице фактов. |
|
05.08.2004, 17:27 | #3 |
Moderator
|
Цитата:
так это проблема не OLAP-а, а скорее организационно - программисткая
А как говорит mazzy, "избегайте программирования". Цитата:
вот это не понял - а как лучше?
Избегая излишнего цитирования просто приведу одну из ссылок, в которых описываются преимущества альтернативного варианта: http://www.sqljunkies.com/article/D1...D60951395.scuk p.s. К сожалению эта ссылка не работает (надеюсь временно), а других у меня не осталось. |
|
05.08.2004, 18:36 | #4 |
Участник
|
Делюсь опытом
На нашем проекте все OLAP-кубы построены на Analysis Services.
Опыт показал, что не смотря на неудобство с фильтрацией компаний и самописных текстовых полях вместо enum, в AS и SQL Server гораздо больше возможностей. Начиная от самого Т-SQL и заканчивая репликацией. |
|
05.08.2004, 18:46 | #5 |
Moderator
|
Цитата:
На нашем проекте все OLAP-кубы построены на Analysis Services.......
Цитата:
Есть два подхода к формированию кубов:
1) строить их на основании базы данных Аксапты 2) построить отдельную БД - хранилище данных, перегонять туда данные с помощью dts и уже на основании этого хранилища формировать кубы. ..... Каким способом пользуетесь Вы ? |
|
06.08.2004, 02:16 | #6 |
Модератор
|
Цитата:
Изначально опубликовано Андре
Согласен. Но с учетом того, что это происходит в стандартном функционале, я сталкиваюсь с необходимостью поиска таких мест и их правкой. А как говорит mazzy, "избегайте программирования". И все равно это не проблема OLAP-а. Ну научимся мы при переносе DTS-ом менять название удаленного элемента справочника на "элемент удален". Станет лучше, если теперь куб обработается, но будет содержать обороты по счету "счет удален" или задолженность перед поставщиком "поставщик удален"? Хочется программировать - пишите job-ы, которые такие ситуации быстро проверяют, не давайте всем удалять что ни попадя Цитата:
Избегая излишнего цитирования просто приведу одну из ссылок, в которых описываются преимущества альтернативного варианта:http://www.sqljunkies.com/article/D1...D60951395.scuk
p.s. К сожалению эта ссылка не работает (надеюсь временно), а других у меня не осталось. |
|
06.08.2004, 02:27 | #7 |
Lean Six Sigma
|
Рискну вклиниться
1. Кубы обычно строятся на view, а не на таблицах. 2. Подготавливать промежуточные данные (с помощью снэпшотов Оракла или с помощью временных таблиц Майкрософтовского сиквела) имеет смысл для того, чтобы не блокировать пользователей при частом обновлении кубов. Вопрос в том, как часто нужно обновление. Если один раз в неделю и в выходные производится меньше операций в базе, то нет проблем. А если каждые десять минут по таблице InventTrans, то тут уже и инкрементный апдейт кубов не спасёт - надо подкачивать данные в промежуточную таблицу. Не согласны? |
|
06.08.2004, 02:30 | #8 |
Lean Six Sigma
|
Цитата:
А то, что среднестатистический клиент потеряет возможность самостоятельно куб настроить без программирования - это факт
|
|
06.08.2004, 09:36 | #9 |
Участник
|
тоже рискну свои пять копеек вставить
я так понял, что преимущество стороннего хранилища данных в том, что туда данные можно переносить из любой базы, хоть с бумаги. Например много филиалов на разных базах данных, но интересует некая консолидированная отчетность. Очень удобное решение получится. Опять же, хранилище - это статистика. Там ВСЕ данные, когда либо появившиеся за время работы. Еще один аргумент. Для быстроты работы ОЛАП-куба его лучше строить на денормализованных данных (содержащих избыточные сведения), тогда как в оперативной базе данные наоборот как можно больше нормализуются. А если нужно каждые 15 минут куб обновлять - наверное куб это не очень верное решение для такой задачи. или используйте ROLAP. |
|
06.08.2004, 10:28 | #10 |
Модератор
|
Цитата:
Кубы обычно строятся на view, а не на таблицах
Цитата:
Вопрос в том, как часто нужно обновление. Если один раз в неделю и в выходные производится меньше операций в базе, то нет проблем. А если каждые десять минут по таблице InventTrans, то тут уже и инкрементный апдейт кубов не спасёт - надо подкачивать данные в промежуточную таблицу.
Не согласны? OLAP - он все-таки не для оперативного анализа, хоть Online в аббревиатуре присутствует |
|
06.08.2004, 10:45 | #11 |
Moderator
|
Спасибо за ответы. Вывод я сделал - использовать нужно и первый и второй подход. Соотношение этих способов будет варьироваться в каждом частном случае.
Прокомментирую некоторые замечания, хотя в общем я с ними согласен: Цитата:
Ага - в аксапте не программируем, зато программируем в DTS. Причем в DTS программировать больше и лично мне - неудобнее. Хотя - дело привычки.
б) для программирования dts не нужен специалист знающий Аксапту . Как следствие, это позволяет снизить затраты на проект. Как следствие, это снизит стоимость сопровождения этого решения. в) а если нет лицензий на разработку. г) все-таки это дело привычки Цитата:
И все равно это не проблема OLAP-а.
Кроме того, согласен с Сергеем: Цитата:
я так понял, что преимущество стороннего хранилища данных в том, что туда данные можно переносить из любой базы
|
|
06.08.2004, 10:58 | #12 |
злыдень
|
Re: [OLAP] - на основании чего строить кубы
Hi
Цитата:
Изначально опубликовано Андре
Добрый день. Насчет первого способа: а) периодически не проходит процессинг кубов - выясняется что кто-то удалил запись в таблице измерений, хотя ссылка в таблице фактов осталась б) структура таблиц аксапты все-таки не оптимальна для построения olap кубов. Хороший пример - хранение дат не в виде отдельного измерения, а прямо в таблице фактов. Цитата:
Вопроса 2: 1) Какие есть еще подводные камни во втором варианте ? 2) Каким способом пользуетесь Вы ? 2) В конечном итоге начали плавный переход на способ 1 (HOLAP) постоянные гемморои с поиском багов в ДТС всех просто достали + Сваять вьюху и прикрутить к ней HOLAP - день, грамотно напрограммить ДТС с поледующей отладкой куба- дня 3 А вообще лучше попробавать самому оба и сравнить Успехов |
|
09.08.2004, 11:12 | #13 |
Moderator
|
Сегодня случайно нашел обсуждение похожей темы, но уже без привязки к Аксапте:
http://www.sql.ru/forum/actualthread.aspx?tid=112945 |
|