Ao começar a usar o InterSystems IRIS ou Cache, os desenvolvedores frequentemente se deparam com três conceitos principais: Objetos Dinâmicos, Globals e Tabela Relacional. Cada um tem seu papel na construção de soluções escaláveis e fáceis de manter. Neste artigo, vamos percorrer exemplos de código práticos, destacar as melhores práticas e mostrar como esses conceitos se conectam.
1. Trabalhando com Objetos Dinâmicos
Objetos dinâmicos (%DynamicObject
e %DynamicArray
) permitem que os desenvolvedores manipulem estruturas semelhantes a JSON diretamente no ObjectScript. Eles são especialmente úteis para aplicações modernas que precisam analisar, transformar ou gerar JSON.
Exemplo: Criando e Manipulando Objetos Dinâmicos
// 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
Melhores Práticas
- Sempre valide a entrada JSON com
%FromJSON()
para capturar erros. - Use
obj.%Get("property")
quando não tiver certeza se uma propriedade existe. - Prefira
%DynamicArray
para estruturas do tipo lista..
2. Usando Globals de forma Eficaz
Globals são arrays esparsos hierárquicos armazenados diretamente no motor de banco de dados do IRIS. Eles são extremamente rápidos e podem armazenar praticamente qualquer estrutura.
Exemplo: Armazenando Dados em 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"),")",!
}
Melhores Práticas:
- Defina uma estrutura global clara antes de codificar (evite chaves ad hoc).
- Use globals para armazenamento de alto desempenho quando o overhead do SQL não for necessário.
- Para dados de aplicação, prefira classes persistentes com globals gerenciados internamente
3. Criando Tabelas SQL Relacionais
No IRIS, tabelas relacionais podem ser criadas usando DDL SQL e classes persistentes.
Exemplo: Criando uma Tabela SQL via DDL
CREATE TABLE Employee (
ID SERIAL PRIMARY KEY,
Name VARCHAR(50),
Age INT,
Department VARCHAR(50)
);
Exemplo: Criando a mesma tabela como uma Classe Persistente
Class Company.Employee Extends (%Persistent) {
Property Name As %String(MAXLEN=50);
Property Age As %Integer;
Property Department As %String(MAXLEN=50);
}
Uma vez compilada, esta classe cria automaticamente um global subjacente e uma tabela SQL. Agora você pode usar tanto o ObjectScript quanto o 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
}
Melhores Práticas:
- Prefira classes persistentes para aplicações fáceis de manter.
- Use DDL SQL para definições rápidas de tabelas ou integração com sistemas externos.
- Sempre defina índices para propriedades frequentemente consultadas.
RESUMO:
Seja para analisar payloads JSON, gerenciar dados de consulta de alta velocidade ou projetar tabelas relacionais, entender quando usar objetos dinâmicos, globals ou classes persistentes é fundamental para se tornar um desenvolvedor ObjectScript eficaz.