@Benjamin De Boe a écrit un excellent article sur les Universal Cached Queries, mais qu'est-ce qu'une Universal Cached Query (UCQ) et pourquoi devrais-je m'en préoccuper si j'écris du bon vieux Embedded SQL? Dans Caché et Ensemble, les Cached Queries seraient générées pour résoudre xDBC et Dynamic SQL. Maintenant, l'Embedded SQL d'InterSystems IRIS a été mis à jour pour utiliser les Cached Queries, d'où l'ajout du mot Universal au nom. Désormais, tout SQL exécuté sur IRIS le sera à partir d'une classe UCQ.

1 0
0 39

Étant donné que SELECT ... FOR UPDATE est implémenté dans de nombreux RDBMS en tant que méthode d'acquisition de lock de ligne explicite, vous utilisez probablement cette fonctionnalité dans de nombreux cas.

Cette syntaxe n'entraîne pas d'erreur dans les produits InterSystems, mais elle n'acquiert pas les locks de ligne attendus.

Cet article vous montrera comment obtenir la même fonctionnalité.

1 0
0 95
Article
· Juil 6, 2022 11m de lecture
Template Flask pour Embedded Python

1. intersystems-iris-docker-rest-template

Il s'agit d'un modèle d'une application REST API intégrée en python dans InterSystems IRIS. Elle possède également une spécification OPEN API et peut être développée avec Docker et VSCode.

1. intersystems-iris-docker-rest-template

2. Conditions préalables

1 0
0 35
Article
· Fév 14, 2023 4m de lecture
Dans quels cas utiliser le stockage en colonne

Avec InterSystems IRIS 2022.2, nous avons introduit le stockage en colonne comme une nouvelle option pour la persistance de vos tables IRIS SQL qui peut booster vos requêtes analytiques d'un ordre de grandeur. La capacité est marquée comme expérimentale dans les versions 2022.2 et 2022.3, mais passera à une capacité de production entièrement prise en charge dans la prochaine version 2023.1.

La documentation du produit et cette vidéo d'introduction, décrivent déjà les différences entre le stockage en ligne, toujours la valeur par défaut sur IRIS et utilisé dans l'ensemble de notre clientèle, et le stockage en table en colonnes et fournissent des conseils de haut niveau sur le choix de la disposition de stockage appropriée pour votre cas d'utilisation. Dans cet article, nous développerons ce sujet et partagerons quelques recommandations basées sur les principes de modélisation des pratiques de l'industrie, les tests internes et les commentaires des participants au Early Access Program.

1 0
1 36

Bonjour les développeurs, Je suis actuellement en train de faire une démo sur la construction d'une interface utilisateur en front-end faisant de l'analyse de données et de mettre en place un test de performance avec de gros objets de données, donc l'utilisation de "Populate Utility" pourrait m'aider à générer automatiquement des échantillons de données avec lesquels je pourrais jouer.

Dans ce post, j'aimerais partager mon expérience de l'utilisation de Populate Utility, y compris l'utilisation du paramètre POPSPEC.

1 0
0 22

Salut les devs,

Aujourd’hui j’aimerais aborder un sujet qui m’a fait passer des moments difficiles (j’en suis convaincu, celà a déjà dû être le cas d’un bon nombre d’entre-vous) “le bottleneck”. C’est un sujet très vaste, cet article se concentrera sur l’identification des requêtes HTTP entrantes qui pourraient être à l’origine de problèmes de lenteur. Je vous mettrai aussi à disposition un petit outil que j’ai développé pouvant aider à leur identification.

Nos logiciels deviennent de plus en plus complexes, traitent un grand nombre de requêtes provenant de différentes sources, il peut s’agir d'applications front-end ou de tiers applications back-end. Pour garantir des performances optimales, il est essentiel de disposer d'un système de log capable de prendre quelques mesures clés telles que le temps de réponse, le nombre de global référence et le nombre de lignes de code exécutées pour chaque réponse HTTP. Dans le cadre de mon travail, je suis impliqué dans le développement d’un logiciel dossier patient informatisé ainsi que sur l’analyse des incidents. La charge utilisateur provient essentiellement de requêtes HTTP (API REST ou application CSP), la nécessité de disposer de ce type de mesure lorsque des problèmes de lenteur généralisée se produisent est devenu une évidence.

1 0
0 159
Article
· Jan 7 3m de lecture
Fichiers Parquet and InterSystems IRIS

Dans le monde du Big Data, la sélection du bon format de fichier est cruciale pour un stockage, un traitement et une analyse efficaces des données. Avec la quantité massive de données générées chaque jour, le choix du format approprié peut avoir un impact considérable sur la vitesse, le coût et la précision des tâches de traitement des données. Il existe plusieurs formats de fichiers disponibles, chacun avec son propre ensemble d'avantages et d'inconvénients, ce qui rend complexe le choix de celui à utiliser.

1 0
0 19

Bienvenue à tous!

Dans ce court article, je voudrais présenter un exemple d'utilisation auquel beaucoup d'entre vous qui travaillent avec IRIS comme backend pour vos applications Web ont sûrement été confrontés à plus d'une occasion : comment envoyer un fichier à votre serveur depuis le frontend. .

