Пользовательский источник данных ROLAP в SSAS - PullRequest
1 голос
/ 25 сентября 2008

Я пытаюсь создать источник данных OLAP из набора двоичных файлов, и наша текущая модель просто не работает. Мы используем SSAS в качестве модели анализа / отчетности для наших результатов, но не можем получить желаемую производительность из SQL.

Наши основные ограничения:

  1. База данных очень большая. У нас есть огромные таблицы измерений с миллионами строк и несколько небольших таблиц фактов (<1 000 000 строк). </p>

  2. У нас есть динамический куб. B / C таблицы фактов создаются динамически, и часто (возможно, несколько раз в день) при настройке куба не может быть огромных накладных расходов. Текущее время развертывания на кубе может превышать 24 часа, и нам нужно увеличение производительности на несколько порядков, которое аппаратное обеспечение нам просто не даст.

По сути, нам нужна быстрая установка и развертывание, которое само по себе не поддается SSAS с использованием SQL Server 2005, но мы хотим использовать SSRS для отчетов и нам нужна модель OLAP для анализа в Excel, поэтому мы бы хотели все еще хотел бы использовать SSAS для построения куба, если это возможно.

Распространенным решением в SSAS для быстрого развертывания является ROLAP, но мы получаем ошибки выполнения при больших запросах ROLAP, и нам также не нравятся все накладные расходы, связанные с преобразованием двоичных данных в SQL и загрузкой их в куб ,

Кто-нибудь работал над пользовательским источником данных OLAP, который может использовать SSAS? Мы собираемся создать наш собственный механизм ROLAP, который будет напрямую запрашивать двоичные исходные файлы.

Ответы [ 4 ]

2 голосов
/ 25 сентября 2008

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

  • Инкрементная загрузка таблицы фактов с измененными данными из вашего источника.
  • Создание секционированного куба с процессом, который генерирует новые разделы каждый день или в другой подходящий период. У куба самый последний раздел настроен в режиме ROLAP, а более старые разделы построены как MOLAP.
  • Настройте процесс, который обновляет разделы и изменяет более старые разделы с ROLAP на MOLAP по мере создания нового переднего раздела.

Запросы к кубу попадут на относительно небольшой раздел ROLAP для самых последних данных и разделы MOLAP для исторических данных. Разделы MOLAP могут иметь агрегации. Процесс продолжает помечать передний край раздела ROLAP и преобразовывать его предшественника. AS будет хранить старый раздел и использовать его до тех пор, пока новый раздел не будет создан и не подключен к сети.

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

1 голос
/ 25 сентября 2008

Не могли бы вы использовать что-то вроде R с библиотекой homebrew (она поддерживает C Extensions ) для взаимодействия с вашими наборами данных. R даст вам достаточную гибкость для создания сложных отчетов или библиотек предварительной обработки данных. Он также имеет интерфейс для Excel .

Этот набор инструментов несколько отличается от традиционной модели DB / OLAP, но вы можете довольно легко написать быстрый загрузчик набора данных в C и пропустить промежуточный этап загрузки в базу данных.

1 голос
/ 25 сентября 2008

Спасибо за ответ, Найджел.

Думаю, мне нужно объяснить это немного лучше. Мои исходные данные представлены в собственном формате, а не в базе данных, поэтому получение самой таблицы фактов занимает довольно много времени. Затем нам нужно развернуть куб как можно быстрее (желательно в течение нескольких минут) и получить быстрые ответы на запросы, которые в настоящее время мы не видим даже в небольшом наборе данных, использующем SQL.

Поскольку структура куба является динамической, нам часто приходится перестраивать каждый аспект куба, мы не вводим новые данные после факта, поэтому разделение их частей как MOLAP и других частей ROLAP на самом деле Помогите. Мы ищем производительность на "Процесс полный".

Мы начинаем понимать, что мы просто не можем использовать SQL для запросов, и хотим знать, создал ли кто-нибудь собственный источник данных ROLAP, который могут читать службы анализа (или любой инструмент OLAP).

Мы можем быстро создать наборы результатов; нам просто нужно выяснить, как получить запрос от SSAS и передать ему эти результаты. Мы действительно просто хотим использовать SSAS в качестве посредника между нашей системой и Excel, SSRS и т. Д., А не использовать его для обработки или агрегирования данных.

0 голосов
/ 11 февраля 2009

Мне еще не повезло. Мы идем по пути создания собственного провайдера данных и создания надстроек для Excel для эмуляции поведения olap, ИЛИ с помощью табличных функций CLR для эмуляции наших источников данных и построения куба из этого. Одна попытка, которую я предпринял в CLR, имела ужасную производительность и провалилась, хотя из-за количества запросов, выполняемых SSAS при построении куба. Я жду, чтобы получить более новую более быструю машину в среде SQL 08, чтобы увидеть, возможно ли это. Удачи, Скотт.

...