Nova postagem

Pesquisar

Anúncio
· Nov. 28, 2025

[Video] Query Optimization in Hybrid Databases

Hey Community!

We're happy to share a new video from our InterSystems Developers YouTube:

⏯  Query Optimization in Hybrid Databases @ Ready 2025

This presentation covers query optimization in hybrid databases that use a mix of row-based, columnar, and bitmap indexes. InterSystems Iris supports flexible storage and indexing, but choosing the best combination for performance poses challenges. In version 2025.2, the query optimizer has been enhanced to fully integrate columnar indexing into its cost-based model. This allows the engine to automatically combine different index types, such as using a bitmap index for low-cardinality filters and a columnar index for analytical conditions within the same query.

The result is significant performance gains, with some queries running up to three times faster and minimal need for manual tuning. Future improvements will expand the optimizer to handle more vector operations and continue refining cost-based decision-making.

Presenters:
🗣 Ismail Ben Atitallah, Principal Systems Developer, InterSystems
🗣 Boya Song, Senior Systems Developer, InterSystems

Enjoy watching, and subscribe for more videos! 👍

Discussão (0)1
Entre ou crie uma conta para continuar
Anúncio
· Nov. 28, 2025

NOVO: Programa de Acesso Antecipado para "Modelos Personalizados do IntegratedML" -- Implante seus modelos de aprendizado de máquina em Python diretamente em SQL

Temos o prazer de anunciar o Programa de Acesso Antecipado para Modelos Personalizados do IntegratedML, um novo e poderoso recurso que estará disponível no IRIS 2026.1!

Discussão (0)1
Entre ou crie uma conta para continuar
Pergunta
· Nov. 28, 2025

Punctually access specific nodes of an XML document

Hello!
I have the following XML document obtained through a string:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MainDocument xmlns="urn:hl7-org:v3">
<realmCode code="IT"/>
<title>kjbkjkjbkjb</title>
<effectiveTime value="20090905150716"/>
[.....other tags.....]
<versionNumber value="1"/>
<component>
<body>mhvjhjkvhj</body>
<component>
<section>content</section>
<ID>5</ID>
<title>Certificato</title>
<text/>
<entry>
<Id>5</Id>
[...other tags...]
</entry>
<entry>
<Id>6</Id>
[...other tags...]
</entry>
</component>
</component>
</ClinicalDocument>


I would like to have a way to obtain only the content of the <entry> tags (which can be multiple) without having to scan the whole xml document, since it would be inefficient because of its length. I would like to have an outcome similar to the one coming from EvaluateExpression() but, from my trials and examples found on the internet, it seems that this function can be used only when the tag contains just one value. Does anybody have any idea which might help?

Thank you in advance!

7 Comments
Discussão (7)3
Entre ou crie uma conta para continuar
Artigo
· Nov. 28, 2025 4min de leitura

Connexion de C# à InterSystems IRIS via ODBC

Pour les développeurs d'applications externes, notamment ceux utilisant des technologies comme C#, ODBC (Open Database Connectivity) est une passerelle standardisée essentielle vers toute base de données relationnelle, y compris InterSystems IRIS. Bien qu'InterSystems propose son propre fournisseur ADO.NET natif, le pilote ODBC reste souvent la solution la plus simple pour l'intégration avec les outils et frameworks de bases de données génériques.

Voici un guide pas à pas pour connecter votre application C# à une instance IRIS à l'aide du pilote ODBC, en mettant l'accent sur la chaîne de connexion sans DSN.

Étape 1 : Installation du pilote ODBC InterSystems IRIS

Le pilote ODBC InterSystems est installé par défaut lors de l'installation d'InterSystems IRIS sur une machine Windows.

  • Si IRIS est installé sur la même machine : le pilote est déjà présent.
  • Si IRIS est installé sur un serveur distant : vous devez télécharger et installer le package du pilote client ODBC autonome correspondant à votre système d’exploitation (Windows, Linux ou macOS) et à son architecture (32 bits ou 64 bits) depuis le site web de WRC si vous êtes client, ou en installant les composants clients et en copiant le pilote ODBC.