1 0
0 20

Introduction

Il n'y a pas si longtemps, j'ai vu l'idée de using Python Class Definition Syntax to create IRIS classes

sur le portail d'idées d'InterSystems. Elle a attiré mon attention car l'intégration d'un maximum de syntaxes donne de la visibilité aux produits d'InterSystems pour les programmeurs ayant de l'expérience dans de nombreux langages.

1 0
0 16

La cause de cette erreur est que la ressource locked est déjà locked par un autre processus dans l'application et que le lock n'est pas libéré pour une raison quelconque.

S'il n'y a aucun signe que d'autres processus avec le lock, il est possible que la table de locks manque d'espace libre. Dans ce cas, le message LOCK TABLE FULL est envoyé au Message Log

1 0
0 59

Keywords: IRIS, IntegratedML, apprentissage automatique, Covid-19, Kaggle

Objectif

J'ai récemment remarqué un jeu de données Kaggle permettant de prédire si un patient Covid-19 sera admis en soins intensifs. Il s'agit d'un tableur de 1925 enregistrements comprenant 231 colonnes de signes vitaux et d'observations, la dernière colonne " USI " valant 1 pour Oui ou 0 pour Non.

1 0
0 36

Pour le prochain Concours Python, j'aimerais faire une petite démo, sur la création d'une simple application REST en Python, qui utilisera IRIS comme base de données. Et utiliser les outils suivants

  • Le cadre FastAPI, très performant, facile à apprendre, rapide à coder, prêt pour la production.
  • SQLAlchemy est la boîte à outils SQL et le Mapping objet-relationnel de Python qui donne aux développeurs en Python toute la puissance et la flexibilité de SQL.
  • Alembic est un outil léger de migration de base de données à utiliser avec le SQLAlchemy Database Toolkit pour Python.
  • Uvicorn est une implémentation de serveur web ASGI pour Python.
1 0
0 62

Dans cette série d'articles, j'aimerais présenter et discuter de plusieurs approches possibles pour le développement de logiciels avec les technologies d'InterSystems et GitLab. J'aborderai des sujets tels que:

  • Git 101
  • Flux Git (processus de développement)
  • Installation de GitLab
  • Flux de travail GitLab
  • Diffusion continue
  • Installation et configuration de GitLab
  • GitLab CI/CD
  • Pourquoi des conteneurs?
  • Infrastructure de conteneurs
  • CD utilisant des conteneurs
  • CD utilisant ICM
  • Architecture des conteneurs

Dans cet article, nous aborderons la construction de votre propre conteneur et son déploiement.

1 0
0 24

Bienvenue dans le prochain chapitre de ma série CI/CD, où nous discutons des approches possibles vers le développement de logiciels avec les technologies InterSystems et GitLab.
Aujourd'hui, nous reprenons la discussion sur l'interopérabilité, et plus particulièrement sur le suivi de vos déploiements d'interopérabilité. Si vous ne l'avez pas encore fait, configurez Alerte pour toutes vos productions d'interopérabilité afin de recevoir des alertes sur les erreurs et l'état de la production dans son ensemble.

Le paramètre de délais d'inactivité Inactivity Timeout est commun pour tous les hôtes métier d'interopérabilité (Interoperability Business Hosts). Un hôte métier possède le statut Inactif lorsqu'il n'a reçu aucun message pendant le nombre de secondes spécifié dans le champ de délai d'inactivité " Inactivity Timeout ". La fonction de surveillance de la production " Monitor Service " examine périodiquement l'état des services et des opérations métier au sein de la production et marque les éléments comme étant inactifs s'ils n'ont rien fait pendant le délai d'inactivité.
La valeur par défaut est 0 (zéro). Si ce paramètre est 0, l'hôte métier ne sera jamais marqué comme Inactif, quelle que soit la durée de son inactivité.

Ce paramètre est extrêmement utile, car il génère des alertes qui, associées aux alertes configurées, permettent de signaler les problèmes de production en temps réel. Le fait que l'élément "Business Host" soit inactif signifie qu'il peut y avoir des problèmes de production, d'intégration ou de connectivité réseau qui nécessitent d'être examinés.
Cependant, le Business Host ne peut avoir qu'un seul paramètre constant pour le délai d'inactivité, ce qui peut générer des alertes inutiles pendant les périodes connues de faible trafic : nuits, week-ends, vacances, etc.
Dans cet article, je décrirai plusieurs approches pour la mise en œuvre dynamique des délais d'inactivité (Inactivity Timeout). Bien que je fournisse un exemple fonctionnel (qui fonctionne actuellement en production pour l'un de nos clients), cet article est plutôt un guide pour votre propre mise en œuvre dynamique des délais d'inactivité, donc ne considérez pas la solution proposée comme la seule alternative.

1 0
0 31

InterSystems FAQ rubric

Les définitions de classe créées par les utilisateurs sont stockées dans des classes de définition de classe. Ils peuvent être utilisés pour obtenir une liste de définitions de classe à partir d'un programme.

