Artículo
Jose Tomas Salvador · Sep 6 Lectura de 2 min
InterSystems ObjectScript 101++

Desde hace ya algunos años he echado en falta poder ofrecer, a todos los que se interesan por ObjectScript, un tutorial más o menos completo de iniciación a ObjectScript. Algo que pueda ayudar más y facilitarles las cosas a esos nuevos desarrolladores que se acercan a nuestra tecnología... algo intermedio, a medio camino entre el típico "Hola Mundo", que no te permite ir mucho más allá, y el "Curso Avanzado de Programación", que te resulta imposible por carecer de tiempo o medios.

Si existiese algo que de verdad sirviera no sólo como introducción al ecosistema, sino cómo empujón y punto de partida para empezar a hacer cosas de verdad en ObjectScript y avanzar por ti mismo... ¿no sería estupendo?

60
0 1 125

En el núcleo de IRIS y Caché hay una arquitectura de base de datos muy interesante a la que, en M/Gateway Developments, nos referimos como "Almacenamiento Global".  Si alguna vez quisiste saber más sobre los fundamentos y las funciones de esta base de datos oculta, te interesará leer un completo análisis que hemos elaborado:

https://github.com/robtweed/global_storage

Entre otras cosas, descubrirás que:

00
0 0 18
Artículo
Eduardo Anglada · Sep 7 Lectura de 3 min
ObjectScript sobre ODBC
Este es un ejemplo de código que funciona en IRIS 2020.1 y en Caché 2018.1.3 
No se mantendrá sincronizado con las nuevas versiones.  
Y NO cuenta con el servicio de soporte de InterSystems.
De vez en cuando, puedes encontrarte una situación en la que, por diferentes razones, ODBC es la única opción para acceder a un sistema remoto. Lo cual es suficiente mientras necesites examinar o cambiar tablas. Pero no puedes ejecutar directamente algunos comandos o cambiar algunos globals.
00
0 0 44
Artículo
Ricardo Paiva · Ago 19 Lectura de 2 min
Persistencia atípica
Este es el ejemplo de un código que funciona en Caché 2018.1.3 e IRIS 2020.2 
No se mantendrá sincronizado con las nuevas versiones 
¡Además NO cuenta con el servicio de Soporte de InterSystems!

Durante mi búsqueda de un snapshot de un objeto persistente, conocí una característica que me gustaría compartir, ya que podría ser útil en algunas situaciones especiales. Mi objetivo era tener una imagen del antes y el después durante las pruebas unitarias.

00
0 0 28
Artículo
Eduardo Anglada · Ago 12 Lectura de 3 min
Escaneo y división de globals
Este es un ejemplo de código que funciona en IRIS 2020.1 y en Caché 2018.1.3 
No se mantendrá sincronizado con las nuevas versiones.      
Y NO cuenta con el servicio de soporte de InterSystems.

En la mayoría de los casos, un global que se utiliza como almacenamiento predeterminado tiene solo 1 nivel de subíndice que representa el IDKEY.
Para un índice de globals podemos ver 2 o más niveles de subíndices.
Las matrices, las relaciones de herencia padre hijo o las clases persistentes que extienden una clase base, son ejemplos en los que vemos más niveles. Aunque todos estos globals son bastante uniformes.

10
0 0 38
Artículo
Eduardo Anglada · Jun 9 Lectura de 3 min
Cómo mostrar globals por SQL SELECT
Este es un ejemplo de código que funciona en IRIS 2020.1 y en Caché 2018.1.3 
No se mantendrá sincronizado con las nuevas versiones      
¡NO está soportado por el servicio de soporte de InterSystems!   

Los globals en Caché, Ensemble e IRIS normalmente son invisibles a través de SQL.
En este ejemplo se muestra cómo verlos desde SQL.

00
0 0 54

¡Hola desarrolladores!

A menudo, tenemos que implementar algunos datos junto con código de aplicación.

Y para los desarrolladores de InterSystems IRIS, la pregunta podría ser: "¿Cómo puedo desplegar los datos que tengo en globals?"

InterSystems IRIS Globals Model QuickStart | InterSystems

En este artículo, os propongo uno de los métodos - desplegar los datos de los globals utilizando el ZPM package manager.

00
0 0 22
Artículo
David Reche · Jul 23, 2019 Lectura de 5 min
Clases, tablas y globals - ¿Cómo funcionan?

¡Hola a tod@s!

Cuando hablo con alguien de perfil técnico por primera vez acerca de InterSystems IRIS, siempre comienzo hablando de que en el centro de todo InterSystems IRIS es una Base de Datos Multimodelo. En mi opinión, esta es la mayor ventaja (desde la visión de Sistemas de Bases de Datos), ya que:

  • ¿Quieres obtener un resumen o partes específicas de tus datos? Usa SQL!
  • ¿Necesitas trabajar de forma intensiva con un registro? Usa Objetos!
  • ¿Quieres establecer un valor y conoces la clave? Piensalo de nuevo. Usa globals!

Y en todos los casos, el dato está almacenado de forma única. ¡Tú eliges la manera en la que quieres acceder al mismo!!

De un primer vistazo es una bonita historia - corta, concisa y con un mensaje; pero cuando se empieza a trabajar con InterSystems IRIS, comienzan a surgir  preguntas: ¿Cómo están relacionados las clases, las tablas y los globals? ¿Qué son cada uno para el otro? ¿Cómo se almacenan realmente los datos?

En este artículo voy a tratar de responder estas preguntas y explicar qué está pasando realmente.

20
0 3 276
Artículo
Ricardo Paiva · Mayo 13 Lectura de 13 min
Compilaciones en InterSystems IRIS

