Le Post Infeeny

Les articles des consultants et experts Infeeny

[TAB] Optimizing Your Semantic Model For Performance and Scale

Speaker : Akshai Mirchandani & Allan Folting – Niveau : 400

Il s’agit de comprendre et d’optimiser nos modèles tabulaires.

On commence avec le schéma classique de BISM incluant les moteurs OLAP et « xVelocity ».

Principe du moteur « xVelocity »

–          Performance, performance et toujours performance

–          Performance pour l’interrogation mais également pour le chargement des données

–          Accommoder les changements sans avoir à recharger toutes les données à chaque fois

Architecture du moteur

–          Stockage basé sur les colonnes

–          Structure séparée des colonnes

–          Compression : optimiser pour les requêtes d’analyse

Les données sont stockées dans des segments et des dictionnaires pour chaque colonne. Les colonnes calculées et les hiérarchies et les relations sont également stockées en colonne.

Première démonstration du stockage en colonne. On voit que pour chaque colonne on a un fichier.

Description des phases de chargement (« Process »)

–          Lecture et encodage des données dans un segment N

–          Compression du segment N, lecture et chargement du segment N+1

–          A la fin du chargement des données, construction du reste (colonnes calculées, etc.)

–          Un segment peut être lu et encodé puis découpé en 2 pour la compression

On poursuit avec le principe d’encodage des données qui transforme les données en identifiant afin d’être compressées par la suite. Il existe 2 mécanismes d’encodage (« Hash et Value Encoding ») qui dépend du nombre de valeurs différentes.

Deuxième démonstration montrant pour chaque colonne d’une table le type d’encodage en fonction de la distribution des données. Pour effectuer son choix, le moteur prend un jeu de valeurs de la colonne et y applique un algorithme.

Il existe des DMVs permettant d’analyser nos modèles tabulaires (le nombre de tables, le nombre lignes pour chaque table, l’utilisation de la mémoire pour chaque table, le nombre de segments, etc.). On peut même voir le type d’encodage (« Hash » ou « Value »)

On peut également contrôler la taille des segments (les gros segments ont une meilleure compression par exemple).

On peut analyser toutes les séquences de chargement dans le « SQL Server Profiler »

Il existe plusieurs types de chargement (comme avec un cube « OLAP »)

–          « Process Data »

–          « Process Recalc »

–          « Process Full » (« Data » + « Recalc »)

–          « Process Default »

–          « Process Clear »

–          « Process Add »

–          « Process Defrag »

On termine par un certain nombre d’astuces pour le chargement des tables.

En conclusion, cette session arrive assez bien à vulgariser l’architecture « xVelocity »

Julien

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :