Новые разделы!
ИИ, квантовые вычисления и много других интересных тем
2004 г.
Йохан Потгитер (Johann Potgieter)
Перевод: Intersoft Lab
Факт взрывного роста данных в многомерных базах, как это ни странно, часто недооценивают. А ведь для покупателей и пользователей OLAP-продукта принципиально важно понимать, что такое разрастание данных, что его вызывает и как его можно избежать, ибо последствия этого явления могут обойтись очень дорого и в большинстве случаев приводят к краху проекта.
За редким исключением, OLAP-поставщики не могут
Например, одна из проблем состоит в том, что это рост приводит к образованию громадной базы данных. Ее размер при применении одного продукта может быть буквально в сотни или даже тысячи раз больше, чем у той же базы при использовании другого продукта.
Но не желая, видимо, признавать эту проблему, поставщик упорно нахваливает свою огромную базу, с которой, по его мнению, только и можно управляться с большими наборами корпоративных данных, и это якобы не под силу поставщикам меньших баз.
Разумеется, если мы захотим провести корректный анализ, то придется сравнить размеры баз при одинаковых объемах данных, но так как эти размеры отличаются самым коренным образом, то и потенциальные клиенты вряд ли поверят, что столь огромная разница возможна при одинаковых наборах данных.
В результате компании часто прибегают к средствам, которые они по ошибке принимают за лучшие, так называемые корпоративные, решения. Но ошибка эта дорогого стоит (см. следующий раздел). Но вот что парадоксально: самое слабое место поставщика (рост данных) в итоге становится основной причиной его коммерческого успеха.
Назовем некоторые из таких последствий.
Прежде чем переходить к рассмотрению проблемы взрывного роста данных,
необходимо разобраться с двумя довольно важными понятиями,
Как правило, входные данные или базовые данные (т. е. те, которые находятся в базе еще до расчета иерархий или уровней) в OLAP-приложении разрежены (т. е. расположены не плотно). Кроме того, любые данные по мере роста количества измерений становятся более разреженными (т. е. менее плотными).
Например, если в одномерной матрице можно удалить все пустые значения и таким образом добиться 100%-ой плотности, то в двумерной матрице, если в одном из двух измерений есть элемент с непустым значением, удалить пустые значения уже нельзя (см. рис. 1 и рис. 2).


Хотя это не всегда соответствует действительности, но если число
измерений в модели растет, то, как правило, растет и разреженность
данных. Например, если информация о продажах ограничивается только двумя
позициями месяцем и типом продукта, то вполне вероятно,
что каждый продукт найдет себе сбыт в течение каждого месяца, и, таким
образом, плотность матрицы
С целью разработки практического метода оценки разреженности данных было проведено исследование на ряде моделей у семи компаний. Каждая компания работала с несколькими моделями (такими как, например, отчет о прибылях и убытках, баланс, движение денежной наличности, анализ продаж, анализ человеческих ресурсов/работ, бюджетирование и прогнозирование, отраслевые модели и т. п.), варьируя количество измерений.
Также исследовались модели, имеющие отраслевую специфику,
Плотность данных во всех случаях была много меньше процента, что говорит о высокой степени разреженности. Причем рост количества измерений её только увеличивал (в рассмотренных моделях количество измерений колебалось от 5 до 16).
Особенно высокая разреженность характерна для всех отраслевых моделей (плотность не достигала и миллиардной доли процента).
При поверхностном рассмотрении любая многомерная модель должна обеспечивать пространство для любой комбинации данных. Поскольку в разреженной модели большинство элементов данных нулевые, то основная проблема состоит в том, как хранить все значения, отличные от нуля. Например, если плотность данных в модели составляет один процент и обработки разреженности нет, то конечная модель будет в сто раз больше, чем модель, прошедшая правильную обработку разреженности. Поэтому такую процедуру можно считать эффективным способом хранения сильно разреженных данных.
Важно не путать плохую обработку разреженности (неэффективное хранение нулевых величин) со взрывным ростом данных. Хотя обработка разреженности является проблемой для многомерных баз данных, разница между продуктами при проведении этой процедуры не превышает одного порядка.
Более чем десятикратная разница в размерах, конечно, важна, но еще больше различий возникает в результате взрывного роста данных. Как уже говорилось выше, речь идет о различиях в сотни и даже тысячи раз между хорошими и плохими базами. Кроме того, обработка разреженности представляла собой проблему несколько лет назад, сейчас большинство поставщиков уже добились разумного решения этой задачи.
Важно и то, что это еще один классический способ «жульничества» со стороны производителей ПО. Получив вопрос о взрывном росте данных, некоторые поставщики переводят разговор на тему обработки разреженности. И тогда клиент, слабо представляющий себе суть обоих этих понятий, может ошибочно принять обработку разреженности за возможность адекватно справляться с взрывным ростом данных и устранять его.
Взрывной рост данных явление, возникающее в многомерных моделях, где производные или расчетные значения существенно превышают исходные. Вероятность разрастания повышают три основных фактора:
Чтобы лучше понять смысл этих факторов, рассмотрим уже упомянутый нами пример. На рисунке 3 одномерная модель со 100%-ой плотностью и двумя уровнями содержит базовые данные, в четыре раза превышающие расчетные данные (4:1). Взрывного роста данных нет. На рисунке 4 двумерная модель с 25% плотностью и тремя уровнями для каждого измерения содержит четыре базовых показателя, которые «разрастаются» до 15 вычисленных.


