Oracle Database 12.2 - Multilingual Engine

Por Alex Zaballa O ACE director
Publicado en Febrero 2018

Revisado por Lorenzo Mota


No Oracle Open World de 2017 foi anunciada uma nova funcionalidade no banco de dados Oracle, o Multilingual Engine. Essa funcionalidade ainda não está liberada para utilização em produção, mas já é possível realizar alguns testes. Com ela é possível utilizar JavaScript dentro do banco de dados Oracle.

Apesar dessa funcionalidade ainda estar em Beta, é muito promissora, pois abre um leque enorme de linguagens que poderão ser incorporadas.

Para testar o Oracle Database Multilingual Engine, basta ir ao OTN e fazer o download de uma imagem de VM que já está preparada para isso.

Existem 2 opções para download, utilizar uma imagem de VM ou container do Docker.
 

Neste artigo, iremos utilizar o arquivo otn-0.2.7.ova, que pode ser importado no Oracle VirtualBox.


Após o download do arquivo, basta ir em File, Import Applicance e realizar o import dessa VM:



Existe um tutorial que pode ser acessado no Desktop com todos os passos e exemplos de como utilizar o JavaScript no banco de dados.


Para o teste, criamos dois arquivos, o helloworld.js e o helloworld.d.ts:

Para realizar o deploy, chamos o utilitário dbjs:

dbjs deploy helloworld.js -u scott -p tiger -c  localhost:1521/DBML

Lista dos objetos que foram criados no banco de dados pelo dbjs:

Após isso, podemos realizar a chamada da função em JavaScript dentro do banco de dados:


Agora vamos a um teste de performance de PL/SQL vs Javascript.
Neste artigo, iremos utilizar uma função que verifica se o valor de cada registro é numérico em uma tabela de 2 milhões de registros.

Primeiro vamos criar uma função em PL/SQL :


Agora vamos analisar o tempo:

Levou em torno de 3s para verificar os registros.



Em nosso segundo teste vamos utilizar a mesma função, mas INLINE, que é uma nova funcionalidade presente na versão 12c:

Neste segundo teste, levou um pouco mais de 1s.


Agora, vamos utilizar uma função em JavaScript.

Para o teste, criamos dois arquivos, o isNumeric.js e o isNumeric.d.ts:

Para realizar o deploy, chamos o utilitário dbjs:

dbjs deploy isNumeric.js -u scott -p tiger -c  localhost:1521/DBML

Executando o teste:

Neste terceiro teste, levou quase 2s.


Resultado do teste:

Função PL/SQL: 2,823 segundos
Função INLINE: 1,073 segundos
Função JS: 1,942 segundos

Obviamente que existe todo overhead de conversão de tipo de dados entre o banco de dados e o JavaScript, então esse teste não pode ser considerado um teste final de performance. Porém, nos mostra que a utilização de JavaScript dentro do banco de dados Oracle é muito promissora.


Alex Zaballa, formado em Análise de Sistemas, é especialista em Banco de Dados Oracle com sólidos conhecimentos em Servidores de Aplicação e Sistemas Operacionais; trabalha com Oracle há 17 anos, é Oracle ACE Director, certificado OCM Database 12c/MAA/11G/Cloud e conta com mais de 270 outras certificações em produtos da Oracle. Alex também é membro do Groupo de Usuários Oracle do Brasil (GUOB), fundador do Grupo de Usuários Oracle de Angola (GUOA) e membro do time OraWorld.

Este artigo foi revisto pela equipe de produtos Oracle e está em conformidade com as normas e práticas para o uso de produtos Oracle.