Artículo
· 12 hr atrás Lectura de 3 min

Programación práctica en ObjectScript: de JSON a Globals a SQL

Al comenzar con InterSystems IRIS o Caché, los desarrolladores a menudo se encuentran con tres conceptos fundamentales: Dynamic Objects, Globals y Relational Table. Cada uno tiene su papel en la construcción de soluciones escalables y mantenibles. En este artículo recorreremos ejemplos prácticos de código, destacaremos buenas prácticas y mostraremos cómo estos conceptos se relacionan entre sí.

1. Trabajando con Dynamic Objects:

Los objetos dinámicos (%DynamicObject y %DynamicArray) permiten a los desarrolladores manipular estructuras similares a JSON directamente en ObjectScript. Son especialmente útiles para aplicaciones modernas que necesitan analizar, transformar o generar JSON.

Ejemplo: Crear y manipular Dynamic Objects

    // Create a Dynamic object
    Set obj - {}

    // Add properties
    Set obj.name = "Vachan"
    Set obj.age = 25
    // Nested objects
    Set obj.address = {"city":"Bengaluru", "zip":"560000"}
    
    // Add an Array
    Set obj.skills = ["Objectscript", "SQL"]
    
    // Convert to JSON string
    Set json = obj.%ToJSON()
    Write json,!
    
    // Parse JSON string back to an object
    Set parser = {}.%FromJSON(json)
    Write parser.name

Mejores prácticas

  • Validad siempre la entrada JSON con %FromJSON() para detectar errores.
  • Usad obj.%Get("property") cuando no estéis seguros de que una propiedad exista.
  • Preferid %DynamicArray para estructuras de tipo lista.

2. Usando Globals de manera efectiva:

Los Globals son arrays dispersos jerárquicos almacenados directamente en el motor de la base de datos IRIS. Son extremadamente rápidos y pueden almacenar prácticamente cualquier estructura.

Ejemplo: Almacenando datos en Globals

// Store student data in a global
SET ^Student(1,"Name") = "Alice"
SET ^Student(1,"Age") = 29
SET ^Student(2,"Name") = "Bob"
SET ^Student(2,"Age") = 34
// Retrieve data
WRITE ^Student(1,"Name")  // outputs: Alice
// Iterate over all students
SET id=""
FOR  SET id=$ORDER(^Student(id)) QUIT:id=""  {
    WRITE "Student ",id,": ",^Student(id,"Name")," (Age ",^Student(id,"Age"),")",!
}

Mejores prácticas:

  • Definid una estructura clara para el global antes de codificar (evitad claves ad-hoc).
  • Usad globals para almacenamiento de alto rendimiento cuando no se necesite la sobrecarga de SQL.
  • Para los datos de la aplicación, preferid clases persistentes con globals gestionados internamente.

3. Creación de tablas relacionales SQL:

En IRIS, las tablas relacionales se pueden crear tanto usando SQL DDL como clases persistentes.

Ejemplo: Crear una tabla SQL mediante DDL

CREATE TABLE Employee (
    ID SERIAL PRIMARY KEY,
    Name VARCHAR(50),
    Age INT,
    Department VARCHAR(50)
);

Ejemplo: Crear la misma tabla como Clase Persistente

Class Company.Employee Extends (%Persistent) {
    Property Name As %String(MAXLEN=50);
    Property Age As %Integer;
    Property Department As %String(MAXLEN=50);
}

Una vez compilada, esta clase crea automáticamente un global subyacente y una tabla SQL. Ahora podéis usar tanto ObjectScript como SQL:

// Create and save an employee
SET emp = ##class(Company.Employee).%New()
SET emp.Name = "Charlie"
SET emp.Age = 40
SET emp.Department = "IT"
DO emp.%Save()

// Query employees with SQL
&sql(SELECT Name, Age FROM Company.Employee)
WHILE (SQLCODE=0) {
    WRITE "Employee: ",Name,", Age: ",Age,!
    FETCH NEXT
}

Mejores Prácticas:

  • Preferid clases persistentes para aplicaciones mantenibles.
  • Usad SQL DDL para definiciones rápidas de tablas o integración con sistemas externos.
  • Definid siempre índices para las propiedades que se consultan con frecuencia.

RESUMEN:

Ya sea que estéis analizando cargas JSON, gestionando datos de acceso rápido o diseñando tablas relacionales, entender cuándo usar objetos dinámicos, globals o clases persistentes es clave para convertiros en desarrolladores efectivos de ObjectScript.

Comentarios (0)1
Inicie sesión o regístrese para continuar