El orden es una necesidad para todos, pero no todos lo entienden de la misma manera (Fausto Cercignani)

Nota de traducción: este articulo se publicó originalmente basado en Caché. Para esta traducción se revisó todo el contenido usando InterSystems IRIS.

Descargo de responsabilidad: En este artículo se utilizan el ruso y el alfabeto cirílico como ejemplos, pero esto solamente es importante para las personas que utilizan InterSystems IRIS en lugares en los que no se habla inglés. Ten en cuenta que este artículo se refiere principalmente a las compilaciones de NLS, que son diferentes a las compilaciones de SQL. Las compilaciones en SQL (por ejemplo, SQLUPPER, SQLSTRING, EXACT que significa que no hay compilación, TRUNCATE, etc.) son funciones reales que se aplican de manera explícita a algunos valores, y cuyos resultados a veces se almacenan explícitamente en los subíndices de los *globals. De hecho, cuando se almacenan en subíndices, de forma natural estos valores seguirían la compilación de NLS (“Compilaciones de SQL y NLS”).*

00
0 0 33

Esta publicación es el resultado directo de trabajar con un cliente de InterSystems que acudió a mí con el siguiente problema:

SELECT COUNT(*) FROM MyCustomTable

Esto tarda 0.005 segundos, con 2300 filas en total.  Sin embargo:

00
0 0 75

¡Hola a tod@s!

En las partes anteriores (1, 2) de este artículo, hablamos de Globals como árboles. En esta tercera parte, los veremos como matrices dispersas.

Una matriz dispersa es un tipo de matriz donde la mayoría de los valores asumen un valor idéntico.

En la práctica, a menudo veréis matrices dispersas tan grandes que no tiene sentido ocupar memoria con elementos idénticos. Por lo tanto, tiene sentido organizar matrices dispersas de tal manera que no se desperdicie memoria al almacenar valores duplicados.

En algunos lenguajes de programación, las matrices dispersas son parte del lenguaje (por ejemplo, en J, MATLAB). En otros lenguajes, hay bibliotecas especiales que permiten usarlas. Para C ++, esos serían Eigen y similares.

Los Globals son buenos candidatos para implementar matrices dispersas por las siguientes razones:

20
0 0 175

 

Principiantes- ver Parte 1.

3. Variantes de estructuras cuando se usan globals

Una estructura, como un árbol ordenado, tiene varios casos especiales. Echemos un vistazo a aquellos que tienen un valor práctico para trabajar con globals.

3.1 Caso especial 1. Un nodo sin ramas

Los globals pueden usarse no solo como una matriz, sino como variables regulares. Por ejemplo, para crear un contador:
 

10
1 1 134

¡Hola a tod@s!

En este artículo voy a hablar sobre los Globals, esas espadas mágicas para almacenar datos, que han estado con nosotros desde hace tiempo, pero no mucha gente las utiliza de forma eficiente o realmente conoce esta súper herramienta.

Si se utilizan globals para realizar las tareas en donde realmente brillan, los resultados pueden ser sorprendentes, ya sea en términos de un mayor rendimiento o en una simplificación drástica de la solución en general (1, 2).

Globals ofrecen una forma especial de almacenar y procesar datos, la cual es completamente diferente de las tablas SQL. Se introdujeron por primera vez en 1966 con el lenguaje de programación M(UMPS), donde inicialmente se utilizaron en las bases de datos médicas. Todavía se usan de la misma manera, pero también fueron adoptados por otras industrias donde la confiabilidad y el alto rendimiento son la máxima prioridad (como en las finanzas, las operaciones comerciales, etc.)

10
1 0 104
Artículo
Ricardo Paiva · Sep 23, 2019 Lectura de 3 min
SQL y Funciones definidas por el usuario

¡Hola a tod@s!

¿Alguna vez se han encontrado con una query de bajo rendimiento a la cual le falta algún dato para obtener el rendimiento deseado? ¿Han tenido la necesidad de llamar a una función desde una sentencia SQL? Me refiero a funciones definidas por el usuario, no a las funciones ya disponibles (como $LENGTH) o a las variables especiales (como $HOROLOG). Si es así, tenemos solución para esta necesidad - las 'funciones extrínsecas' o 'funciones definidas por el usuario'.

00
0 0 77
Artículo
Estevan Martinez · Jun 19, 2019 Lectura de 8 min
El arte de mapear Globals para Clases (2 de 3)

¿Alguno de ustedes desea traer de vuelta una antigua aplicación en MUMPS? Siga estos pasos para mapear sus globales ya establecidos para clases y mostrar todos esos hermosos datos en Objects y SQL

En este ejemplo se estudiarán 4 o 5 cosas diferentes más allá de lo que se cubrió en la Parte 1 

Todo lo que falta por hacer después de esto, es el ejemplo del mapeo de padres e hijos, entonces irá por buen camino.

00
0 0 108
Artículo
Estevan Martinez · Jun 5, 2019 Lectura de 7 min
El arte de mapear Globals para Clases (1 de 3)

¿Alguno de ustedes desea traer de vuelta una antigua aplicación MUMPS? Siga estos pasos para mapear sus globales ya establecidos para clases y mostrar todos esos hermosos datos en Objects y SQL

Al seguir los sencillos pasos en este artículo y los dos siguientes, podrá mapear todas las variables globales, excepto las más difíciles, para clases de Caché. Para los que estén locos pondré un archivo zip con diferentes mapeos que he coleccionado a lo largo de los años. Esto NO es para datos nuevos; si no cuenta con datos globales ya establecidos, por favor, utilice el almacenamiento predeterminado.

00
0 0 123