Предлагаемое решение, Таблица агрегатов, Таблица лога изменений - Программа расчета агрегатов по накапливающимся данным для построения отчетов
База данные кеширование денормализация
Предлагаемое решение -- скомбинировать некоторые идеи кеширования и денормализации в специальной библиотеке StatMetric.
Сложные агрегаты, которые понадобится быстро вычислять необходимо будет заранее описать в рамках библиотеки вместе с условиями, которые они должны поддерживать. В дальнейшем можно будет добавлять новые агрегаты на уже развернутое приложения, с некотоыми ограничениями, описанными в следующем разделе.
Библиотека предоставит набор методов для приложения, чтобы оно могло уведомлять об изменениях данных, связанных с агрегатами. Например, после каждого успешного платежа приложение будет уведомлять библиотеку о создании нового Order и всех связанных с ним сущностей, и необходимости зачесть суммы заказа в агрегат "продажи". Библиотека запишет это событие в своем хранилище.
Приложение сможет делать запросы к библиотеке по любому из описанных агрегатов.
Библиотека хранит данные в двух дополнительных таблицах: таблице вычисленных агрегатов и логе изменений.
Таблица агрегатов
Как было показано выше, вычисление агрегатов может иметь недопустимо высокую алгоритмическую сложность. Поэтому, вместо того чтобы пересчитывать и кешировать значение агрегата при чтении, будет храниться и обновляться вычисленное значение агрегата. Храня немного дополнительных данных, можно вычислить новое значение агрегата за не зависящее от количества данных, им покрываемых, время, то есть не пересчитывая его заново.
В этой таблице id и значение агрегата хранится для каждого возможного среза. Для базы данных из рисунка 1 можно определить простой агрегат "продажи" со срезами по событию, партнеру и организации. "Срезать по Event" -- значит сохранить продажи для каждого события отдельной записью. В данном случае Event -- "срезающая таблица". С каждым новым оплаченным заказом, библиотека будет обновлять все затронутые срезы прибавляя сумму заказа к сохраненному значению.
В таблице 1 изображен пример содержимого таблицы агрегатов для описанного агрегата продаж.
Таблица 1. Пример содержимого таблицы агрегатов
Stat |
Slice |
Slice_data |
Value |
Sales |
100 | ||
Sales |
Event |
1 |
20 |
Sales |
Event |
2 |
30 |
Sales |
Event |
3 |
50 |
Sales |
Partner |
1 |
20 |
Sales |
Partner |
2 |
10 |
Sales |
Org |
1 |
20 |
Sales |
Org |
2 |
80 |
В первой записи хранится полное, не срезанное значение агрегата -- сумма всех продаж. Следующие три записи хранят продажи с событий 1, 2 и 3. В столбце slice хранится тип среза, а в slice_data -- id первичного ключа элемента из срезающей таблицы, по которому идет срез. Предполагается, что в базе данных используются числовые первичные ключи с авто-инкрементом (стандарт де-факто в веб-разработке).
Идею можно расширять. Например, если хранить количество элементво и сумму в записи, то можно хранить агрегат AVG (среднее) и обновлять значение без пересчета. При обновлении данных фреймворк обновит количество и сумму, после чего, разделив сумму на количество получит новое среднее.
Кроме того, можно определять срезы по нескольким таблицам, например "Event, Partner", чтобы выполнять запросы типа "доход с события X партнеру Y". Однако, потребление дискового пространства такими срезами хуже масштабируются. Эта проблема рассмотрена более подробно в разделе "Ожидаемые результаты".
Статистика и отчеты -- главные потребители агрегатов -- часто требуют данных за определенный период времени, и хранение срезов по периодам не представляет сложности -- достаточно хранить идентификатор периода в записи, и по окончании периода создавать новую.
Разумеется, вычисленные агрегаты в таблице могут легко реагировать на изменения данных, если приложение будет уведомлять об этих событиях.
Таблица лога изменений
Хранение вычисленных статистических данных имеет недостаток -- трудно доказать их корректность. Если в сохраненном значении ошибка, то вычислить ее причину невозможно. К тому же, пересчитать значение без помощи приложения не получится. Таблица логов изменений направлена против этих проблем.
При каждом изменении данных, связанных с агрегатами в таблицу логов записывается вся релевантная информация. Это позволит отслеживать возможные проблемы, перерасчитывать агрегаты с нуля и даже строить новые срезы. В отличие от таблицы агрегатов, хранящей данные только по заданным срезам, таблица лога хранит связи со всеми связанными с событием объектами, позволяя вычислить дополнительные срезы при необходимости.
Похожие статьи
-
Ожидается, что предлагаемая библиотека даст большой прирост в производительности операций чтения, заполнив собственную нишу среди решений проблем...
-
Предлагаемая библиотека хранит все данные в отдельных таблицах, таким образом он не обязан использовать ту же СУБД, что и основное приложение. В качестве...
-
Методология Все тесты будут необходимо провести на разных размерах базы данных, чтобы увидеть, как классические JOINы скалируются в сравнении с...
-
Классы StatMetric содержат всю логику библиотеки и предоставляют интерфейс для обновления и получения значений агрегатов. Рисунок 4. Диаграмма классов...
-
Реализация, Composer - Программа расчета агрегатов по накапливающимся данным для построения отчетов
Для эффективного тестирования и демонстрации библиотеки было решено разработать PHP-приложение, состоящее из: 1. Менеджера зависимостей composer; 2....
-
Целостность, Миграция - Программа расчета агрегатов по накапливающимся данным для построения отчетов
Еще одна возможная проблема -- целостность данных. Если приложение не уведомит Библиотеку об изменении данных, то ошибка останется в агрегате навсегда....
-
Рисунок 1. Пример сложной схемы БД Пример проблемной ситуации, которую этот проект должен разрешить представлен на рис. 1. Организатор проводит события...
-
MapReduce, Кеш - Программа расчета агрегатов по накапливающимся данным для построения отчетов
MapReduce -- модель распределенных вычислений, используемая для параллельных вычислений над большими объемами данных в кластерах. MapReduce позволяет...
-
Для замеров производительности использовалось три запроса, представляющих три наиболее типичные проблемные рассчеты. Ниже приведены эти запросы на языке...
-
Введение - Программа расчета агрегатов по накапливающимся данным для построения отчетов
Бесчисленное количество веб-приложений полагается на базы данных. Нередко архитектура этих баз данных недальновидна с самого начала, а постоянно...
-
Расчет таблицы - Программа построения равновесных стратегий для игры
В ходе разработки программы, для эффективной работы основного алгоритма программы будет понадобилось рассчитать некоторые предрасчетные данные. Для этого...
-
Удивительно, но StatMetric дает выигрыш в производительности даже на малых масштабах, в любом случае возвращая результат быстрее, нежели обычный запрос....
-
Модель данных - Программа расчета агрегатов по накапливающимся данным для построения отчетов
В файле dist/schema/schema. yaml (см приложение А) была описана схема будущей базы данных, по которой при помощи Doctrine были сгенерированы пустые...
-
Таблица 2 A B C D E F G H I 1 № п/п Судья Кол-во рассмотренных исков В % от всех исков Выработка 2 Май Июнь Июль Август Всего 3 1 Белов В. В. 22 24 28 27...
-
Заключение, Источники - Программа расчета агрегатов по накапливающимся данным для построения отчетов
Расчет агреатов в сложных базах данных -- ресурсоемкая задача. Известные способы сокращения времени ответа запросов не всегда приемлемы, что поднимает...
-
Для определения выплат по займу используется финансовая функция ПЛТ (Ставка, КПер, Пс, Бс, Тип). Определим значения параметров функции ПЛТ: Ставка =9%...
-
В настоящее время биометрия входит в состав наиболее распространенных технологий и средств защиты информации. Отпечатки пальцев являются самой широко...
-
Назначение и функции программной системы Разработанная база данных "Библиотека" предназначена для использования в учреждениях библиотек. Основной...
-
Выбор программ и алгоритмы реализации базы данных - База данных "Кинотеатр"
Microsoft Office Access - мощное приложение Windows. При этом производительность СУБД органично сочетаются со всеми удобствами и преимуществами Windows....
-
Широкое распространение в операционной системе Windows имеет множество стандартных программ обеспечивающих работу устройств компьютера и служащих для...
-
Стратегии - Программа построения равновесных стратегий для игры
Так как игра случайная, платежная матрица будет состоять из математических ожиданий возможных сочетаний стратегий. Стратегия в данной игре определяет...
-
Обоснование выбора средств разработки проекта Для реализации корпоративной информационной системы "Бюджетное планирование и отчетность" в исследуемой...
-
SAP HANA - это гибкий многоцелевой и независимый от источника данных программный комплекс на базе технологии "in-memory", который объединяет компоненты...
-
Расчет равновесия по Нэшу - Программа построения равновесных стратегий для игры
В рамках данной ВКР была создана программа для расчета равновесных стратегий с помощью метода фиктивного разыгрывания. Благодаря использованию...
-
Каждая СУБД имеет особенности в представлении структуры таблиц, связей, определении типов данных и т. д. которую необходимо учитывать при проектировании....
-
Основная часть, Физические модели таблиц базы данных - Проблема организации и хранения данных
Физические модели таблиц базы данных Физическая модели таблицы базы данных предполагает описание свойств каждого поля таблицы. Для описания свойств полей...
-
Разработка приложения для базы данных - Разработка Windows-приложений в среде Borland Delphi
Цель Работы: Получить навыки создания приложения для базы данных. Пояснения к работе Для работы с базами в Delphi есть несколько наборов компонент,...
-
Основные конструкции для разработки базы данных - База данных "Кинотеатр"
База данных - это организованная структура, предназначенная для хранения информации. Систему управления базой данных (СУБД) можно определить, как...
-
Архитектура построения баз данных - Разработка базы данных
СУБД имеют свою архитектуру. В процессе разработки и совершенствования СУБД предлагались различные архитектуры, но самой удачной оказалась трехуровневая...
-
Табличный процессор Excel фирмы Microsoft предназначен для ввода, хранения, обработки и выдачи больших объемов, данных в виде, удобном для анализа и...
-
Комплекс инструментов Oracle Exalytics Комплексное решение Oracle Exalytics создано для обеспечения высокой производительности аналитических систем и...
-
Необходимо исследовать зависимость влияния различных факторов на параметр, характеризующий производство. В качестве такого параметра было выбрано...
-
Решения компании IBM - Технологии больших данных: анализ и выбор решения для реализации проекта
Технологии анализа больших данных являются прекрасным дополнением к средам хранения больших данных. Множество применений включает в себя, например,...
-
Заключение - Программа построения равновесных стратегий для игры
В настоящие время популярность игры Omaha растет. Постепенно появляется все больше регулярных турниров по этой игре на сайте Pokerstars. net. При этом...
-
Интерпретация полученных результатов - Программа построения равновесных стратегий для игры
При изучении равновесных стратегий в модели jam-fold для двоих игроков можно заметить тот факт, что стратегии зависят только от соотношения...
-
Начинать следует с определения структуры таблицы, соответствующей предметной области, т. е. с определения полей, которые надо включить в таблицу, типов...
-
Алгоритм для определения силы комбинации - Программа построения равновесных стратегий для игры
В играх типа Omaha для определения силы комбинации необходимо учитывать 9 карт: 4 стартовых карты игрока и 5 общих карт. По стандартным правилам покера...
-
На данный момент у TUIO есть 3 версии протокола: 1.0, 1.1 и 2.0. Версия 2.0, вышедшая в 2014, имеет множество изменений и нововведений по сравнению с...
-
Технологии Hadoop - Технологии больших данных: анализ и выбор решения для реализации проекта
Продукт Apache Hadoop является свободной Java-платформой на обычном оборудовании. Проект был рожден посредством обработки материалов Google File System и...
-
Нормализация Базы Данных - Разработка информационной системы "Магазин компьютерных товаров"
Результатом работы с АИС магазина компьютерных товаров является чек, который оформляет продавец. В этом чеке должна содержаться информация о количестве...
Предлагаемое решение, Таблица агрегатов, Таблица лога изменений - Программа расчета агрегатов по накапливающимся данным для построения отчетов