Une fois installé, vous pouvez vérifier sa présence dans l’outil Administrateur de sources de données ODBC sous Windows (recherchez le pilote InterSystems IRIS ODBC35).

Étape 2 : Définir la chaîne de connexion sans DSN

Au lieu de créer un nom de source de données (DSN) préconfiguré dans l’outil d’administration Windows, nous utiliserons une chaîne de connexion sans DSN. Cette méthode simplifie le déploiement, car votre application contient toutes les informations de connexion nécessaires.

Le format spécifie le nom du pilote et les paramètres du serveur :

Driver={InterSystems IRIS ODBC35};
server=127.0.0.1;
port=1972;
database=USER;
uid=_System

Remarque :

  • Le nom du pilote (InterSystems IRIS ODBC35 ou parfois InterSystems ODBC) doit correspondre exactement au nom enregistré dans votre administrateur de sources de données ODBC local.
  • Le port est celui du serveur IRIS (souvent 1972).
  • La base de données correspond à l’espace de noms cible dans InterSystems IRIS (par exemple, USER ou l’espace de noms personnalisé de votre application).
  • L’UID par défaut est _System et le mot de passe est SYS. Modifiez toujours ces valeurs par défaut en environnement de production.

Étape 3 : Implémenter la connexion en C#

Dans votre projet C#, vous devrez référencer l’espace de noms System.Data.Odbc pour utiliser le fournisseur ODBC générique .NET.

Voici un exemple minimal en C# qui établit une connexion, exécute une requête simple sur une table par défaut et affiche le résultat.

using System.Data;
using System.Data.Odbc;

public class IrisOdbcExample
{
    public static void Main()
    {
        // 1. Define the DSN-less connection string
        string connectionString =
            "DRIVER={InterSystems IRIS ODBC35};" +
            "Server=127.0.0.1;Port=1972;Database=USER;" +
            "UID=_System;PWD=SYS;";

        // 2. Define the SQL Query (Example: querying the default Sample.Person table)
        string sql = "SELECT ID, Name FROM Sample.Person WHERE ID < 5";

        using (OdbcConnection connection = new OdbcConnection(connectionString))
        {
            try
            {
                connection.Open();
                Console.WriteLine("Connection successful!");

                using (OdbcCommand command = new OdbcCommand(sql, connection))
                using (OdbcDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        Console.WriteLine($"ID: {reader["ID"]}, Name: {reader["Name"]}");
                    }
                }
            }
            catch (OdbcException ex)
            {
                // 3. Handle specific ODBC errors (e.g., wrong password, port blocked)
                Console.WriteLine($"ODBC Error: {ex.Message}");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"General Error: {ex.Message}");
            }
            // The connection is automatically closed at
            // the end of the Using block.
        }
    }
}

Étapes suivantes

Cette approche sans DSN offre une grande flexibilité et évite de surcharger la configuration côté client. Pour les applications C# hautes performances, vous pouvez envisager le fournisseur ADO.NET natif d'InterSystems. Toutefois, pour une intégration rapide et une compatibilité optimale avec les outils, une connexion ODBC reste une solution fiable.

❗ N'oubliez pas d'utiliser systématiquement des requêtes paramétrées en production afin de prévenir les vulnérabilités liées aux injections SQL.

Discussão (0)1
Entre ou crie uma conta para continuar
Pergunta
· Nov. 27, 2025

Error with Coud Storage Adapters - Trying to access AWS S3 buckets

I am using IRIS for Windows (x86-64) 2022.1 (Build 209) Tue May 31 2022 12:27:55 EDT [Health:3.5.0]. I created Interoperability Production with a Service to read file from S3 bucket and an Operation to write files to a different S3 bucket. I specified AWS  ProviderCredentialsFile.

I see "Terminating Job 7096 / 'From S3 Bucket' with Status = ERROR #5023: Remote Gateway Error: Connection cannot be established, %QuitTask=

Do I need anything like Python libraries or AWS CLI to make this work?

2 Comments
Discussão (2)2
Entre ou crie uma conta para continuar