Les mises à jour récentes d'Intersystems Language Server introduisent de nombreuses améliorations significatives visant à améliorer l'expérience et la productivité des développeurs. Je vais parler de certains des principaux ici, tandis que la liste complète, y compris de nombreuses corrections de bugs, peut être trouvée dans le CHANGELOG de Language Server.
L'intelligence artificielle a un potentiel transformateur pour générer de la valeur et des informations à partir des données. Alors que nous nous dirigeons vers un univers où presque toutes les applications seront pilotées par l'IA, les développeurs qui créent ces applications auront besoin des outils adéquats pour créer des expériences à partir de ces applications. C'est pourquoi nous sommes heureux d'annoncer que la recherche vectorielle a été ajoutée à la plate-forme de données InterSystems IRIS.
Comme la plupart d'entre vous le savent probablement déjà, depuis environ la fin de 2022 InterSystems IRIS a inclus la fonctionnalité de stockage de colonnes dans sa base de données, eh bien, dans l'article d'aujourd'hui, nous allons la mettre à l'épreuve par rapport au stockage de rangées habituel.
Stockage de colonnes
Quelle est la principale caractéristique de ce type de stockage? Si nous consultons la documentation officielle, nous verrons ce tableau fantastique qui explique les principales caractéristiques des deux types de stockage (par rangées ou par colonnes):
Il me semble que c'était hier, lorsque nous avons réalisé un petit projet en Java pour tester les performances d'IRIS, PostgreSQL et MySQL (vous pouvez consulter l'article que nous avons écrit en juin à la fin de cet article). Si vous vous souvenez bien, IRIS était supérieur à PostgreSQL et dépassait considérablement MySQL en termes d'insertions, sans grande différence au niveau des requêtes.
En tant qu'ancien développeur de JAVA, j'ai toujours eu du mal à décider quelle base de données était la plus appropriée pour le projet à développer. L'un des principaux critères que j'utilisais était la performance, ainsi que les capacités de configuration de HA (haute disponibilité). Eh bien, il est maintenant temps de mettre IRIS à l'épreuve en ce qui concerne certaines bases de données les plus couramment utilisées, j'ai donc décidé de créer un petit projet Java basé sur SpringBoot qui se connecte via JDBC avec une base de données MySQL, avec une autre base de données PostgreSQL et enfin
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.
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, parlons d'interopérabilité.
Problème
Lorsque vous avez une production d'interopérabilité active, vous avez deux flux de processus distincts : une production active qui traite les messages et un flux de processus CI/CD qui met à jour le code, la configuration de la production et les paramètres par défaut du système.
De toute évidence, le processus CI/CD affecte l'interopérabilité. Mais il y a des questions :
- Que se passe-t-il exactement lors d'une mise à jour ?
- Que devons-nous faire pour minimiser ou éliminer les temps d'arrêt de la production lors d'une mise à jour ?
Après presque quatre ans de pause, ma série CI/CD est de retour ! Au fil des ans, j'ai travaillé avec plusieurs clients d'InterSystems, développant des pipelines CI/CD pour différents cas d'utilisation. J'espère que les informations présentées dans cet article seront utiles à quelqu'un.
Cette série d'articles aborde plusieurs approches possibles du développement logiciel avec les technologies InterSystems et GitLab.
Nous avons une gamme passionnante de sujets à couvrir: aujourd'hui, parlons de choses au - delà du code, à savoir les configurations et les données.
Problème
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. IRIS RAG Demo
Ceci est une simple démo de l'IRIS avec un exemple de RAG (Retrieval Augmented Generation).
Le backend est écrit en Python en utilisant IRIS et IoP, le modèle LLM est orca-mini et est servi par le serveur ollama.
Le frontend est un chatbot écrit avec Streamlit.
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
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
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
- GitLab CI/CD utilisant des conteneurs
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 les conteneurs?
- GitLab CI/CD utilisant des conteneurs
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
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
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
- Le flux Git (processus de développement)
- Installation de GitLab
- Flux de travail GitLab
- Diffusion continue
- Installation et configuration de GitLab
- GitLab CI/CD
Tout le monde dispose d'un environnement de test.
Certains ont la chance de disposer d'un environnement totalement séparé pour la production.
-- Inconnu
.
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
- Git flow (processus de développement)
- Installation de GitLab
- Flux de travail GitLab WorkFlow
- GitLab CI/CD
- CI/CD avec des conteneurs
Rubrique Questions fréquentes (FAQ) d'InterSystems
Pour les routines (*.mac)
Vous pouvez masquer la source en exportant/important uniquement le fichier *.obj généré après la compilation du programme source.
L'exemple d'exécution de la commande spécifie EX1Sample.obj et EX2Sample.obj, qui sont générés par la compilation de EX1Sample.mac et EX2Sample.mac, comme cibles d'exportation et les exporte dans le deuxième fichier argument.
Après avoir changé d'espace de noms, j'utilise le fichier XML exporté pour effectuer l'importation.
Récemment, @Anastasia Dyubaylo a publié un article (celui-ci) sur une nouvelle fonctionnalité d'IntegratedML pour les prédictions de séries chronologiques présentée par @tomdlors du Global Summit 2023, organisons donc un petit atelier pour la tester !
Introduction
Nous avons choisi comme sujet de cet atelier la prédiction des utilisateurs du métro de Valence, mois par mois, ligne par ligne. Pour ce faire, nous disposons de données mensuelles ventilées par ligne depuis 2022 ainsi que de données annuelles ventilées par ligne depuis 2017 que nous extrapolerons mensuellement.
Aujourd'hui, il y a beaucoup de bruit autour du LLM, de l'IA, etc. Les bases de données vectorielles en font partie, et il existe déjà de nombreuses réalisations différentes pour le support en dehors d'IRIS.
Pourquoi Vector?
- Recherche de similarité : Les vecteurs assurent une recherche de similarité efficace, par exemple en trouvant les éléments ou les documents les plus similaires dans un ensemble de données. Les bases de données relationnelles classiques sont conçues pour des recherches de correspondances exactes, qui ne sont pas adaptées à des tâches telles que la recherche de similitudes d'images ou de textes.
- Flexibilité : Les représentations vectorielles sont polyvalentes et peuvent être obtenues à partir de différents types de données, tels que du texte (via des embeddings comme Word2Vec, BERT), des images (via des modèles d'apprentissage profond), et autres.
- Recherches multimodales** : Les vecteurs permettent d'effectuer des recherches dans différentes modalités de données. Par exemple, avec une représentation vectorielle d'une image, on peut rechercher des images similaires ou des textes connexes dans une base de données multimodale.
Et pour bien d'autres raisons encore.
Donc, pour ce concours python, j'ai décidé de mettre en place ce support. Et malheureusement, je n'ai pas réussi à le terminer à temps, je vais vous expliquer pourquoi.

Parfois, nous devons savoir avec certitude si l'environnement actuel dispose de suffisamment de noyaux, de mémoire et de bande passante pour prendre en charge le nombre prévu d'utilisateurs et les accords de niveau de service tels que la latence, le temps de réponse et la disponibilité. C'est le cas pour les bases de données et les backends. C'est pourquoi il est obligatoire, pour les applications et les bases de données critiques, de simuler les demandes simultanées/concurrentes des utilisateurs et de collecter des données sur les performances et la disponibilité.
Description
Avec le Serveur InterSystems IRIS FHIR, vous pouvez construire une stratégie pour personnaliser le comportement du serveur (pour plus de détails, consultez documentation).

Ce référentiel contient une stratégie Python qui peut être utilisée comme point de départ pour construire votre propre stratégie en Python.
Cette stratégie de démonstration présente les caractéristiques suivantes :
- Mettre à jour la déclaration de capacité pour supprimer la ressource
Account(compte). - Simuler un système de gestion de consentement pour accorder ou non l'accès à la ressource
Observation.- Si l'utilisateur a des droits suffisants, la ressource
Observationest renvoyée. - Sinon, la ressource
Observationn'est pas renvoyée.
- Si l'utilisateur a des droits suffisants, la ressource


Voici un exemple de déploiement de iris-oauth-fhir sur k3d avec IKO.
- iris-oauth-fhir est un exemple de déploiement d'un serveur FHIR avec authentification OAuth2 en utilisant InterSystems IRIS for Health comme serveur de ressources et Google OpenId comme serveur d'autorisation.
- k3d est un wrapper léger pour exécuter k3s (la distribution Kubernetes minimale de Rancher Lab) dans docker.
- IKO est un outil permettant de déployer InterSystems IRIS for Health sur Kubernetes.


Il s'agit d'un exemple d'application qui démontre comment utiliser le référentiel FHIR InterSystems IRIS for Health pour construire un référentiel FHIR avec l'autorisation OAuth2, le point de terminaison FHIR sera le serveur de ressources tandis que Google OpenId sera le serveur d'autorisation.
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é !
Si vous lisez régulièrement les articles publiés dans la Communauté, vous savez qu'en mai de l'année dernière, InterSystems a organisé le JOnTheBeach2023 Hackathon qui s'est tenu à Malaga (Espagne). Le sujet proposé était l'utilisation des outils d'analyse prédictive qu'InterSystems IRIS met à la disposition de tous les développeurs avec IntegratedML. Nous devons remercier @tomdet @Dmitry.Maslennikovpour tout le travail et les efforts qu'ils ont consacrés à faire de cet événement un succès retentissant.
Voici une brève présentation d'IntegratedML
IntegratedML
Je suis fier d'annoncer la nouvelle version du logiciel iris-pex-embedded-python (v2.3.1) avec une nouvelle interface en ligne de commande.
Cette ligne de commande est appelée iop et signifie Interoperability On Python (interopérabilité sur Python).
Tout d'abord, j'aimerais présenter en quelques mots le projet et les principaux changements depuis la version 1.
Un bref historique du projet
La version 1.0 était une preuve de concept visant à montrer comment le cadre d'interopérabilité d'IRIS peut être utilisé avec une approche python first (priorité à Python) tout en restant compatible avec n'importe quel code ObjectScript existant.
Qu'est-ce que cela signifie ? Cela signifie que tout développeur python peut utiliser le cadre d'interopérabilité d'IRIS sans aucune connaissance d'ObjectScript.
Exemple :
from grongier.pex import BusinessOperation
class MyBusinessOperation(BusinessOperation):
def on_message(self, request):
self.log.info("Demande reçue")
Formidable, n'est-ce pas ?
L' adaptateur Telegram pour InterSystems IRIS sert de pont entre la populaire plateforme de messagerie Telegram et InterSystems IRIS, facilitant une communication et un échange de données transparents. En exploitant les capacités de l'API Telegram, l'adaptateur permet aux développeurs de créer des chatbots robustes, d'automatiser des tâches et d'intégrer Telegram aux applications d'InterSystems IRIS.
Les scénarios les plus courants dans lesquels l'adaptateur Telegram peut être utilisé sont les suivants :
Les méthodes écrites en ObjectScript peuvent utiliser des arguments de type " passage par référence " pour renvoyer des informations à l'appelant. Python ne supporte pas les arguments de type " passage par référence ", donc Python intégré dans IRIS ne les supporte pas non plus. Voilà, c'est la fin de cet article, j'espère qu'il vous a plu 😉 Mais attendez, et le Rock & Roll Classic ?