Mode hybride pour le traitement d'analyse rapide
Le processeur de calcul et de requête en mode hybride d'Oracle Essbase permet de réaliser des analyses en temps réel à l'aide de calculs procéduraux, ainsi que d'écrire et de lire des modélisations. Le mode hybride représente le moteur par défaut de l'analyse des dépendances dynamiques pour les requêtes en mode "block storage". Ce n'est pas le moteur par défaut pour les scripts de calcul (vous pouvez l'activer).
Si vous avez utilisé Essbase 11g sur site, vous connaissez probablement ces modes de conception de cube, établis à des fins spécifiques :
- Mode "block storage" : utilisation privilégiée avec des dimensions dispersées de grande taille. Dans ce mode, les cubes sont stockés et préagrégés afin d'atteindre de bonnes performances de requête. Inclut un vaste ensemble de fonctions de calcul pour l'analyse.
- Mode "aggregate storage" : utilisation privilégiée avec les cubes ayant un grand nombre de dimensions et de nombreuses agrégations de niveau supérieur. Les formules de membre peuvent être indiquées à l'aide de MDX.
- Mode hybride : correspond au mode "block storage" doté des avantages offerts par le mode "aggregate storage".
Le mode hybride représente le moteur de requête par défaut pour l'analyse des dépendances dynamiques sur des requêtes, sur des cubes en mode bloc dans Essbase 21c et Essbase 19c. Le mode hybride fournit une analyse robuste des dépendances et une agrégation rapide. Il gère parfaitement la complexité de l'interrogation de membres qui ont des dépendances sur les membres dynamiques.
Dans vos applications analytiques, Oracle recommande d'utiliser les dépendances dynamiques, y compris les agrégations dispersées. Vous n'êtes pas limité à l'implémentation sélective de Calcul dynamique dans des dimensions dispersées comme c'était le cas dans Essbase 11g On-Premise. En particulier, les agrégations dynamiques dispersées sont possibles et recommandées, en fonction des tests et des consignes de réglage des performances.
Bien que le mode hybride soit le processeur de requête par défaut pour les cubes en mode "block storage", il ne l'est pas pour l'exécution des scripts de calcul. Si les scripts de calcul contiennent de nombreuses dépendances dynamiques, Oracle recommande d'activer le mode hybride pour les scripts de calcul également. Pour ce faire, activez le paramètre de configuration HYBRIDBSOINCALCSCRIPT dans vos propriétés de configuration d'application (ou utilisez la commande de calcul SET HYBRIDBSOINCALCSCRIPT pour le contrôler par calculs).
La plupart des fonctions de calcul Essbase pourront fonctionner en mode hybride. Pour consulter la liste et la syntaxe de toutes les fonctions du calcul prises en charge en mode hybride et leurs quelques exceptions, reportez-vous à Fonctions prises en charge en mode hybride. Le calcul parallèle avec FIXPARALLEL est pris en charge en mode hybride, mais pas le calcul parallèle avec CALCPARALLEL.
Reportez-vous à ASODYNAMICAGGINBSO pour connaître la syntaxe permettant de configurer le mode hybride au-delà des paramètres par défaut, ou de la désactiver.
Rubriques de cette section :
Avantages du mode hybride
Les cubes Essbase en mode hybride vous permettent de tirer parti d'une agrégation rapide même dans des dimensions dispersées, d'une plus petite taille de cube, d'une empreinte mémoire optimisée, de calculs par lot flexibles et d'une solide analyse des dépendances de formule.
Le mode hybride combine la fonctionnalité de réécriture et le calcul procédural du mode "block storage" (BSO) avec les performances d'agrégation du mode "aggregate storage" (ASO). Le mode hybride offre l'avantage de performances rapides en éliminant le besoin de stocker les agrégations dispersées. Cela réduit la taille de la base de données et de l'empreinte mémoire, et accélère les temps de calcul par lot. Les considérations de déploiement sont simplifiées, car vous n'avez plus besoin d'envisager le mode "block storage" en cas d'utilisation importante de calculs de niveau 0, en comparaison avec le mode "aggregate storage" pour les nombreuses agrégations de niveau supérieur et en comparaison avec la conception de modèles partitionnés dans lesquels le cube est divisé en lignes dimensionnelles pour faciliter les performances de calcul.
Voici quelques scénarios dans lesquels le mode hybride peut améliorer les performances de calcul :
-
Une base de données en mode "block storage" dispose de membres dispersés qui ne sont pas de niveau 0 et qui sont calculés en fonction de la hiérarchie (plutôt que par des scripts de calcul).
-
Un membre de calcul dynamique parent dispersé possède plus de 100 enfants.
-
Vous utilisez une partition transparente entre une cible vide en mode "aggregate storage" et une source en mode "block storage". Si les formules sur la cible en mode "aggregate storage" sont simples et traduisibles en langage de formule "block storage", vous pouvez atteindre des résultats rapides sur le mode "block storage" à l'aide du mode hybride.
-
Vous utilisez une partition transparente entre deux bases de données en mode "block storage" et les performances de calcul sont importantes pour votre organisation.
Autre avantage du mode hybride, il n'existe aucune dépendance d'ordre d'outline. Vous pouvez facilement personnaliser l'ordre de résolution au lieu de réorganiser l'ordre des dimensions.
Le mode hybride vous permet également d'utiliser la gestion des scénarios, de tester et de modéliser des données hypothétiques à l'aide d'un format de workflow sans ajouter d'exigences de stockage.
Comparaison du mode hybride, du mode "block storage" et du mode "aggregate storage"
Sans le mode hybride, l'algorithme du mode "block storage" pour les membres Calcul dynamique a des limites lorsqu'il est utilisé avec des dimensions dispersées et volumineuses. Les modes hybride et "aggregate storage" sont plus optimisés pour une analyse de dépendance dynamique. Lisez les informations concernant les principales différences afin de choisir le meilleur type de processeur de requête pour une application Essbase.
Sans le mode hybride, les grandes dimensions dispersées dans les bases de données en mode "block storage" doivent être stockées. Si vous les rendez dynamiques, cela génèrera un trop grand nombre d'E/S de bloc au moment du calcul ou de la requête, ce qui affectera les performances. Les dimensions dispersées stockées très volumineuses peuvent provoquer des temps d'agrégation par lot lents, ainsi que des tailles de base de données volumineuses qui augmentent en fonction du nombre et de la taille des dimensions dispersées. Malgré ces inconvénients, le mode "block storage" est largement utilisé pour la puissance de ses fonctionnalités.
Le mode "aggregate storage" est conçu spécifiquement pour permettre l'utilisation des bases de données volumineuses avec des dimensions plus grandes ou plus nombreuses. Contrairement au mode "block storage", il ne nécessite pas que les grandes dimensions dispersées soient préagrégées afin d'obtenir de bonnes performances de requête. La clé réside dans le noyau de la base de données en mode "aggregate storage", ce qui facilite une agrégation dynamique rapide sur une grande dimensionnalité.
Malgré tous les avantages qu'offre le mode "aggregate storage", de nombreuses utilisations sont plus adaptées au mode "block storage", comme la capacité à charger des données à n'importe quel degré de finesse, à exécuter fréquemment des allocations de lot complexes ou encore à implémenter la conversion des devises pour les finances globales. Dans ce cas, et dans de nombreux autres cas, le mode hybride peut être une bonne solution. Le mode hybride est une combinaison des meilleures fonctionnalités des modes "block storage" et "aggregate storage". En mode hybride, Essbase peut effectuer les opérations suivantes.
-
Il permet une flexibilité totale de calcul procédural, même si les calculs dépendent d'agrégations dynamiques dispersées.
-
Il utilise le moteur hybride pour les requêtes accédant aux membres dispersés dynamiques. Pour le petit pourcentage de requêtes qui ne peuvent pas être traitées de cette façon, Essbase emploie le flux de calcul en mode "block storage" afin de satisfaire à la demande.
-
Il offre les avantages suivants, si vous marquez les membres dispersés comme dynamiques :
- Il supprime le besoin de préagrégation.
-
Il améliore les performances de restructuration.
-
Il améliore les performances de sauvegarde.
-
Il réduit les exigences en espace disque.
-
Comme le mode hybride comprend des calculs dynamiques, vous pouvez mettre en séquence les calculs en utilisant l'ordre de résolution.
Remarques :
Les calculs en mode hybride, qu'ils soient générés par des scripts de calcul ou des requêtes, sont effectués dans un espace mémoire temporaire, à l'aide du cache de formule et du cache du mode "aggregate storage".
Principales différences
Les différences principales suivantes peuvent vous aider à choisir le meilleur type de processeur de requête pour votre application.
| Exigence | Mode "aggegrate storage" (ASO) | Mode "block storage" (BSO) | Mode hybride |
|---|---|---|---|
|
Optimisé pour une agrégation rapide dans de nombreuses dimensions dispersées |
Oui |
No |
Oui |
|
Optimisé pour une utilisation d'espace de disque minimale et une durée de sauvegarde réduite |
Oui |
No |
Oui |
|
Optimisé pour les applications financières |
No |
Oui |
Oui |
|
Possibilité d'effectuer des allocations |
Oui |
Oui |
Oui |
|
Possibilité d'effectuer des calculs par lot |
No |
Oui |
Oui |
|
Formules de membre prises en charge |
Oui, exprimé en MDX |
Oui, exprimé en fonctions de calcul Essbase |
Oui, exprimé en fonctions de calcul Essbase |
|
Optimisé pour les références d'avance dans des formules de membre |
No |
No |
Oui |
|
Possibilité de personnaliser l'ordre de résolution des calculs/agrégations |
Oui |
No |
Oui |
|
Possibilité d'indiquer une exécution de requête ascendante pour une analyse des dépendances plus rapide d'ensembles de données d'entrée plus petits |
No |
No |
Oui |
|
Possibilité d'enregistrer la trace de l'exécution de requête et de la déboguer |
Oui |
No |
Oui |
|
Possibilité de limiter l'utilisation de la mémoire autorisée pour une requête |
Oui |
No |
Oui |
|
Prise en charge du calcul à deux passes |
No |
Oui |
No |
|
Possibilité de charger des données à n'importe quel niveau |
Non. Seules les cellules de niveau 0 sans dépendance à la formule peuvent être chargées. |
Oui |
Oui pour les niveaux stockés. Non pour les niveaux dynamiques. |
|
Possibilité de charger des données de façon incrémentielle à l'aide de tampons |
Oui |
No |
No |
|
L'évaluation de formules sur des dimensions dispersées peut donner des résultats différents des mêmes formules sur des dimensions denses. |
S/O |
Oui. En mode "block storage" sans mode hybride, les scripts de calcul Essbase peuvent être écrits de manière itérative dans l'objectif de résoudre les dépendances sur des blocs dispersés. Si vous remplacez le type de dimension dispersé par dense ou inversement, vous pouvez obtenir des résultats différents pour les mêmes formules. |
Non. Les dépendances à la formule sont calculées de la même manière, sans tenir compte de la dispersion ou de la densité. En mode hybride, Essbase utilise un algorithme pour résoudre les dépendances dynamiques. Dans certains cas, les données dérivées d'un script de calcul peuvent être différentes en mode hybride de ce qu'elles auraient été en mode "block storage" sans mode hybride. |
Introduction au mode hybride
Pour lancer l'exécution de vos applications Essbase en mode hybride, commencez dans un environnement de test, rendez les dimensions volumineuses et dispersées dynamiques et étudiez le journal de l'application.
Pour commencer à utiliser le mode hybride, suivez les consignes suivantes :
-
Configurez un environnement de développement et migrez les applications en mode "block storage" existantes vers cet environnement. Le mode hybride est activé par défaut pour les cubes en mode "block storage".
-
Si possible, modifiez les grandes dimensions dispersées pour les rendre dynamiques.
-
Exécutez des requêtes de test et examinez le journal d'application, avant et après l'activation du mode hybride. Cette activité peut montrer le degré d'utilisation du processeur de requête en mode "aggregate storage" et les avantages obtenus grâce au mode hybride. Pour chaque requête, le journal de l'application indique
Hybrid aggregation mode enabledouHybrid aggregation mode disabled. -
Si de nombreuses requêtes sont consignées avec le mode hybride désactivé, contactez le support technique Oracle.
Optimisation du cube pour le mode hybride
Pour utiliser le mode hybride plus efficacement, procédez comme suit :
-
Evitez d'utiliser le calcul à deux passes en mode hybride. Utilisez plutôt solve order.
-
Convertissez les membres stockés de niveau autre que 0 en membres de calcul dynamique chaque fois que cela est possible.
-
Si la conversion en membres de calcul dynamique affecte l'ordre de résolution des formules dépendantes, vous aurez peut-être besoin d'ajuster l'ordre des dimensions de l'outline afin d'aligner l'ordre de résolution sur l'ordre de calcul par lot précédent et les paramètres de calcul à deux passes.
L'ordre de résolution par défaut pour les cubes en mode hybride est semblable à l'ordre de calcul des cubes en mode "block storage", avec certaines améliorations. Si vous voulez utiliser un ordre de résolution autre que celui par défaut, vous pouvez définir un ordre de résolution personnalisé pour les dimensions et les membres.
-
Le traitement d'une formule calculée de manière dynamique dans le mauvais ordre de résolution peut entraîner l'exécution d'un trop grand nombre de formules par la requête, ce qui dégrade les performances. Dès que possible, la formule dispersée calculée de manière dynamique doit être au-dessus des dimensions dispersées agrégées hiérarchiquement dans l'ordre de résolution.
Certaines applications ne le permettent pas car un ordre de résolution différent est nécessaire pour obtenir les bons résultats de formule. Par exemple, une application avec des unités et des prix doit exécuter la valeur des ventes avant les agrégations dispersées pour obtenir la valeur correcte des ventes aux niveaux supérieurs.
-
Vous devrez peut-être ajuster les configurations denses et dispersées des dimensions (s'applique uniquement à l'utilisation du moteur en mode "block storage" dans les cas où le moteur hybride ne peut pas être utilisé).
-
Réduisez la taille des blocs, si possible.
Les administrateurs Essbase peuvent utiliser les outils suivants pour surveiller et optimiser les performances de requête en mode hybride :
-
Pour limiter la quantité de mémoire consommable par une même requête, utilisez le paramètre de configuration MAXFORMULACACHESIZE.
-
Si votre cube comprend des formules de membre complexes avec des opérateurs inter-dimensionnels et plusieurs instructions IF/ELSE, les pertes potentielles de performances peuvent être dues à l'exécution des formules. Si vous soupçonnez un tel problème, vous pouvez activer le traitement des requêtes ascendantes pour le calcul de formules. Cela permet d'optimiser les temps de requête en identifiant les croisements requis pour le calcul. Les temps de requête sont alors proportionnels à la taille des données d'entrée.
Afin d'effectuer ces optimisations de requête pour La version 21C, utilisez le paramètre de configuration QUERYBOTTOMUP ainsi que la fonction de calcul @QUERYBOTTOMUP. Pour la version 19C, utilisez le paramètre de configuration IGNORECONSTANTS avec la syntaxe BOTTOMUP, ainsi que la fonction de calcul @NONEMPTYTUPLE.
-
Utilisez la fonction de trace de requête pour surveiller et déboguer les performances de requête. Plusieurs paramètres de configuration de niveau application sont disponibles, en fonction de votre cas d'emploi. Utilisez QUERYTRACE pour le débogage à court terme d'une seule requête jugée problématique. Utilisez TRACE_REPORT pour la collecte de statistiques sur des requêtes exécutées simultanément (idéale pour le débogage dans un environnement à développement). Utilisez LONGQUERYTIMETHRESHOLD dans les environnements de production pour imprimer les statistiques sur les requêtes dont l'exécution dépasse la durée définie dans le fichier journal de l'application.
Limites et exceptions du mode hybride
Dans certains cas, une requête peut ne pas s'exécuter de manière optimale en mode hybride. Essbase détecte lorsque ces conditions sont présentes et effectue une agrégation en mode "block storage". Si une requête mélange les types de calcul pris en charge et non pris en charge dans le mode hybride, Essbase passe par défaut à l'exécution des calculs en mode "block storage".
S'il est activé, le mode hybride est effectif pour les formules de membre qui utilisent les fonctions prises en charge. Pour une liste des fonctions prises en charge et non prise en charge, reportez-vous à Fonctions prises en charge en mode hybride.
Les types de requête suivants ne sont pas exécutés en mode hybride :
-
Les membres de calcul dynamique avec des formules qui représentent la cible de partitions transparentes
-
Les requêtes dans lesquelles le membre partagé est à l'extérieur de la définition d'une partition cible et du membre de prototype à l'intérieur, ou inversement
-
XOLAP
-
Mesures de texte/listes de valeurs de texte
Les calculs d'attribut seront exécutés en mode hybride, pour la somme uniquement.
Si les membres dépendants possèdent un ordre de résolution plus élevé que le membre de formule, l'avertissement suivant apparaît :
Solve order conflict - dependent member member_name with higher solve order will not contribute value for formula of member_nameOrdre de résolution en mode hybride
L'ordre de résolution dans Essbase détermine l'ordre dans lequel le calcul dynamique est exécuté en mode hybride. Vous pouvez personnaliser l'ordre de résolution ou garder celui par défaut, qui est optimisé pour des performances élevées et l'analyse des dépendances.
Le concept d'ordre de résolution s'applique à l'exécution du calcul dynamique, qu'il soit initié par une formule de membre dynamique ou une dépendance dynamique dans un script de calcul. Lorsqu'une cellule est évaluée dans une requête multidimensionnelle, l'ordre dans lequel les calculs doivent être résolus peut être ambigu, sauf si l'ordre de résolution est indiqué pour donner la priorité de calcul requise.
Vous pouvez définir l'ordre de résolution des dimensions ou des membres, ou vous pouvez utiliser l'ordre de résolution Essbase par défaut. L'ordre de résolution minimum qui peut être défini est 0 et le maximum est 127. Un ordre de résolution plus important signifie que le membre est calculé plus tard. Par exemple, un membre avec un ordre de résolution de 1 est résolu avant un membre avec un ordre de résolution de 2.
Lorsque le mode hybride est activé, l'ordre de résolution par défaut (également appelé ordre de calcul) correspond à celui des bases de données en mode "block storage" :
| Dimension/Type de membre | Valeur d'ordre de résolution par défaut |
|---|---|
| Membres stockés | 0 |
| Membres de dimension dispersée | 10 |
| Membres de dimension Compte dense | 30 |
| Membres de dimension Temps dense | 40 |
| Membres de dimension standard dense | 50 |
| Membres de dimension d'attribut | 90 |
| Membres dynamiques à deux passes | 100 |
| Ensembles nommés ou membres calculés MDX (définis dans MDX With) | 120 |
En résumé, l'ordre de résolution par défaut en mode hybride impose que les membres stockés soient calculés avant les membres de calcul dynamique et que les dimensions dispersées soient calculées avant les dimensions denses, selon l'ordre lequel ils apparaissent dans l'outline (de haut en bas).
Les membres dynamiques (avec ou sans formules) qui ne disposent pas d'un ordre de résolution indiqué héritent de l'ordre de résolution de leur dimension, sauf s'ils sont balisés comme étant à deux passes.
Le calcul à deux passes est un paramètre que vous pouvez appliquer, en mode "block storage", aux membres avec des formules qui doivent être calculées deux fois pour produire la valeur correcte.
Remarques :
N'utilisez pas le calcul à deux passes avec les cubes en mode hybride. Utilisez uniquement solve order.
Le calcul à deux passes n'étant pas applicable en mode hybride, tous les membres balisés à deux passes sont calculés en dernier, après les attributs. En mode hybride, vous devez implémenter un ordre de résolution personnalisé, au lieu du calcul à deux passes, si l'ordre de résolution par défaut ne correspond pas à vos besoins.
L'ordre de résolution par défaut en mode hybride est optimisé pour les scénarios suivants :
-
Les références d'avance, dans lesquelles une formule de membre dynamique fait référence à un membre qui arrive plus tard dans l'ordre d'outline. Il n'existe aucune dépendance d'ordre d'outline en mode hybride.
-
L'agrégation de valeurs enfant basées sur un ordre d'outline, qui correspond étroitement à l'agrégation à l'aide de formules équivalentes.
-
Les membres denses dynamiques en tant que dépendances dans des formules dispersées. En mode hybride, si une formule dispersée fait référence à un membre dynamique dense, la référence est ignorée, car les dimensions dispersées sont calculées en premier. Pour modifier cela, affectez un ordre de résolution à la dimension dispersée qui est supérieur à (calculé après) l'ordre de résolution de la dimension dense.
Personnalisation de l'ordre de résolution
Si vous avez besoin d'ajuster le comportement des calculs dynamiques en mode hybride, vous pouvez y arriver en personnalisant l'ordre de résolution des dimensions et des membres sans apporter de modifications majeures à l'outline.
Si vous implémentez un ordre de résolution personnalisé, il remplace l'ordre par défaut. Si les membres ou les dimensions possèdent le même ordre de résolution, l'ordre dans lequel ils apparaissent dans l'outline (de haut en bas) résout le conflit.
L'ordre de résolution du membre de dimension supérieur s'applique à tous les membres dynamiques de la dimension, sauf si vous avez personnalisé un ordre de résolution pour certains membres.
Pour modifier l'ordre de Résolution, utilisez l'éditeur d'outline dans l'interface Web d'Essbase ou utilisez Smart View (reportez-vous à Modification de l'ordre de Résolution d'un PDV sélectionné).
L'ordre de résolution minimum qui peut être défini est 0 et le maximum est 127. Un ordre de résolution plus élevé signifie que le membre est calculé plus tard.
Pour explorer les cas d'emploi de l'ordre de résolution, reportez-vous aux modèles d'ordre de résolution dans la section technique de la galerie des classeurs d'application, que vous pouvez trouver dans le catalogue de fichiers d'Essbase.
Remarques concernant l'ordre de résolution en mode non hybride
Dans les cubes en mode "aggregate storage", procédez comme suit :
-
L'ordre de résolution est défini sur 0 pour toutes les dimensions.
-
L'agrégation est exécutée dans l'ordre de l'outline, cependant :
- Les membres de hiérarchie stockés sont traités en premier.
- Les membres de hiérarchie dynamiques sont traités ensuite.
Dans des cubes en mode "block storage" non hybride, l'ordre de résolution par défaut est le suivant :
-
dispersé avant dense
-
comptes avant heure
-
attributs en dernier
Remarques :
Si l'ordre de résolution des membres de Comptes est défini manuellement comme supérieur à l'ordre de résolution des membres de Temps, les membres de Comptes seront évalués après les membres de Série chronologique dynamique.