Venga, a fracasar una nueva jornada de la Quiniela, ¡si es que ya no se puede confiar en ningún equipo de esta liga! Bueno, los madridistas podéis estar tranquilos, que mi estimado Valladolid no le va a suponer ninguna molestia.😭

Veamos qué partidos entran esta jornada, 21ª de Primera División y 24ª de Segunda:

Aquí tenemos las previsiones para Primera División:

0 0
0 28

Después de tantos años de espera, por fin tenemos un controlador oficial disponible en Pypi

Además, encontré el driver JDBC finalmente disponible en Maven desde hace ya 3 meses, y el driver .Net en Nuget desde hace más de un mes.

Como autor de multitud de implementaciones de librerías de Python con soporte de IRIS, quería probarlo. La implementación de DB-API significa que debe ser reemplazable e implementar las funciones definidas en el estándar. La única diferencia entre las diferentes bases de datos debería ser únicamente el SQL.

Y la belleza de usar librerías existentes que ya implementaron la conectividad con otras bases de datos usando el estándar DB-API, es que estas librerías deberían ser totalmente compatibles con el controlador.

Decidí probar el driver oficial de InterSystems implementando su soporte en la librería SQLAlchemy-iris.

1 0
0 27

Cuando trabajáis con InterSystems IRIS, los desarrolladores y arquitectos de bases de datos a menudo se enfrentan a una decisión crítica: si usar SQL Dinámico o SQL Embebido para consultar y actualizar datos. Ambos métodos tienen sus propias fortalezas y casos de uso, pero comprender sus implicaciones en el rendimiento es esencial para tomar la decisión correcta. El tiempo de respuesta, una métrica clave en la evaluación del rendimiento de las aplicaciones, puede variar significativamente dependiendo del enfoque de SQL que utilicéis. El SQL Dinámico ofrece flexibilidad, ya que las consultas pueden construirse y ejecutarse en tiempo de ejecución, lo que lo hace ideal para escenarios con necesidades de consulta impredecibles o altamente variables. Por el contrario, el SQL Embebido enfatiza la estabilidad y eficiencia al integrar el código SQL directamente en la lógica de la aplicación, ofreciendo tiempos de respuesta optimizados para patrones de consulta predefinidos.

En este artículo, exploraré los tiempos de respuesta al usar estos dos tipos de SQL y cómo dependen de las diferentes estructuras de clases y del uso de parámetros. Para ello, voy a utilizar las siguientes clases del diagrama:

1 0
0 26

Si echáis un vistazo al archivo values.yaml del Helm chart de IKO, encontraréis:

useIrisFsGroup: false 

Vamos a desglosar qué es useIrisFsGroup y en qué situaciones puede ser útil activarlo.

FsGroup se refiere al file system group (grupo del sistema de archivos).

0 0
0 25

¿A quién no le ha pasado que está desarrollando un precioso ejemplo usando una imagen de IRIS de Docker y le ha fallado el proceso de generación de la imagen en el Dockerfile porque la licencia con la que se creo la imagen no contiene determinados privilegios?

0 0
0 25

Hola desarrolladores:

Al observar la avalancha de herramientas de desarrollo impulsadas por IA y al estilo vibe coding que han estado apareciendo últimamente casi cada mes, con funciones cada vez más emocionantes, me preguntaba si sería posible aprovecharlas con InterSystems IRIS. Al menos para construir un frontend. Y la respuesta es: ¡sí! Al menos con el enfoque que seguí en este ejemplo.

Aquí tenéis mi receta para crear la interfaz de usuario mediante prompts frente al backend de InterSystems IRIS:

  1. Tened una API REST en el lado de IRIS, que refleje una especificación Open API (swagger).
  2. Generad la interfaz de usuario con cualquier herramienta de vibe coding (por ejemplo, Lovable) y apuntad la interfaz al endpoint de la API REST.
  3. ¡Y listo!

Aquí tenéis el resultado de mi propio experimento: una interfaz 100 % generada por prompts frente a la API REST de IRIS, que permite listar, crear, actualizar y eliminar entradas de una clase persistente (Open Exchange, código del frontend, vídeo).

¿Cómo es la receta en detalle?

2 0
0 23

