Encontrar

Artigo
· Maio 8 4min de leitura

Considerações ao migrar de Oracle, MSSQL etc para o IRIS

Migrar de Oracle, MSSQL ou outros sistemas de banco de dados puramente relacionais para um InterSystems IRIS multimodel é uma decisão estratégica que requer planejamento e execução cuidadosos. Embora essa transição ofereça benefícios significativos, incluindo desempenho aprimorado, escalabilidade e suporte para arquiteturas modernas, ela também apresenta desafios. Neste artigo, destacarei algumas das considerações relacionadas à codificação para garantir uma migração bem-sucedida. Deixarei tudo o que está conectado a uma migração real de estruturas e dados fora do escopo deste artigo.

Primeiramente, ao considerar migrar para um sistema de banco de dados diferente, você precisa entender sua lógica de negócios, seja ela do lado da aplicação (servidor de aplicação) ou do servidor de banco de dados. Basicamente, onde você tem suas instruções SQL que potencialmente precisará reescrever?

Quando a lógica da sua aplicação depende fortemente de SQL executado diretamente no código da aplicação (em vez de dentro de stored procedures ou triggers no banco de dados), migrar de um banco de dados relacional para o InterSystems IRIS requer um exame cuidadoso das suas instruções SQL. Vamos analisar alguns dos fatores mais importantes nos quais você precisa pensar.

  1. Diferenças de dialeto SQL. O IRIS SQL oferece suporte ao padrão SQL-92. Isso não significa que alguns recursos mais modernos não estejam implementados. Significa apenas que você precisa verificar previamente. Por exemplo, as funções de janela apareceram no SQL:2003, mas você ainda pode escrevê-las no IRIS:
--window function
select id, rating
  from (select a.id, 
               r.rating, 
               avg(r.rating) over () as avg_rating 
          from SQLUSER.Actor a join SQLUser.Review r on a.id = r.Reviews) as sub 
 where rating > avg_rating

Ao mesmo tempo, novos tipos de dados complexos, como XML, JSON, Arrays e tipos de dados geográficos, não são suportados. Então, a seguinte consulta:

SELECT a.id, 
       a.firstname, 
       ARRAY_AGG(r.rating) AS ratings 
  FROM SQLUSER.Actor a LEFT JOIN SQLUser.Review r ON a.id = r.Reviews 
GROUP BY  a.firstname

retornará um erro: ERROR #5540: SQLCODE: -359 Message: User defined SQL function 'SQLUSER.ARRAY_AGG' does not exist

Mas não é o fim do mundo. Existem muitas funções integradas que permitirão que você reescreva as consultas para obter o resultado esperado.

2. Funções integradas. Diferentes SGBDs (Sistemas de Gerenciamento de Banco de Dados) possuem diferentes funções integradas. Portanto, você precisa entender como elas correspondem às disponíveis no IRIS. Aqui estão vários exemplos do que estou falando, funções usadas no Oracle e seus equivalentes no IRIS:

Oracle IRIS
NVL ISNULL(field, default_value)
substr $extract(field, start_pos, end_pos)
instr $find(field, text_to_find)
concat {fn CONCAT(string1,string2)}

Quando sua lógica SQL primária reside dentro de um banco de dados (por exemplo, stored procedures, triggers, views), migrar para o InterSystems IRIS requer uma abordagem diferente. Aqui estão algumas das considerações:

  1. Migração de Objetos de Banco de Dados
    1. Todas as Stored Procedures precisam ser reescritas usando ObjectScript. Este também pode ser um bom momento para mudar para o modelo de objetos, já que você obterá uma tabela de qualquer maneira ao criar uma classe. No entanto, trabalhar com classes permitirá que você escreva métodos (que podem ser chamados como stored procedures) e use todo o poder do paradigma orientado a objetos.
    2. Triggers, Índices e Views são todos suportados pelo IRIS. Você pode até deixar suas Views como estão se as colunas da tabela permanecerem as mesmas, caso não usem nenhuma das funções/sintaxes não suportadas (veja o ponto anterior).
  2. A Migração de Definições também é significativa e pode apresentar alguns desafios. Primeiro, você deve corresponder cuidadosamente os tipos de dados do seu DB anterior ao IRIS, especialmente se estiver usando novos tipos complexos. Além disso, tendo mais flexibilidade com os índices, você pode querer redefini-los de forma diferente.

Aqui estão algumas coisas que você precisa considerar ao decidir migrar para o InterSystems IRIS a partir de um banco de dados relacional diferente. É uma decisão estratégica que pode desbloquear benefícios significativos, incluindo escalabilidade, desempenho e eficiência aprimorados. No entanto, um planejamento cuidadoso é crucial para garantir uma transição perfeita e para abordar as necessidades de compatibilidade, transformação de dados e refatoração de aplicativos.

Discussão (0)1
Entre ou crie uma conta para continuar
Pergunta
· Maio 8

Configurar o Vscode para acessar INtersystems Iris.

Tem algum tutorial  de configuração o vscode para acessar o Intersystems Iris, permitindo  a edição e  compilação de rotinas em determinado Namespace.

Onde posso pesquisar, estamos  verificando migrando da versão 2021.2  que ainda tem o Studio, para a mais rescente que não tem mais o Studio.

3 Comments
Discussão (3)3
Entre ou crie uma conta para continuar
Pergunta
· Maio 8

Using assign in a routing rule using XML

I'm trying to use the assign option within a ruleset. I can trace the value with no issues but when I try to assign the same value to a variable of Namespace I get an error.
Ideally I would like to use a variable instead of repeating the Piece repeatedly throughout the rules.

Ruleset


And this is the error that I am getting.

ERROR <Ens>ErrException: <PROPERTY DOES NOT EXIST>zevaluateRuleDefinition+14^SFT.RoutingRules.AlertManCreationRule.1 *Namespace,Ens.Alerting.Context.CreateAlert -- logged as '-' number - @' set pContext.Namespace=##class(Ens.Rule.FunctionSet).Piece((pContext.AlertRequest.SourceConfigName),("|"))'

Can someone advise on where and how I can add that Namespace property so that I can assign it a value? Or have I got the wrong idea of the use of assign.

Thank you.

4 Comments
Discussão (4)3
Entre ou crie uma conta para continuar
Pergunta
· Maio 8

How to delete table column with its data with SQL command. I need the exact syntax of the command

I have a table in the development and want to erase data from certain columns. There is info in the docs but not for human

This piece of code does not work

ALTER TABLE table DROP COLUMN column %DELDATA
3 Comments
Discussão (3)3
Entre ou crie uma conta para continuar
Anúncio
· Maio 8

Hear from Our Community: Why You Should Join READY 2025

Our community is speaking — and you're invited to the READY 2025!
Members of the InterSystems Developer Community are getting Ready — and they’ve recorded short video messages just for you.

Find out why InterSystems READY 2025 is a must-attend event, what they're most excited about, and what makes this summit special — straight from the voices of our engineers, developers, tech advocates, and Community moderators.

▶️ Watch their stories. Get inspired. Join us in-person.

Kicking things off, hear from:

🗣  @Tom WoodfinDirector of Development, Data Platforms, InterSystems
🗣  @Benjamin De Boe, Manager of Analytics Product Management, InterSystems
🗣  @Thomas Dyar, Product Manager - Machine Learning, InterSystems

 

  

Stay tuned for more video invitations!


If you wish to spread the excitement about InterSystems Ready 2025 and share with the rest of the Community why you look forward to participating in the event, don't feel shy to post links to your own videos in the comments to this announcement. This way, we will count down the days to the event together!

In any case, register for InterSystems Ready 2025 to meet fellow developers, discover the latest updates, and get inspired by real-world tech stories powered by InterSystems. 

We hope to see you there!

12 Comments
Discussão (12)1
Entre ou crie uma conta para continuar