Введение - Программа расчета агрегатов по накапливающимся данным для построения отчетов

Бесчисленное количество веб-приложений полагается на базы данных. Нередко архитектура этих баз данных недальновидна с самого начала, а постоянно меняющиеся требования (что не редкость в веб-разработке, особенно на волне стартап-бума) вынуждают разработчиков вносить еще больше недальновидных изменений. По мере развития проекта сложность схемы реляционной базы данных стремительно возрастает. И хотя сама по себе высокая сложность схемы не представляет большой угрозы, некоторые задачи становятся нетривиальными. Одна из таких задач -- подсчет агрегатов.

Агрегирующие запросы на вроде SELECT SUM имеют алгоритмическую сложность O(N) при работе с одной таблицей, то есть в самом простом случае. [5] [6]

В сложной нормализованной базе данных подсчет агрегата по нескольким таблицам становится алгоритмически нетривиальным. Задача лишь усложняется несовершенством популярных DBMS вроде MySQL. Как и многие проблемы масштабирования, эта проблема неизбежна, и проявляется неожиданно. При этом, универсального решения нет. К несчастью, все существующие решения плохо подходят средним проектам, когда вычислительные мощности еще достаточно скромные и вполне справляются с нагрузкой, но уже имеют большой объем накопленных данных, чтобы проблемы масштабирования начали проявляться.

Документо-ориентированные DBMS набирают популярность в вебе, и предлагают другие подходы к агрегации, но и они имеют преимущества в распределенных вычислениях.

Серьезные специализированные решения для анализа данных мало популярны среди веб-разработчиков и часто игнорируются. Вполне возможно, что незаслуженно, но этот вопрос выходит за рамки данного исследования.

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

Похожие статьи




Введение - Программа расчета агрегатов по накапливающимся данным для построения отчетов

Предыдущая | Следующая