Lo que encuentro realmente útil de IRIS al enseñar mi asignatura de bases de datos post-relacionales es el hecho de que es una base de datos multimodelo. Lo que significa que podéis abordar la arquitectura y la estructura una sola vez y, después, mostrar el uso de diferentes modelos (como el objeto, documento, jerárquico) utilizando el mismo lenguaje y enfoque. Y no es un gran salto pasar de un lenguaje de programación orientado a objetos (como C#, Java, etc.) a una base de datos orientada a objetos.

Sin embargo, junto con las ventajas (que son muchas), vienen algunos inconvenientes cuando pasamos del modelo orientado a objetos al relacional. Cuando digo que podéis acceder a los mismos datos utilizando diferentes modelos, también necesito explicar cómo es posible trabajar con listas y arrays del modelo objeto en una tabla relacional. Con los arrays es muy sencillo: por defecto se representan como tablas separadas y eso es todo. Con las listas es más complicado, porque por defecto son cadenas de texto. Pero uno sigue queriendo hacer algo con ellas sin dañar la estructura ni volver esta lista ilegible en el modelo objeto.

Así que en este artículo os mostraré un par de predicados y una función que son útiles al trabajar con listas, y no solo como campos.

1 0
0 22

Si estáis migrando de Oracle a InterSystems IRIS, como muchos de mis clientes, podríais encontraros con patrones SQL específicos de Oracle que necesitan ser traducidos.

Tomad este ejemplo:

SELECT (TO_DATE('2023-05-12','YYYY-MM-DD') - LEVEL + 1) AS gap_date
FROM dual
CONNECT BY LEVEL <= (TO_DATE('2023-05-12','YYYY-MM-DD') - TO_DATE('2023-05-02','YYYY-MM-DD') + 1);

En Oracle:

2 0
0 21
Artículo
· 20 mayo, 2025 Lectura de 6 min
Pensamientos sobre programar con GenAI

Hace trece años, obtuve una doble titulación de grado en ingeniería eléctrica y matemáticas, y enseguida empecé a trabajar a tiempo completo en InterSystems sin utilizar ninguna de las dos. Una de mis experiencias académicas más memorables —y que más me revolvió el estómago— fue en Estadística II. En un examen, estaba resolviendo un problema de intervalo de confianza de dificultad moderada.

0 0
0 21

Estoy seguro de que la mayoría de vosotros estáis familiarizados con la utilidad %SYS.MONLBL, que es crucial cuando se analizan los cuellos de botella de rendimiento del código. Permite seleccionar un número de rutinas que queréis monitorizar en tiempo de ejecución y también especificar qué proceso(s) queréis observar. PERO, ¿qué pasa si no sabéis exactamente qué proceso ejecutará vuestro código? Esto es común en muchas aplicaciones basadas en la web (CSP/REST) hoy en día. Queréis minimizar la utilización de recursos en vuestro sistema de producción que necesita análisis.

0 0
0 20
Artículo
· 13 mayo, 2025 Lectura de 2 min
Contenedor de IRIS con una huella mínima

A veces, los clientes necesitan una instancia pequeña de IRIS para hacer algo en la nube y luego apagarla, o necesitan cientos de contenedores (es decir, uno por usuario final o uno por interfaz) con cargas de trabajo pequeñas. Este ejercicio surgió para ver cuán pequeña podría ser una instancia de IRIS. Para este ejercicio, nos centramos en cuál es la menor cantidad de memoria que podemos configurar para una instancia de IRIS. ¿Conocéis todos los parámetros que afectan la memoria asignada por IRIS?

0 0
0 20
Artículo
· 1 abr, 2025 Lectura de 6 min
Conjunto de mensajes huérfanos

En este artículo, hablaremos sobre los Mensajes Huérfanos.

¿Qué es un Mensaje Huérfano?

Cada cuerpo de mensaje está asociado con un encabezado de mensaje que contiene los metadatos. El encabezado incluye información como el nombre de la configuración de origen, el nombre de la configuración de destino, la hora de creación, la hora de procesamiento, la referencia asociada al cuerpo del mensaje, la información de sesión, el nombre de la clase del cuerpo del mensaje y el estado del mensaje.

0 0
0 20

IRIS admite transformaciones CCDA y FHIR de forma nativa, pero acceder y visualizar estas funcionalidades requiere tiempo de configuración y conocimiento del producto. La aplicación IRIS Interop DevTools fue diseñada para cerrar esa brecha, permitiendo a los implementadores comenzar de inmediato y explorar las capacidades de transformación integradas del producto.

Además del entorno de transformación IRIS XML, XPath y CCDA, el paquete Interop DevTools ahora proporciona:

0 0
0 17
Artículo
· 30 mayo, 2025 Lectura de 8 min
VIP en Azure

Si estás ejecutando IRIS en una configuración en mirror para alta disponibilidad (HA) en Azure, la cuestión de proporcionar una Mirror VIP (Virtual IP) es relevante. La Virtual IP ofrece una forma para que los sistemas interactuen con IRIS utilizando una dirección IP. Incluso cuando ocurre un failover, los otros sistemas pueden reconectarse a la misma dirección IP y continuar trabajando.

El problema principal, cuando se despliega en Azure, es que una IRIS VIP tiene el requerimiento de que IRIS sea esencialmente un admin de red, según se indica en la documentación.

Para tener HA, los miembros en mirror de IRIS deben ser desplegados en diferentes zonas de disponibilidad (availability zones o AZ) en una subred (lo que es posible en Azure ya que las subredes pueden abarcar varias zonas). Una de las soluciones puede ser utilizar balanceadores de carga pero, por supuesto, suponen un coste extra, y también necesitarás administrarlos.

En este artículo, quiero proporcionar un modo de configurar una Mirror VIP sin la utilización de balanceadores de carga que se sugiere en la mayoría de las propouestas de arquitectruas de referencia para Azure.

0 0
0 17

Los motores de plantillas son esenciales para producir contenido dinámico personalizable, sin necesidad de compilación y ofreciendo grandes posibilidades de extensibilidad para quienes usáis las plantillas. Especialmente si el motor de plantillas es compatible con Python. Una solución popular es Mako. Es una biblioteca de plantillas escrita en Python. Ofrece una sintaxis familiar, no basada en XML, que se compila en módulos de Python para obtener el máximo rendimiento.

0 0
0 16

Introducción

InterSystems IRIS permite crear APIs REST utilizando clases ObjectScript y el framework %CSP.REST. Esta funcionalidad permite desarrollar servicios modernos para exponer datos a aplicaciones web, móviles o integraciones externas.

En este artículo aprenderás cómo crear una API REST básica en InterSystems IRIS, incluyendo:

0 0
0 12
Artículo
· 4 jul, 2025 Lectura de 3 min
¡Opciones para desarrolladores Python + Encuesta!

Estoy escribiendo esta publicación principalmente para recopilar un consenso informal sobre cómo los desarrolladores están utilizando Python junto con IRIS, ¡así que por favor responded a la encuesta al final del artículo! En el cuerpo del artículo, daré un poco de contexto sobre cada una de las opciones proporcionadas, así como sus ventajas, pero si lo preferís, podéis hacer una lectura rápida y simplemente responder la encuesta.

0 0
0 5