Таким образом, уровень взрывного роста данных в измерениях увеличится за счет увеличения разрозненности и/или добавления измерений и/или добавления дополнительных вычисленных уровней.
На практике обычно используют от 5 до 12 измерений, применяя, как правило, разрозненные модели. Чаще всего плотность не превышает одного процента, и её можно такой и принять, за исключением тех случаев, когда доказано, что она имеет иное значение. Обычно измерению «продукт», соответствует от 4 до 9 уровней, а измерению «счет» от 8 до 16 уровней. Для других измерений типичных моделей количество уровней чаще всего колеблется в диапазоне от 2 до 6.
Чтобы составить реальную картину, мы провели исследование взрывного роста данных в различных моделях для семи компаний. Подробные итоги исследования приведены в приложении. Среди важных результатов можно отметить следующие.
Результаты поразительны. Выходит, многие поставщики попросту надеются, что пользователи в это не поверят. А ведь перечисленные факты всего лишь поверхностно обозначают ограничения, которые налагает взрывной рост данных.
Очевидно, что среди моделей, где выполняется предварительная подготовка расчетных данных, есть такие, которые нельзя рассматривать. Например, загрузка или расчет в течение 242 дней (или даже 6,5 дней) совершенно недопустимы. Как видно из исследования, такие модели (это может быть анализ продаж, клиентов или продуктов) все без исключения отраслевые, представляющие собой реальные корпоративные модели с большими наборами данных.
Более того, для множества OLAP-приложений модель, которая подразумевает пересчет в течение нескольких часов или даже десяти минут, совершенно не подходит.
Теперь, когда мы наконец поняли причины взрывного роста данных, попытки поставщиков скрыть свою неспособность к устранению этого явления становятся более или менее очевидными. Приведем некоторые наиболее известные и часто очень тщательно замаскированные методы обмана.
1. Попытки скрыть недостатки роста данных, придавая ему окраску преимуществ:
2. Публикация сравнений или демонстрация возможностей с использованием некоторых приемов, имеющих целью скрыть очевидный факт взрывного роста данных:
| Описание модели и отрасли |
|||||||
| Фактические показатели для моделей, использующих ПО без взрывного роста данных |
Анализ претензий (Страхование) | Анализ вызовов, доходов в пересчете на клиента (Телеком-муникации) | Анализ продаж (Мед. дование ) |
Бюджет расходов на зарплату (Коммуналь- ные услуги) |
Анализ прибылей и расходов (Производство) | Анализ прибылей и расходов (Энергетика) | Бухгал- терия (Логис- тика) |
| Число измерений | 12 | 16 | 12 | 11 | 9 | 6 | 5 |
| Среднее количество вычисляемых уровней в измерении | 3,6 | 3,2 | 3,3 | 2,7 | 5,8 | 4,2 | 5,6 |
| Количество элементов в самом большом измерении | 805 879 | 1178 | 38595 | 1990 | 6792 | 71486 | 38418 |
| Память, используемая для базовых данных, Mб | 1993 | 4572 | 1087 | 96 | 504 | 156 | 246 |
| Объем исходных (базовых) данных | 1,6x108 | 3,7x108 | 8,7x107 | 7,7x107 | 4x107 | 1,2x107 | 2x107 |
| Время загрузки базовых данных (в минутах) | 318,9 | 731,6 | 174 | 15 | 81 | 25 | 39 |
| Время загрузки дополни тельных данных, специфичных для данной модели (в минутах) |
11,8 | 27,1 | 1 | 0 | 2 | 1 | 3 |
| Возможное количество данных, млрд. | 2,4x1034 | 1,1x1024 | 8,3x1024 | 1x1019 | 8,4x1016 | 3,2x1013 | 340 |
| Разрежен ность, % |
6,4x10-26 | 3,2x10-22 | 1x10-21 | 6,7x10-11 | 4,8x10-9 | 3,9x10-6 | 5,8x10-3 |
Вычисленные параметры, имитирующие ПО, подвергшееся взрывному росту данных |
|||||||
| Фактические показатели для моделей, использующих ПО без взрывного роста данных |
Анализ претензий (Страхование) | Анализ вызовов, доходов в пересчете
на клиента (Телеком-муникации) |
Анализ продаж (Мед. дование) |
Бюджет расходов на зарплату (Коммуналь- ные услуги) |
Анализ прибылей и расходов (Производство) | Анализ прибылей и расходов (Энергетика) | Бухгал- терия (Логис- тика) |
| Составной фактор роста | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| Разросшиеся данные, млрд. | 653 | 2,4x104 | 356 | 16 | 21 | 8x108 | 6,3x108 |
| Во сколько раз разросшиеся данные превышают исходные | 4 096 | 65 536 | 4 096 | 2 048 | 512 | 64 | 32 |
| Память, необходимая для разросшихся данных, Tб | 4,08 | 149,82 | 2,23 | 98,12 | 129,024 | 4,998 | 3,930 |
| Время загрузки и вычисления, дней: часов:минут |
891:7:41 | 32718:6:24 | 485:23:2 | 21:10:16 | 28:4:13 | 1:2:11 | 0:20:35 |
| Время дополните льной загрузки и вычислений, характерные для данной модели, (дней): часов:минут |
33:0:17 | 1211:18:54 | 2:7:55 | 10:42 | 14:5 | 0:32 | 11:42 |
| Время загрузки и вычисления (16 процессоров и 5 разделов), (дней): часов:минут |
178:6:20 | 6543:15:40 | 97:4:36 | 4:6:51 | 5:15:14 | 0:5:14 | 0:4:7 |
| Время дополнительной загрузки и вычислений, характерные
для данной модели (16 процессоров и 5 разделов), (дней): часов:минут |
6:14:27 | 242:0:0 | 0:11:11 | 0:2:8 | 0:2:48 | 0:0:6 | 0:0:20 |
В первой таблице содержатся фактические данные и показатели на примере семи компаний, использовавших ПО без частичного или полного предварительного вычисления, где взрывного роста данных не наблюдалось. Во второй таблице содержатся показатели, рассчитанные для иллюстрации взрывного роста данных при использовании такого ПО, где используется подход на основе предварительных расчетов. Как следует из этой таблицы, первые три модели не годны, так как размеры баз данных превышают 2,2 Тб, а время загрузки 11 часов.