Remarque : Les classes de définition de classe font référence à toutes les classes contenues dans le package %Dictionary.

1 0
0 21

Bonjour les développeurs !

Récemment, j'ai été impressionné par l'article de @Dan Pasco dans lequel il explique également comment il utilise les alias de terminal.

Les alias de terminal sont un outil très puissant pour les développeurs et les administrateurs système si vous avez souvent besoin d'appeler des expressions de terminal encombrantes et de les rendre plus courtes et plus propres. Voici le lien pour la documentation
de l'alias de terminal .

Mais qu'en est-il des environnements Docker ? Que faire si vous êtes fan des environnements de développement Docker mais que vous souhaitez continuer à utiliser vos alias préférés avec Docker ?

Il s'avère que c'est tout à fait possible.

1 0
0 17

Salut les gars,

Il y a quelques jours, un client m'a contacté avec le souhait d'améliorer son application existante, qui utilise les services SOAP afin de partager la même autorisation avec sa nouvelle API d'application basée sur REST. Comme leur nouvelle application utilise OAuth2, le défi était clair : comment transmettre le token d'accès avec la requête SOAP au serveur.

Après avoir passé du temps sur Google, il s'est avéré que l'un des moyens possibles d'y parvenir consistait à ajouter un élément d'en-tête supplémentaire à l'enveloppe SOAP, puis à s'assurer que l'implémentation du WebService fait ce qui est nécessaire pour valider le jeton d'accèsю

1 0
0 24
Article
· Juil 13, 2022 9m de lecture
La WebGateway Apache avec Docker

Salut, communauté.

Dans cet article, nous allons configurer de manière programmatique la WebGateway Apache avec Docker en incluant :

  • Protocole HTTPS.
  • TLS\SSL pour sécuriser la communication entre la WebGateway et l'instance IRIS.

image

Nous utiliserons deux images : une pour la WebGateway et la seconde pour l'instance IRIS.

1 0
0 85

Salut les Devs !

Pour moi, l'une des choses les plus pénibles à propos d'ObjectScript est de taper ##class(Class).Method() pour appeler une méthode de classe dans le code ou dans un terminal. J'ai même soumis une idée pour le simplifier en ObjectScript.

Mais! Il y a une nouvelle fonctionnalité dans VSCode ObjectScript qui vient d'être introduite dans le plugin - Copy Invocation !

1 0
0 30
Article
· Fév 27, 2023 18m de lecture
OpenAPI Suite - Partie 1

Salut la communauté,

J'aimerais vous présenter ma dernière application OpenAPI-Suite, c'est un ensemble d'outils permettant de générer du code ObjectScript à partir d'une specification OpenAPI version 3.0. L'application permet de:

  • Générer les classes serveur REST. C'est assez similaire au code généré par ^%REST, la valeur ajoutée est le support de la version 3.0.
  • Générer les classes pour un client HTTP.
  • Générer une production cliente (business services, business operation, business process, Ens.Request, Ens.Response).
  • Disposer d'une interface web pour générer et télécharger le code ou générer et compiler directement sur le serveur.
  • Convertir les spécifications de version 1.x, 2.x en version 3.0.

Aperçu

OpenAPI-Suite est divisée en plusieurs packages et utilise différentes bibliothèques de la communauté des développeurs ainsi que des services REST publics. Vous pouvez voir sur le schéma ci-dessous, tous les packages développés et les bibliothèques et services web utilisés:

1 0
0 128
Article
· Sept 8, 2023 6m de lecture
Gardez vos images iris docker en forme ;)

iris-docker-multi-stage-script

Un script python pour garder vos images docker iris en forme ;)

Sans changer votre dockerfile ou votre code vous pouvez réduire la taille de votre image de 50% ou plus !

TL;DR

Nommez l'image de constructeur builder et l'image finale final et ajoutez ceci à la fin de votre fichier Dockerfile :

Modifiez votre fichier Dockerfile pour utiliser une construction multi-étapes :

ARG IMAGE=intersystemsdc/irishealth-community:latest
FROM $IMAGE as builder

Ajoutez ceci à la fin de votre fichier Dockerfile:

FROM $IMAGE as final

ADD --chown=${ISC_PACKAGE_MGRUSER}:${ISC_PACKAGE_IRISGROUP} https://github.com/grongierisc/iris-docker-multi-stage-script/releases/latest/download/copy-data.py /irisdev/app/copy-data.py

RUN --mount=type=bind,source=/,target=/builder/root,from=builder \
    cp -f /builder/root/usr/irissys/iris.cpf /usr/irissys/iris.cpf && \
    python3 /irisdev/app/copy-data.py -c /usr/irissys/iris.cpf -d /builder/root/

Boum ! Vous avez terminé !

1 0
1 19

InterSystems FAQ rubric

Pour résoudre l'erreur <PROTECT>, supprimez l'attribut en lecture seule de la base de données de bibliothèque à l'échelle du système (IRISLIB pour InterSystems IRIS, CACHELIB pour Caché/Ensemble/HealthShare (basé sur Caché)).

Une fois que vous avez terminé d'importer la routine, n'oubliez pas de la remettre en lecture seule.

1 0
0 15