Article
· Juin 5 3m de lecture

Comment configurer le stockage en colonnes dans les classes

Le stockage en colonnes est l'une des offres les plus récentes proposées par InterSystems IRIS.Contrairement au stockage traditionnel basé sur les lignes, il optimise le traitement des requêtes en stockant les données dans des colonnes plutôt que dans des lignes, permettant ainsi un accès et une récupération plus rapides des informations pertinentes.

Quelques articles ont été rédigés sur les moments il doit être utilisé pour donner le plus grand coup de pouce à un système et sur la façon de créer des tables comme celle-ci à l'aide de SQL.

CREATE TABLE table (column1 type1, column2 type2, column3 type3) WITH STORAGETYPE = COLUMNAR  -- ex 1
CREATE TABLE table (column1 type1, column2 type2, column3 type3 WITH STORAGETYPE = COLUMNAR)  -- ex 2

et même les tests de performances.

Comme nous le savons tous, InterSystems IRIS est un SGBD multimodèle et il donne un accès transparent aux mêmes données en utilisant un accès relationnel et objet. Le premier est donc couvert dans d’autres articles, mais qu’en est-il du dernier?

Il est bon de savoir que la disposition du stockage en colonnes peut également être définie dans les classes, et il existe plusieurs façons de le faire.

1. Si vous souhaitez définir le stockage de toutes les propriétés en colonnes (exemple 1 en haut), ajoutez simplement le paramètre suivant à votre classe :

Parameter STORAGEDEFAULT = "columnar" 

Et si on prend un exemple ci-dessus, on obtiendra la classe suivante :

Class Post.Address Extends %Persistent [Final]
{
Parameter STORAGEDEFAULT = "columnar";
Parameter USEEXTENTSET=1;
Property City As %String(MAXLEN = 12);
Property ZIP As %String(MAXLEN = 9);
Property Country As %String(MAXLEN = 12);
}

Le paramètre STORAGEDEFAULT = "columnar" indique au système que toutes les données doivent être stockées sous forme de colonnes (ce qui signifie que chaque colonne aura son propre global).

Le paramètre USEEXTENTSET = 1 indique au système de générer des valeurs globales hachées plus efficaces avec des noms plus courts.

Vous pouvez déclarer n'importe quelle table comme étant en colonnes. Cependant, les tables qui utilisent des colonnes comme disposition de stockage par défaut doivent spécifier soit le mot-clé de classe Final, soit le mot-clé de classe NoExtent, toutes les sous-classes immédiates étant définies explicitement comme Final. Sinon, vous obtiendrez une erreur lors de la compilation.

2. Vous pouvez également définir uniquement certaines propriétés stockées par colonnes (exemple 2 en haut). Pour ce faire, vous devez spécifier le paramètre STORAGEDEFAULT = "columnar" pour une propriété.

Class Post.Address Extends %Persistent
{
Parameter STORAGEDEFAULT = "row";
Parameter USEEXTENTSET=1;
Property City As %String(MAXLEN = 12);
Property ZIP As %String(MAXLEN = 9);
Property Country As %String(MAXLEN = 12, STORAGEDEFAULT = "columnar");
}

De cette façon, les City et les ZIP seront stockés comme d'habitude dans un ^Post.AddressD global et les Country seront stockés dans un global séparé sous forme de colonne.

Dans le cas de cet exemple, ce serait une bien meilleure approche, car si nous avons une base de données de différentes villes dans différents pays, le nombre de pays est limité tandis que le nombre de villes l'est moins. En outre, il n'y a pas beaucoup de cas où vous auriez besoin d'effectuer des requêtes analytiques sur des villes contrairement aux pays.

J'espère que cela vous aidera à comprendre comment utiliser le stockage en colonnes dans les classes. Il y a un certain nombre de limitations que vous devez garder à l'esprit, alors veuillez en savoir plus sur le sujet ici.

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer