検索

記事
· 9 hr 前 5m read

Reducir la huella de la imagen Docker de IRIS Community Edition

La idea más votada en el InterSystems Ideas Portal —con 74 votos— pide una versión ligera de IRIS. Aunque la plataforma ha crecido hasta convertirse en un potente motor de datos, muchos proyectos solo necesitan sus capacidades de base de datos SQL. Este artículo muestra cómo crear una imagen no oficial y compacta de IRIS Community Edition centrada únicamente en la funcionalidad básica de base de datos, reduciendo el tamaño de la imagen en más de un 80%.

⚠️ Aviso

Este proyecto genera una imagen no oficial y experimental de InterSystems IRIS Community Edition.

  • No está soportada ni avalada por InterSystems.
  • Usadla bajo vuestra propia responsabilidad. Las modificaciones eliminan funciones esenciales de la plataforma y pueden romper la compatibilidad con herramientas, APIs y comportamientos esperados.
  • No se aplican garantías de ningún tipo, incluida su idoneidad para uso en producción.
  • Está pensada solo para fines educativos y experimentales por parte de usuarios avanzados.

¿Por qué un IRIS ligero?

Aunque IRIS incluye hoy funciones muy completas —interoperabilidad, analítica, machine learning, gestión del sistema, etc.— muchos proyectos solo requieren sus capacidades SQL básicas. La imagen oficial Docker de Community Edition ocupa aproximadamente:

  • Uso en disco: 3,5–3,8 GB
  • Tamaño comprimido: ~1,1 GB

IRIS Light reduce eso a:

  • Uso en disco: ~575–583 MB
  • Tamaño comprimido: ~144–148 MB

Esto lo hace adecuado para:

  • Uso SQL en microservicios o contenedores
  • Pipelines de CI con arranque y descarga más rápidos
  • Escalado horizontal donde no se necesitan todas las funcionalidades

Comparación de huella de imagen

Las imágenes oficiales de IRIS Community Edition suelen ocupar entre 3.5 y 3.8 GB en disco, con tamaños comprimidos de alrededor de 1.1 GB

$ docker images containers.intersystems.com/intersystems/iris-community
IMAGE                                                                    ID             DISK USAGE   CONTENT SIZE
containers.intersystems.com/intersystems/iris-community:latest-cd        14c6314edcc5        3.8GB         1.17GB
containers.intersystems.com/intersystems/iris-community:latest-em        4c25627895eb       3.52GB         1.01GB
containers.intersystems.com/intersystems/iris-community:latest-preview   424e87dbb7d8       3.81GB         1.17GB

Por el contrario, la imagen simplificada “IRIS Light” creada mediante este enfoque es aproximadamente 8 veces más pequeña en tamaño comprimido

$ docker images caretdev/iris-community-light
IMAGE                                                                    ID             DISK USAGE   CONTENT SIZE
caretdev/iris-community-light:latest-cd                                  ce5c2d7fa173        583MB          148MB
caretdev/iris-community-light:latest-em                                  fd33a51a0e81        575MB          144MB
caretdev/iris-community-light:latest-preview                             f10c714117da        583MB          148MB

Analizando las capas de la imagen con Dive

Para comprender y optimizar la imagen de IRIS Community Edition, usamos dive, una herramienta para inspeccionar capas de imágenes Docker e identificar ineficiencias.

Antes de la optimización: imagen estándar de IRIS Community

La captura de pantalla de abajo muestra el análisis de la imagen oficial iris-community:latest-em. Una de las capas más grandes pesa 882 MB e incluye Java, bibliotecas del sistema y otros componentes de ejecución que no son estrictamente necesarios para cargas de trabajo solo de SQL

Y la más grande, de 1.5 GB, que contiene principalmente IRIS itself

Después de la optimización: imagen IRIS Light

Al eliminar paquetes innecesarios y compactar el almacenamiento interno de IRIS, la imagen final cabe en una sola capa de 320 MB, logrando una reducción de tamaño drástica

Cómo se construye la imagen IRIS Light

El proceso sigue un Dockerfile de múltiples etapas, comenzando desde la base estándar iris-community:latest-em. Los pasos clave incluyen:

1. Desactivar componentes en la configuración

  • Desactivar WebServer, System Management Portal y Ensemble en iris.cpf.

2. Eliminar paquetes no usados dentro de IRIS

Usando ObjectScript dentro de una sesión IRIS:

  • Borrar paquetes: %SYS.ML, DeepSee, Interop, OAuth2, Net, Report, y más.
  • Conservar solo las bibliotecas esenciales del sistema (por ejemplo, %Library, %SQL, %SYSTEM).

3. Sustituir clases

Algunas clases necesarias (por ejemplo, para el arranque) se sustituyen por implementaciones mínimas sin funcionalidad cuando es necesario.

4. Limpiar bases de datos

Compactar y desfragmentar las bases de datos clave para reducir el tamaño.

5. Limpieza del sistema de archivos

Eliminar:

  • Herramientas de desarrollo
  • Pila web y CSP
  • Bibliotecas de interoperabilidad
  • Soporte de Python/Java
  • Datos de localización, registros, archivos temporales, controladores ODBC/JDBC

6. Copiar el contenido limpiado a una base Ubuntu nueva

La imagen final se construye sobre ubuntu:24.04, incluye solo los archivos y herramientas necesarios y usa tini como PID 1.

Resultado

La imagen resultante tiene aproximadamente:

  • Tamaño comprimido: ~144–148 MB
  • Uso de disco sin comprimir: ~570–580 MB
  • Funcionalidad SQL: verificada usando la suite de pruebas sqlalchemy-iris (619 aprobadas, 912 omitidas, 0 fallos)

Esto la hace muy adecuada para:

  • Servicios SQL mínimos
  • Contenedores ligeros de desarrollo/pruebas
  • Escenarios de despliegue embebidos o en el edge
  • Arquitecturas sin estado y escaladas horizontalmente

Limitaciones importantes

  • Sin Management Portal ni servicios web
    Toda la pila CSP/web está eliminada.
  • Sin Interoperabilidad, DeepSee, iKnow o Machine Learning
    Estos subsistemas se eliminan explícitamente
  • Sin soporte interno ni externo
    InterSystems no ofrece garantías para esta imagen. La compatibilidad y el comportamiento de actualización son indefinidos.
  • Las futuras versiones de IRIS pueden cambiar los requisitos de arranque
    Dependencias internas en paquetes o archivos eliminados pueden impedir que futuras versiones funcionen con este enfoque

Conclusión

IRIS Light es una imagen Docker simplificada y creada por la comunidad para InterSystems IRIS, que ofrece reducciones significativas en tamaño y complejidad para casos de uso centrados en bases de datos. Aunque no está oficialmente soportada, proporciona una base para experimentación, creación rápida de prototipos y situaciones donde no se necesitan todas las capacidades de IRIS.

Se anima a los usuarios a revisar el Dockerfile, adaptarlo a sus propias necesidades y comprender las implicaciones de eliminar funciones clave de la plataforma.

Se anima a los usuarios a personalizar aún más el Dockerfile para ajustarlo a sus propias necesidades operativas y de seguridad. Todo el proceso de construcción es transparente y reproducible usando únicamente imágenes base públicas de Docker.


Este proyecto está disponible aquí 

Imágenes Docker de IRIS Community Light disponibles en Docker Hub

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
記事
· 9 hr 前 2m read

[Quick tip] Cómo crear un agente IA con la documentación de Intersystems en Teams

Hola a todos.

Os voy a dar un consejo rápido de como implementar un agente IA para realizar búsquedas en la documentación de Intersystems integrado en Teams.

Si, ya se que la página de la documentación tiene su propio buscador IA y es bastante eficaz, pero de esta forma tendríamos un acceso más rápido, sobre todo si Teams es la herramienta corporativa de tu empresa.

También se puede crear otro agente IA para realizar búsquedas en los artículos publicados en la comunidad de desarrolladores (que también tiene su buscador IA integrado).

Paso 1

Seleccionamos la opción "Copilot"

Paso 2

Seleccionamos la opción "Create agent".

Si no veis inicialmente esta opción, pulsar el botón que aparece arriba a la izquierda

Paso 3

Seleccionar la opción Configure, para no utilizar plantillas ya existentes

Le damos un nombre a nuestro agente IA, por ejemplo "Intersystems Docs" y una descripción. Podemos modificar el icono de nuestro agente para que sea más personalizado.

En el apartado "Instructions" añadimos las siguientes entradas

- El agente debe buscar información en la web de Intersystems.
- Proporcionar respuestas precisas y relevantes basadas en la información encontrada.
- Mantener un tono profesional y claro en todas las interacciones.
- No proporcionar información que no esté verificada o que no se encuentre en la web de Intersystems.
- Guiar al usuario a recursos adicionales si es necesario.

Añadimos la URL de la documentación de Intersystems

https://docs.intersystems.com

Nota: Si quereis hacer un agente que consulte la comunidad de desarrolladores, utilizar el siguiente enlace:

https://community.intersystems.com

O añadir ambos para que la búsqueda sea mas completa.

Paso 4

Podemos añadir sugerencias de prompts.

Title Message
Buscar información ¿Puedes buscar información sobre [tema] en la web de Intersystems?
Guía de recursos ¿Puedes guiarme a los recursos disponibles sobre [tema] en la web de Intersystems?
Detalles específicos Necesito detalles específicos sobre [tema] de la web de Intersystems.
Últimas actualizaciones ¿Cuáles son las últimas actualizaciones sobre [tema] en la web de Intersystems?

Pulsamos el botón "Create" y listo... ya podemos utilizar nuestro agente IA

Vamos a consultar cualquier cosa usando nuestro nuevo agente, lo podemos hacer en cualquier idioma, porque ya tiene su traducción incluida.

Espero que os sea de gran utilidad como ha sido para mi.

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
記事
· 13 hr 前 5m read

Ollamaを使用して、InterSystems IRISとローカルモデルでAIエージェントを実行する

前の記事では、smolagentsとInterSystems IRISを使用して、SQL、ベクトル検索を使用したRAGinteroperabilityを組み合わせたカスタマーサービスAIエージェントをビルドしました。

その際、LLMと埋め込み表現のためにクラウドモデル(OpenAI)を使用しました。

今回はさらに一歩進めます。Ollamaを利用して、同じエージェントをローカルモデルで実行します

ディスカッション (0)0
続けるにはログインするか新規登録を行ってください
お知らせ
· 17 hr 前

官宣来啦:开发者社区十周年庆典奖

作为十年庆典的一部分,我们很高兴表彰一些长期以来为 InterSystems 开发人员社区做出重大贡献的成员

在过去的十年中,这些人分享知识、支持同行,并帮助加强了我们社区的协作精神。

为了表彰他们的贡献,我们特别推出了一套10 周年纪念版奖项Global Master徽章:

徽章 接收者
 
提名:知识大师(Knowledge Master)—— 十周年纪念版

@Robert Cemper
@Eduard. Lebedyuk
@Muhammad Waseem
@LuisAngel. PérezRamos
@姚 鑫

@Scott. Roth
@Yuri. Gomes
@Yone Moreno
@Mihoko. Iijima
@Rochdi. Badis4742

@Megumi. Kakechi
@John Murray
@Dmitry Maslennikov
@Hiroshi Sato
@Evgeny. Shvarov

 
提名:最佳导师(Best Mentor) —— 十周年纪念版

@Robert Cemper
@Vitaliy. Serdtsev2149
@Eduard. Lebedyuk
@Jeffrey Drumm
@Julius. Kavay
@Dmitry. Maslennikov

@Timothy. Leavitt
@John Murray
@Luis Angel Pérez Ramos
@Alexander Koblov
@Enrico. Parisi
@Vic. Sun

@Evgeny. Shvarov
@Julian. Matthews7786
@Guillaume. Rongier7183
@Marc. Mundt
@Benjamin. Spead
@Alexey. Maslov

 
提名:全球之声(Global Voice)—— 十周年纪念版

西班牙语开发者社区:

@LuisAngel. PérezRamos
@Ricardo. Paiva
@Jose-Tomas. Salvador
@Alberto. Fuentes
@Francisco. López1549

法语开发者社区:

@Pierre. LaFay2520
@Guillaume. Rongier7183
@Sylvain. Guilbaud
@Iryna. Mykhailova
@Lorenzo. Scalese

中文开发者社区:

@姚鑫
@ 刘杰良
@ 王景伟
@Lilian. Huang

日语开发者社区:

@Toshihiko Minamoto
@Mihoko. Iijima
@Megumi. Kakechi
@Hiroshi Sato
@Seisuke. Nakahashi
@Tomoko. Furuzono

葡萄牙语开发者社区:

@Danusa. Ferreira
@Heloisa. Paiva
@Larissa. Prussak
@EikeScudellari. Franco
@Rochael. Ribeiro
@Julio. Esquerdo
@Andre Ribera. LarsenBarbosa

 
 
提名:新星(Raising Star) - 10 周年纪念版

@姚 鑫
@Muhammad. Waseem

