2011-03-04 1 views
3

CouchDB utilise a cool pattern qui peut être utilisé dans une multitude d'autres scénarios. Je parle de l'indice B-tree persistant de la carte/réduire les résultats. L'idée est de précalculer les données agrégées et de les stocker à différents niveaux de l'index B-tree. L'index peut alors être utilisé pour interroger efficacement l'agrégat sans avoir à réagréger toutes les données tout le temps. Ensuite, si une valeur de niveau feuille change, seul le chemin ascendant à travers l'arbre doit être recalculé. Par exemple, si les données sont exprimées en prix dans le temps, l'index peut stocker le SUM et le COUNT d'éléments aux niveaux du jour, du mois et de l'année. Ensuite, si quelqu'un veut interroger le prix moyen depuis le début de l'année, tout ce que vous avez à faire est de résumer tous les SUM et les COUNT pour tous les mois complets depuis le début de l'année, plus tous les jours disponibles pour le dernier mois. par le total COUNT. Si un prix antérieur doit changer, le changement doit se propager à travers l'indice, mais seules les valeurs du jour et du mois et de l'année doivent être mises à jour, et même alors les valeurs des autres jours et des autres mois de l'année peuvent être réutilisées. calcul.Quel est le nom générique de cette technique utilisée par CouchDB pour indexer des données agrégées?

Quel est le nom générique de cette approche? Est-ce que quelque chose de similaire existe dans l'un des RDBMS populaires? Une expérience avec l'utilisation de cela dans la pratique?

Répondre

5

Materialized view

« Une vue matérialisée est un objet de base de données qui contient les résultats d'une requête. Ils sont des copies locales des données situées à distance, ou sont utilisés pour créer des tableaux de synthèse fondés sur des agrégations des données d'une table. Matérialisé Les vues, qui stockent des données basées sur des tables distantes, sont également appelées snapshots. "

Ceci est tiré d'un article de Wikipédia qui traite principalement du stockage des résultats dans le contexte d'un SGBDR.

Personnellement, je préfère le terme "vue indexée". J'ai effectivement trouvé cet article wikipedia en cherchant "indexed view" on Google.

Questions connexes