O InterSystems IRIS é construído sobre uma arquitetura que separa a organização lógica dos dados (namespaces) de seu local de armazenamento físico (bancos de dados). Compreender essa separação e a distinção entre Namespaces e Bancos de Dados é crucial para uma gestão de dados eficaz, segurança e, especialmente, para o compartilhamento de dados de alta performance.
Neste artigo, discutirei esses componentes fundamentais e fornecerei um guia prático sobre como aproveitar os mapeamentos de globals para compartilhar estruturas de dados nativas (globals) entre diferentes ambientes lógicos.
Bancos de Dados: A Realidade Física
Um banco de dados representa a realidade física de onde os dados estão armazenados no disco. Antes de tudo, é um arquivo em um sistema de arquivos chamado IRIS.dat (por exemplo, <Pasta de instalação>\mgr\user\IRIS.DAT). O tamanho máximo deste arquivo é de 32TB. Ele é o contêiner para todos os dados reais e o código. Os bancos de dados são gerenciados pelo kernel do IRIS, que lida com cache, journaling e registro de transações no nível do arquivo físico.
Quando você instala o DBMS InterSystems IRIS, os seguintes bancos de dados são instalados automaticamente:

Quando você está trabalhando em um ambiente de produção, é fortemente recomendado que você crie um banco de dados dedicado separado ou vários para armazenar seus dados e código.
Para criar um novo banco de dados, vá em System > Configuration > Local Databases > Create New Database e forneça um nome e um diretório onde ele deve ser armazenado:
.png)
Namespaces: Sandbox Lógica
Um namespace no InterSystems IRIS representa um ambiente de trabalho lógico e autocontido. Ele é análogo a um schema em um banco de dados relacional ou a um workspace de projeto. Ele define o escopo de todos os elementos da aplicação: classes persistentes (objetos), rotinas (código) e, mais importante, globals (estruturas de dados nativas). Além disso, as aplicações que rodam em um namespace são logicamente isoladas daquelas em outro. Isso evita conflitos entre diferentes aplicações ou ambientes de desenvolvimento (ex: Desenvolvimento, Staging, Produção). Do ponto de vista do desenvolvedor, tudo — dados e código — reside dentro dos limites do namespace ao qual ele está conectado. Cada processo de aplicação IRIS roda em um namespace. Se você deseja acessar dados/código em outro namespace, precisa alterá-lo explicitamente.
Quando você instala o DBMS InterSystems IRIS, os seguintes namespaces são configurados automaticamente:
- %SYS
- USER
Mapeando a Lógica para a Física
O link entre um Namespace e um Banco de Dados é estabelecido através de um Mapeamento. Cada Namespace possui um conjunto definido de mapeamentos que especificam qual banco de dados físico (ou bancos) deve ser usado para armazenar seus elementos.
Por exemplo, temos vários bancos de dados:
- Clients – contém dados sobre clientes
- Finances – contém dados financeiros que permitem trabalhar tanto com clientes quanto com fornecedores
- Vendors – contém dados sobre fornecedores
e dois namespaces:
- Billing – possui mapeamento para clients e parte ou todas as informações de finances, permitindo que as aplicações que trabalham com este namespace obtenham todas as informações necessárias para lidar com clientes
- Purchasing – possui mapeamento para vendors e parte ou todas as informações de finances, permitindo que as aplicações que trabalham com este namespace obtenham todas as informações necessárias para lidar com fornecedores
.png)
Ao mesmo tempo, cada namespace possui um banco de dados padrão para dados e código.
Neste exemplo, poderia ser:
.png)
Você define qual banco de dados deve ser o padrão para o namespace quando você cria um namespace (System > Configuration > Namespaces > New Namespace):

O banco de dados para armazenamento temporário será o IRISTEMP por padrão.
O banco de dados para Globals armazena dados, enquanto o banco de dados para Routines armazena código e descrições de classes.
Se você deseja adicionar mais mapeamentos de dados para outros bancos de dados, vá em System > Configuration > Namespaces > (Escolha o namespace) > Global Mappings > New e adicione um novo mapeamento:

Como você pode ver, é possível configurar o acesso em detalhes minuciosos – incluindo os subscripts (subscritos) de globals específicas.
O mesmo pode ser feito para mapeamentos de Rotinas (Routine mappings).
Além dos mapeamentos definidos pelo usuário, também existem mapeamentos de sistema. Códigos e dados de nível de sistema (como definições de classes de sistema, rotinas e globals específicas de sistema começando com ^%) são mapeados para bancos de dados de sistema (ex: IRISLIB, IRISSYS). Isso garante que os dados da aplicação não interfiram nos componentes principais do sistema.
Ao separar o Namespace lógico do Banco de Dados físico, e ao utilizar mapeamentos, você ganha controle refinado sobre a localização dos dados, segurança e performance.