Nova postagem

検索

Artigo
· Jun. 5, 2024 3min de leitura

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.

Discussão (0)1
Entre ou crie uma conta para continuar
Pergunta
· Jun. 4, 2024

Global Variable Map

When developing productions there are many places that we input endpoint information (IP/port) especially when there are dozens of operations going to the same environment. What later happens is that the IP changes and we have to then go into each operation and update the IP.

Is there a way to create a "global variable" for an endpoint, something like `$ehr_IP` and then use that and update it in a single place?

I'm aware of defaults, but I don't want a default as this is not a "default" but is the value to use in place of the variable.

Context: I'm very new to InterSystems Health Connect but experienced working with other Interface Engines such as Mirth Connect, and they had this concept of a global variable map.

6 Comments
Discussão (6)2
Entre ou crie uma conta para continuar
Pergunta
· Jun. 4, 2024

Old mumps code debugging with vscode

Hi in mumps, we have B "S".  This way one can step command by command.  How can we do this with vscode?  F10 only step to the next line.

Say, if I have a line like

S A=1 S B=2 S C=A+B

I cannot step within the line.  But with "S", one can.

Do you have any idea?

Thanks,

David

8 Comments
Discussão (8)5
Entre ou crie uma conta para continuar
Anúncio
· Jun. 4, 2024

[Video] Genomics Data in HealthShare

Hey Community,

Watch this video to get an overview of how UC Davis Health uses HealthShare and Smart on FHIR to integrate genomics results into medical records as interactive discrete result pages:

⏯ Genomics Data in HealthShare @ Global Summit 2023

🗣  Presenter: Marvin Asercion, System Integration Engineer, UC Davis

Subscribe to our YouTube channel InterSystems Developers to stay tuned!

Discussão (0)1
Entre ou crie uma conta para continuar
Pergunta
· Jun. 4, 2024

FHIR Service Base URL Test failing

I'm trying to complete Inferno Service Base URL test for FHIR endpoint and I thought it wanted host.com/fhir/r4/.well-known/smart-configuration but I get header error below. Am I using the wrong Service Base URL List or am I missing something? I'm running 2021.2 HealthShare

ERROR <HSFHIRErr>InvalidAcceptSpec: No valid Accept data found (Accept header or _format parameter)
2 Comments
Discussão (2)2
Entre ou crie uma conta para continuar