CouchDB использует классный шаблон , который можно использовать во множестве других сценариев.Я говорю о сохраняющемся индексе B-дерева карты / уменьшить результаты.Идея состоит в том, чтобы предварительно рассчитать агрегированные данные и сохранить их на разных уровнях индекса B-дерева.Затем индекс можно использовать для эффективного запроса агрегата без необходимости повторной агрегации всех данных.Затем, если изменяется какое-либо значение на уровне листа, необходимо пересчитать только восходящий путь через дерево.
Например, если данные представляют собой цену со временем, в индексе могут храниться СУММА и СЧЕТ элементов.на уровне дня, месяца и года.Затем, если кто-то захочет запросить среднюю цену с начала года, все, что вам нужно было сделать, это сложить все суммы SUM и COUNT за все полные месяцы с начала года плюс все дни, доступные за последний месяц, а затем разделить общую сумму SUM.по общему количествуЕсли цена за прошлый период должна измениться, это изменение должно распространиться по индексу, но должны обновляться только значения соответствующего дня, месяца и года, и даже тогда значения для других дней и других месяцев в году можно использовать повторно длярасчет.
Каково общее название этого подхода?Есть ли что-нибудь подобное в любой популярной РСУБД?Есть ли опыт использования этого на практике?