我们衷心感谢这些奖项的获得者,以及在过去十年中为开发者社区贡献时间、专业知识和热情的每一位成员。你们的努力为未来的岁月奠定了坚实的基础!

祝贺所有获奖者,并感谢您参与这一里程碑事件。

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
記事
· 2025年12月17日 6m read

Integração com Git para o Iniciante Absoluto: Boas Práticas de Controle de Origem com o IRIS através do VSCode

Sumário

  1. Introdução
  2. Controle de Versão
  3. Exportando Classes
  4. Exportando Classes de BI Analytics
  5. Exportando Globals

Introdução

Neste artigo, cobriremos um início rápido para o desenvolvimento com Git na Comunidade de Desenvolvedores InterSystems e as práticas de controle de versão ao trabalhar com IRIS InterSystems. Abordaremos cenários em que precisamos exportar classes de Interoperabilidade, globals e elementos de analytics, como cubos e dashboards. Esses cenários englobam as principais práticas de controle de versão com o IRIS.

Para começar, você precisará:

  1. Registrar-se e fazer login no GitHub
  2. Ser um membro da organização intersystems-community no Git.

Começar com o IRIS InterSystems é muito simples!

O controle de versão com IRIS não é fundamentalmente diferente de qualquer outro projeto. Fazemos alterações nos arquivos e as enviamos (commit) para o repositório. Com o IRIS InterSystems, as alterações feitas dentro do IRIS não são exportadas para o sistema de arquivos externo automaticamente; precisamos de ferramentas especializadas para isso.

Vamos começar criando um repositório e enviando seu código para ele.

Acesse github.com e crie um repositório vazio. Você será solicitado a nomeá-lo, selecionar as configurações de privacidade e usar o template intersystems-community/iris-interoperability-template (isso é possível se você fizer parte da organização InterSystems Community).

Este template contém tudo o que você precisa para começar rapidamente com o IRIS e seus sistemas centrais: classes de interoperabilidade, globals e classes de dados para trabalhar com analytics.

Após preencher os campos, clique em Create repository.

 

Pronto! Agora temos um repositório. Em seguida, basta cloná-lo em seu disco rígido, construir um container Docker com a imagem do IRIS e começar a codar.

Clone o repositório nos seus arquivos.

.Abra o Visual Studio Code, navegue até o diretório e execute os comandos para construir o projeto:

Em seguida, construímos (build) o projeto:

docker compose build - -no-cache - -progress=plain

E, em seguida:

docker compose up -d

A instalação e o lançamento do seu projeto estão concluídos

Controle de Versão

Para enviar as alterações do seu projeto ao repositório, você precisa retirá-las do container e colocá-las no diretório de trabalho. Para rastrear alterações no IRIS, use o aplicativo git-source-control Ele permite monitorar o estado dos arquivos dentro do sistema de arquivos do IRIS sem configuração adicional e checar a cada mudança.

Nosso template já possui o pacote git-source-control pré-instalado, então podemos ver como funciona e focar no controle de versão. O pacote está no arquivo iris.cls. Note as seguintes linhas:

zpm "install git-source-control"
do ##class(%Studio.SourceControl.Interface).SourceControlClassSet("SourceControl.Git.Extension")


A primeira linha instala o aplicativo a partir do Gerenciador de Pacotes InterSystems (InterSystems Package Manager) ou IMP (ex: ZPM). A segunda linha define a classe do aplicativo git-source-control: "SourceControl.Git.Extension" como um argumento para a classe de sistema %Studio.SourceControl.Interface, o que permite que o VSCode se comunique com a classe de controle de origem. Esta configuração é feita ao construir o contêiner no Dockerfile ou installer.cls, ou, neste caso, no iris.cls.

Exportando classes.

Agora vamos tentar fazer algumas alterações em nosso código e ver o que acontece. Criaremos um cubo de dados para uma das tabelas fornecidas neste template. Para fazer isso, habilite o analytics para o namespace atual executando o seguinte comando no console:

do EnableDeepSee^%SYS.cspServer("/csp/USER/")

Depois disso, acessamos o endereço Management Portal -> Analytics -> Architect e veremos esta janela:

 

Clique em New (Novo) e preencha os campos no formulário para criar um novo cubo. Para o nosso cubo, usaremos o modelo de dados dc.Demo.PostMessages.

 

Este é aproximadamente o resultado que você deve obter:

 

Em seguida, salvamos e compilamos o novo cubo.

 
Vamos voltar ao VSCode e ver o que mudou.

O novo cubo é carregado para o sistema de arquivos exatamente como o criamos! É simples assim. A seguir, modificaremos uma das classes de produção de negócio.

Acesse o IRIS e navegue até Management Portal -> Interoperability -> Configure -> Production. Lá, veremos o processo de negócio dc.Demo.RedditService em execução.

Vamos fazer uma alteração na definição da classe dc.Demo.RedditService e atribuir a ela uma categoria. Em seguida, clique em Apply (Aplicar).

 
Voltamos ao VSCode e vemos que a classe do processo de negócio já foi carregada para o nosso sistema de arquivos e contém todas as alterações feitas



 

Agora, tudo o que temos que fazer é colocar as classes nos diretórios apropriados e enviá-las (commit) para o repositório.

Exportando classes de BI Analytics

A seguir, veremos outro método para exportar arquivos usando elementos de análise de negócios (business analytics) como exemplo. Lembre-se do cubo de dados que criamos com base nas mensagens do Reddit. Vamos criar um pivot e um dashboard para visualizar os dados e tentar exportá-los .Para fazer isso, acesse o IRIS e navegue até Analytics -> Analyzer. Aqui, temos o cubo de dados RedditMessages selecionado e a medida básica Count.

Arraste a medida para o campo Measures e salve o pivot resultante como Reddit Messages Amount.

 
Em seguida, vamos criar um dashboard para exibir o pivot resultante. Vá para Management Portal -> User Portal. Na janela que se abre, clique no sinal de mais (+) e selecione Add Dashboard.

 
Preencha o nome do dashboard e clique em OK.

 

Em seguida, adicione o widget criado anteriormente ao dashboard e clique em OK.

 

Pronto! Muito simples. Começamos a desenvolver o analytics. Agora precisamos exportar esses elementos. Infelizmente, a versão atual do IRIS e do Git-Source-Control não permite rastrear alterações em classes de analytics automaticamente, mas temos outra ferramenta conveniente para essa tarefa.

Usaremos o iris-bi-utils. Este é um conjunto de utilitários para exportar ou importar quaisquer classes do IRIS para o seu sistema de arquivos. A principal diferença em relação ao Git-Source-Control é que este último rastreia automaticamente as alterações das classes, enquanto o iris-bi-utils exporta as classes manualmente. Usando o aplicativo iris-bi-utils, você pode baixar quaisquer classes e elementos contidos no IRIS.

Então, vamos começar instalando o iris-bi-utils no seu IRIS.

Execute o comando no console:

zpm "install iris-bi-utils"

 

Em seguida, executamos o comando para definir o diretório raiz do projeto para armazenar os objetos:
​​

do ##class(BIInstruments.utils).workdir("/home/irisowner/dev/")

Os comandos a seguir exportam o pivot e o dashboard desejados. Observe a sintaxe da classe exportada. O nome do elemento deve ser seguido por sua categoria e tipo: .pivot.DFI para o pivot e .dashboard.DFI para o dashboard.

do ##class(BIInstruments.export).export("Reddit Messages Amount.pivot.DFI")
do ##class(BIInstruments.export).export("Reddit overview.dashboard.DFI")

Os arquivos serão exportados para o diretório /dfi. É aqui que as classes de bi analytics são armazenadas.

Nós também as colocamos no diretório apropriado e enviamos as alterações para o repositório.

Exportando globals.

Como regra, não precisamos enviar globals para o repositório durante o desenvolvimento. Muitas vezes, dados sensíveis são armazenados lá, ou o tamanho do global é grande demais. No entanto, se necessário, eles sempre podem ser exportados para um sistema de arquivos externo e enviados ao Git usando este método da classe %Library.Global:

do ##class(%Library.Global).Export("NAMESPACE", "global.name, global.name1,....", “/path/and/outputFileName”)

Isso também pode ser feito através do Portal de Administração. Para isso, vá em Management Portal -> System Explorer -> Globals. Selecione o global desejado e clique em Export. A interface possui uma função de busca conveniente. A exportação é possível para o sistema de arquivos ou para o navegador.
Ao ser exportado, o global pode ser codificado usando diversas variantes das mais comuns.


 
 

Isso é tudo! Neste artigo, criamos um repositório, vimos maneiras de exportar classes de negócio, analytics e globals, e enviamos as alterações para o repositório Git.

Links úteis para este artigo:

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください