Проблема, Существующие решения, Денормализация - Программа расчета агрегатов по накапливающимся данным для построения отчетов
Рисунок 1. Пример сложной схемы БД
Пример проблемной ситуации, которую этот проект должен разрешить представлен на рис. 1.
Организатор проводит события со сложной ценовой политикой (несколько разных типов билетов -- EventRegistration). События группируются в категории. Партнеры проводят кампании по продвижению событий в обмен на комиссии. Пользователи размещают заказы, в которые может входить несколько билетов разных типов. Пользователи могут приходить сами, а могут перейти с одной из кампаний по продвижению.
Запрос, подсчитывающий доход партнера от определенной организации вынужден будет объединить JOINом почти все таблицы между Organization и Partner. Его сложность составит примерно, где N -- количества рядов в таблицах. А ведь актуальное значение этой величины партнер желает видеть в карточке организации.
Существующие решения
Денормализация
Рисунок 2. Пример использования денормализации
Денормализация проводится с целью оптимизировать производительность операций чтения из базы данных путем хранения избыточных, дублирующих данных или группировки данных [7]. Например, если в таблице Order хранить ключи (id) Organization и Event, то уже не придется загружать из базы данных Ticket и Event, чтобы найти заказы для определенной организации. Таким образом, добавляя избыточные связи разработчик может значительно сократить цепочку JOINов, однако у этого подхода есть несколько ограничений и слабых сторон.
Ограничения:
- - Отношения "один ко многим" можно "пропустить" таким образом только в одном направлении (от многих к одному), потому что хранение список всех ссылающихся на данный элементов не даст никакого выигрыша, лишь потратив дисковое пространство - Отношения "многие ко многим" вообще нельзя исключить из цепочки JOINов таким образом, потому что они по сути являются двумя "один ко многим" связями - Появление новой прямой связи накладывает дополнительное ограничение. Так, например, в изначальной схеме возможность включить в заказ билеты на несколько событий не исключена. Если же в заказе хранить указатель на событие, то возникнет явное ограничение -- в заказе могут быть билеты лишь на одно событие.
Слабые стороны:
- - Денормализация дает прирост в производительности на чтение в обмен на серьезное усложнение схемы. Усложнение схемы усложнит разработку, особенно при недостаточной документации. Не всегда очевидно, какое значение первично, а какое -- дубликат. [1] - Разработчик ответственен за целостность данных. Дубликаты необходимо должны обновляться вместе с оригиналами.
На рисунке 2 изображена сильно денормализованная схема с рисунка 1. Эта схема иллюстрирует все вышеописанное.
Прошлый пример с получением прибыли партнера с организации теперь имеет сложность O(N). Однако все упомянутые недостатки также хорошо видны. К тому же, если потребуется добавить какие-либо условия на таблицы, исключенные из JOINа, то весь выигрыш будет утерян. Например, если партнера будет интересовать прибыль только с событий определенного месяца. Самый худший, но вполне реальный случай -- если партнера заинтересуют события из определенной категории. Даже оптимистичное O(N) -- это full table scan, то есть все равно медленно.
Таким образом, повышая производительность, денормализация угрожает архитектуре, не решая полностью проблему масштабирования.
Дополнительная проблема -- денормализация действующей базы данных. Для этого потребуется не только миграция схемы, но еще и дополнительный код, который заполнит новые столбцы данными. Такой код нелегко писать и тестировать, что создает высокий риск длительного даунтайма. К тому же сам процесс изменения структуры таблицы может занимать огромное количество времени на многих СУБД. Добавление или удаление стоблца для таблицы с 6 миллионами строк может занять несколько часов, в течение которых таблица будет находиться в режиме "только чтение", потому что СУБД попросту создает новую таблицу и копирует в нее все данные из старой.
Если схема не была разумно денормализована до внедрения проекта (а так часто случается в стартапах), каждая операция по денормализации будет крайне нетривиальной, а доведение схемы до оптимального состояния может потребовать неопределенное количество шагов.
Похожие статьи
-
Ожидается, что предлагаемая библиотека даст большой прирост в производительности операций чтения, заполнив собственную нишу среди решений проблем...
-
Методология Все тесты будут необходимо провести на разных размерах базы данных, чтобы увидеть, как классические JOINы скалируются в сравнении с...
-
Модель данных - Программа расчета агрегатов по накапливающимся данным для построения отчетов
В файле dist/schema/schema. yaml (см приложение А) была описана схема будущей базы данных, по которой при помощи Doctrine были сгенерированы пустые...
-
Введение - Программа расчета агрегатов по накапливающимся данным для построения отчетов
Бесчисленное количество веб-приложений полагается на базы данных. Нередко архитектура этих баз данных недальновидна с самого начала, а постоянно...
-
Предлагаемая библиотека хранит все данные в отдельных таблицах, таким образом он не обязан использовать ту же СУБД, что и основное приложение. В качестве...
-
База данные кеширование денормализация Предлагаемое решение -- скомбинировать некоторые идеи кеширования и денормализации в специальной библиотеке...
-
Удивительно, но StatMetric дает выигрыш в производительности даже на малых масштабах, в любом случае возвращая результат быстрее, нежели обычный запрос....
-
Классы StatMetric содержат всю логику библиотеки и предоставляют интерфейс для обновления и получения значений агрегатов. Рисунок 4. Диаграмма классов...
-
Реализация, Composer - Программа расчета агрегатов по накапливающимся данным для построения отчетов
Для эффективного тестирования и демонстрации библиотеки было решено разработать PHP-приложение, состоящее из: 1. Менеджера зависимостей composer; 2....
-
Целостность, Миграция - Программа расчета агрегатов по накапливающимся данным для построения отчетов
Еще одна возможная проблема -- целостность данных. Если приложение не уведомит Библиотеку об изменении данных, то ошибка останется в агрегате навсегда....
-
MapReduce, Кеш - Программа расчета агрегатов по накапливающимся данным для построения отчетов
MapReduce -- модель распределенных вычислений, используемая для параллельных вычислений над большими объемами данных в кластерах. MapReduce позволяет...
-
Для замеров производительности использовалось три запроса, представляющих три наиболее типичные проблемные рассчеты. Ниже приведены эти запросы на языке...
-
Стратегии - Программа построения равновесных стратегий для игры
Так как игра случайная, платежная матрица будет состоять из математических ожиданий возможных сочетаний стратегий. Стратегия в данной игре определяет...
-
Заключение, Источники - Программа расчета агрегатов по накапливающимся данным для построения отчетов
Расчет агреатов в сложных базах данных -- ресурсоемкая задача. Известные способы сокращения времени ответа запросов не всегда приемлемы, что поднимает...
-
Расчет таблицы - Программа построения равновесных стратегий для игры
В ходе разработки программы, для эффективной работы основного алгоритма программы будет понадобилось рассчитать некоторые предрасчетные данные. Для этого...
-
Обзорная часть - Программа построения равновесных стратегий для игры
Правила игры Omaha Перед тем как описывать правила игры, внесем несколько определений терминов игры. Колода карт -- это полный набор прямоугольных или...
-
В основе реализации организации памяти современных компьютеров лежат два принципа: принцип локальности обращений и соотношение...
-
В данном разделе была разработана функциональная схема работы программного комплекса, которая в общем виде описывает состав комплекса, характер и виды...
-
Необходимо исследовать зависимость влияния различных факторов на параметр, характеризующий производство. В качестве такого параметра было выбрано...
-
Основные термины теории баз данных - БД (База данных) - совокупность специальным образом организованных данных, хранимых в памяти вычислительной системы...
-
Формы - Проблема организации и хранения данных
Работа с данными в режиме таблицы имеет существенный недостаток: если полей слишком много, они не умещаются на экране и приходится прибегать к различным...
-
Назначение и функции программной системы Разработанная база данных "Библиотека" предназначена для использования в учреждениях библиотек. Основной...
-
Описание исходных данных На текущий момент (в силу большой загрузки IT-отдела) не реализован доступ к серверу с ХД, маркетинговые данные выгружаются в...
-
Основные конструкции для разработки базы данных - База данных "Кинотеатр"
База данных - это организованная структура, предназначенная для хранения информации. Систему управления базой данных (СУБД) можно определить, как...
-
Корпоративная интеграционная подсистема на базе IBM WebSphere Business Integration Message Broker [28] отвечает за выстраивание корпоративной...
-
SAP HANA - это гибкий многоцелевой и независимый от источника данных программный комплекс на базе технологии "in-memory", который объединяет компоненты...
-
Обзор протокола Multi-Touch технологий передачи данных TUIO [7] - основной кроссплатформенный протокол с открытым исходным кодом Multi-Touch передачи...
-
При заполнения каждой ячейки таблицы распределения исходов сравнения двух рук нам необходимо перебрать все возможные варианты общих карт. Таким образом...
-
Алгоритм для определения силы комбинации - Программа построения равновесных стратегий для игры
В играх типа Omaha для определения силы комбинации необходимо учитывать 9 карт: 4 стартовых карты игрока и 5 общих карт. По стандартным правилам покера...
-
Полное наименование разрабатываемой системы - корпоративная информационная система "Бюджетное планирование и отчетность" группы компаний, занимающейся...
-
Введение - Программа построения равновесных стратегий для игры
Игра стратегия математический С появлением компьютеров широкое развитие получила тема искусственного интеллекта. Одним из направлений искусственного...
-
Описание бизнес-процессов бюджетирования в группе компаний нефтегазового сектора Одна из исследовательских задач данной работы состоит в том, чтобы...
-
Данная компания является ведущем производителем оборудования и выпуска квалифицированных специалистов в мире. Это одна из самых оцененных компаний в...
-
Технологии Hadoop - Технологии больших данных: анализ и выбор решения для реализации проекта
Продукт Apache Hadoop является свободной Java-платформой на обычном оборудовании. Проект был рожден посредством обработки материалов Google File System и...
-
Программная модель данных, получившая название "MapReduce", была создана несколько лет назад в компании Google, и там же была осуществлена первая...
-
Для оценки возможности выполнения проекта имеющимся в распоряжении разработчика штатным составом исполнителей, нужно рассчитать их среднее количество,...
-
Отчеты, Макросы - Проблема организации и хранения данных
Отчеты используются для отображения данных таблицы или запроса в удобном для пользователя формате (с заголовками и номерами страниц). Больше всего...
-
Подход NoSQL - Технологии больших данных: анализ и выбор решения для реализации проекта
Понятие NoSQL означает "Не только SQL" или "Не SQL". Термин получил известность, начиная с 2009 год, когда развитие интернет-технологий и социальных...
-
Современные технологии обработки Больших данных Большой проект бюджетирование автоматизация С приходом новых технологий, инструментов и средств...
-
Запросы на выборку - Банки и базы данных. Системы управления базами данных
Запросы используются для получения пользователем информации, содержащейся в БД, в удобном для него виде. Результат запроса отображается для пользователя...
Проблема, Существующие решения, Денормализация - Программа расчета агрегатов по накапливающимся данным для построения отчетов