Oracle


Este artigo apresenta e diferencia os dois tipos básicos de busca e recuperação de informação por nome ou descrição, a consulta e a pesquisa, e aborda técnicas e ferramentas típicas para cada caso, tomando como base banco de dados Oracle e plataforma de programação Java.

Quando se disponibiliza buscas para uma quantidade grande e diversificada de usuários, é cada vez mais frequente utilizar um nome como parâmetro de identificação para a busca, ao invés de um código.

Códigos são mais eficientes como critério de busca, porém pressupõem um grupo especializado de usuários que tenha familiaridade com estes códigos. Nome ou descrição textual é mais natural e intuitivo, por isso mais adequado para um público amplo e diversificado.

Contudo, é importante diferenciar os dois tipos de busca possíveis: a consulta e a pesquisa.

Consulta

Na consulta, o pressuposto é que o usuário sabe especificamente o que procura, e deve fornecer uma identificação o mais completa e precisa possível. Nessa situação, o objetivo da busca é ser restritiva de forma a trazer, idealmente, apenas o registro específico desejado.

Quando se trata de uma pessoa, instituição ou outro item que possua nome (ou razão social etc.) que pode ser composto (várias palavras), a identificação precisa textual é o nome completo.

Para busca por um nome completo, as ferramentas de facilidade devem apenas evitar pequenos equívocos e diferenças irrelevantes. Falando especificamente em dados armazenados em tabelas de banco de dados, em geral usa-se uma coluna ou índice de busca em que o nome completo tenha um tratamento de homogenização, como:

  • eliminar acento, cedilha e outros modificadores, convertendo para a letra simples correspondente;
  • converter todas as letras para maiúscula;
  • substituir caracteres especiais (apóstrofo, aspas etc.) por espaço em branco;
  • suprimir espaços em branco no início e no fim e espaços duplicados entre palavras.

Dependendo da situação, outros critérios mais amplos e flexíveis de homogenização podem ser usados, como:

  • eliminação de conectivos ou termos secundários como “de”, “da”, “e”, “Ltda” etc.;
  • conversão de abreviaturas e numerais para extenso como “Cia” para “Companhia”, “Ind” para “Indústria”, “15″ para “quinze” etc.

A regra geral, portanto, de uma consulta por nome completo é fazer uma comparação direta do tipo:
normalizar(nome_fornecido) =? tabela de normalizar(nome_armazenado)

Técnicas ou ferramentas típicas:

1) No banco de dados, é recomendável criar uma função (procedimento armazenado / stored procedure) para realizar as operações de normalização do nome, e disponibilizar para uso geral. Uma função SQL Oracle que pode ser usada para remover acentos é TRANSLATE(), como translate(nome, 'âàãáÁÂÀÃéêÉÊíÍóôõÓÔÕüúÜÚÇç', 'AAAAAAAAEEEEIIOOOOOOUUUUCC'). É importante lembrar que nomes estrangeiros podem ter acentuações não existentes na língua portuguesa, como “ñ”, “ä”, “è” e outros. Para maiúsculas usa-se UPPER(nome), e brancos antes e depois podem ser removidos com TRIM(nome) ou LTRIM(RTRIM(nome)), e no meio com repetidos REPLACE(nome, ‘__’, ‘_’) de 2 brancos por 1, ou no Oracle 10g usando REGEXP_REPLACE(nome, ‘[[:space:]][[:space:]]+’, ‘_’).

2) Igualmente, na linguagem de programação é recomendado criar um método para normalização e torná-lo disponível para as aplicações em uma biblioteca. Em Java e outras linguagens, expressões regulares são excelentes para substituição de acentos, caracteres especiais e espaços em branco repetidos. Veja este exemplo sobre Remover acentuação.

3) Criar uma coluna adicional na tabela, como o nome completo homogenizado, e indexar e utilizar essa coluna no momento da busca, gerando a coluna dinamicamente (via gatilho) na inserção ou atualização do nome.

4) Criar um índice por função (disponível no Oracle 9i em diante) aplicando no índice a função de normalização do nome. Isso dispensa a criação de uma coluna adicional como em (3), delegando isso para o índice.

Pesquisa

Diferente da consulta, o objetivo da pesquisa é maximizar a capacidade de busca. A busca não precisa ser exata (ou quase exata), mas sim permite imprecisões, erros ou falhas.

A pesquisa tipicamente traz uma lista ou conjunto de resultados possíveis, de acordo com os critérios de busca.

O usuário não necessariamente deve conhecer previamente o que especificamente procura, muitas vezes se quer descobrir informação (e não apenas recuperar informação, como no caso da consulta).

No caso de pesquisa por nome, o caso típico é o usuário não ser obrigado a conhecer o nome completo, podendo em geral omitir ou errar partes:

  • omitir uma ou mais palavras (de um nome composto);
  • errar a grafia correta/exata;
  • permitir também expressões com o uso de símbolos “curinga” ou de lacuna/substituição, que demarcam um ou mais caracteres indefinidos ou não conhecidos (? e * em expressões regulares, ou _ e % no Oracle).

Em alguns casos, pode-se ser ainda mais tolerante na combinação de palavras fornecidas, permitindo que a ordem exata de palavras seja alternada ou até retornar resultado em que parte das palavras ou expressões procuradas exista, mas outra parte não.

Técnicas e ferramentas típicas:

1) Combinar o uso das técnicas de homogenização usadas em consulta com o uso de máscaras como _ e % e pesquisa SQL com LIKE. Esta técnica, porém, é bastante ineficiente e limitada, por isso tipicamente inadequada para o uso mais geral.

2) Usar o recurso Oracle Text do banco de dados Oracle (9i em diante), que cria índices complexos e flexíveis de pesquisa ampla em texto (full text search), do tipo árvore de pesquisa, aceita operadores e expressões complexos de
pesquisa no estilo “Google”, e tem mais uma infinidade de recursos (veja referências a seguir).

3) Usar mecanismos de busca fonética e múltiplas combinações de palavras. Nesse sentido, um artigo muito interessante da revista Mundo Java de junho/2010 (edição 41) apresenta esse tipo de técnica e o demonstra utilizando uma biblioteca Java brasileira disponível como software livre (licença GPL), desenvolvida pelo INCOR (Instituto do Coração, SP) utilizando um algoritmo fornecido pela PROCEMPA (Companhia de Processamento de Dados do Município de Porto Alegre, RS) e aperfeiçoada pela empresa P2D.

Os fontes da reportagem estão disponíveis no site da revista em http://www.mundojava.com.br/NovoSite/codigos.shtml: BuscaFonetica.rar.
E a biblioteca GPL aperfeiçoada está disponível na P2D e a original no InCor.

Fonte: IT Web
Por Charles Babcock, InformationWeek EUA, 21/05/2010.

Secerno oferece firewalls para proteção externa para banco de dados.

A Oracle irá adquirir a Secerno, fornecedora de firewalls que trabalha para proteger sistemas de bancos de dados. O valor pago pela companhia de capita fechado sediada em Oxford (Inglaterra) não foi revela. A expectativa é de conclusão do negócio no final de junho.

A companhia já oferece uma série de soluções para proteção interna de seus sistemas. A Secerno acrescenta uma camada externa de proteção à solução, comentou Andrew Mendelsohn, vice-presidente-sênior de tecnologias para servidores de banco de dados.

O appliance de firewall Secerno DataWall inspeciona comandos e consultas nos bancos de dados para se certificar que não contêm comandos falsos ou representem alguma espécie de demanda inadequada.

Informação postada no site da empresa adquirida diz que a solução pode ser configurada para bloquear atividades com base no perfil de usuários, nome de domínio, aplicação ou origem de programa de comando.

Um relatório de dezembro de 2009 da Forrester Research diz que “o acesso inapropriado por funcionários sem privilégios continua a ser uma questão de segurança a ser considerada”.

A Oracle enxerga a compra como uma forma de reduzir riscos e incrementar níveis de segurança, pontos apontados como desafiadores no cenário atual. A tecnologia da companhia adquirida é tida como uma primeira linha de defesa.

Ontem falei da atualização de mercado do relatório de Quadrante Mágico do Gartner para ECM/WCM.

Hoje atualizo os quadrantes mágicos para as plataformas de inteligência de negócios (business intelligence – BI), desde meu artigo com a visão geral das ferramentas e do mercado de BI em 2008.

Magic Quadrant for Business Intelligence Platforms, 2009, por James Richardson, Kurt Schlegel, Rita L. Sallam e Bill Hostmann, 2009-01-16, Gartner. Reproduzido por MicroStrategy (PDF, requer registro gratuito); Oracle (Press: Oracle Placed in Leaders Quadrant in Latest Business Intelligence Platforms Magic Quadrant, 2009-01-22; Industry Analyst Reports sobre Oracle BI).

Fonte: Gartner, janeiro 2009.

Líderes:
IBM (Cognos), Oracle, SAS, Microsoft, SAP (Business Objects), Information Builders, Microstrategy.

Magic Quadrant for Corporate Performance Management Suites, 2009, por Neil Chandler, Nigel Rayner, John E. Van Decker e James Holincheck, 2009-04-30, Gartner. Reproduzido por Oracle (Press: Leading Analyst Firm Positions Oracle’s Hyperion in Leaders Quadrant for Corporate Performance Management Suites, 2009-01-07; Industry Analyst Reports sobre Oracle EPM).

Fonte: Gartner, abril 2009.

Líderes: Oracle (Hyperion), SAP (Business Objects), IBM (Cognos).

Passados alguns meses da aquisição da BEA Systems pela Oracle, começam a ser definidas as primeiras estratégias concretas para o futuro das linhas de produtos e tecnologias servidoras baseadas em Java EE, as famílias BEA WebLogic e AquaLogic e a pilha Oracle Fusion Middleware.

O anúncio da aquisição ocorreu em 16 de janeiro deste ano, mas o processo de aquisição só foi efetivamente completado em 29 de abril, quando ocorreu a aprovação pela Comissão Européia.

No post Blogging the Oracle Fusion Middleware Strategy Webcast, em 1º de julho no OTN TechBlog, Justin Kestelyn apresentou um resumo da apresentação do Presidente da Oracle Charles Phillips no Webcast sobre Oracle e BEA.

Para começar, todos os produtos BEA vão continuar sendo suportados sob os mesmos prazos divulgados pela BEA anteriormente à aquisição, e não haverá uma política de migração forçada. Esta abordagem é similar à dos ERPs Apps Unlimited one, que segundo Charles resultou em uma taxa de renovação/permanência de 96% daqueles produtos. O suporte existente para Fusion Middleware será estendido por mais um ano.

Alguns produtos são “Estratégicos” e serão imediatamente incorporados à pilha Fusion Middleware, como o conteiner JEE líder de mercado BEA WebLogic Server (OC4J vai continuar também, por enquanto). Alguns são “Continuar e Convergir”, que terão algum redesenho com gradual integração à pilha; deve ser o caso de TopLink/JPA, Coherence, SCA e outras tecnologias. E outros são produtos identificados pela própria BEA anteriormente à aquisição como “Manutenção” e terão suporte mantido por pelo menos quatro anos.

Mais alguns pontos resumidos por Justin Kestelyn (tradução livre):

O direcionamento técnico é para continuar modularizando o Servidor de Aplicação de acordo com o modelo OSGi (ver OSGi Alliance Specifications).

Ferramentas: JDeveloper vai continuar sendo o IDE estratégico da Oracle, mas o BEA Workshop baseado em Eclipse vai continuar disponível, e agora gratuito como o JDeveloper; eventualmente Workshop deve ser tornar parte do Oracle Eclipse Pack.

SOA: todos os componentes vão continuar hot-pluggable; a plataforma combinada oferece ferramentas, middleware, governança e componentes integrados. Oracle ESB e AquaLogic ESB convergirão para o novo Oracle Service Bus.

Governança SOA: AquaLogic Enterprise Rep se tornará o repositório de governança SOA da Oracle; Oracle Service Registry vai continuar como UDDI registry.

BPM: Oracle deve combinar o BPM em um único runtime baseado no modelo de metadados BPEL/BPMN.

Gerenciamento: Enterprise Management Packs serão estendido aos produtos BEA; BEA Guardian será integrado ao Oracle Enterprise Manager.

Finalmente, a Oracle expandiu a globalização do Oracle Technology Network (OTN), seu portal para usuários, profissionais e desenvolvedores nas tecnologias Oracle, para comunidades e idiomas além da língua inglesa.

Dia 19 foi lançada a OTN América Latina, com conteúdo em Português e em Espanhol.

É claro que a maior parte do conteúdo ainda está concentrada no portal matriz em inglês, otn.oracle.com. Também são em inglês os principais blogs de funcionários e parceiros Oracle — até o java2go.blogspot.com, do brasileiros Eduardo Rodrigues e Fábio Souza, consultores técnicos da Oracle Brasil.

Mas é uma grande iniciativa a criação de conteúdo técnico Oracle em português.

Ontem, 11 de julho, em um evento ao vivo na cidade de Nova York, a Oracle revelou o Oracle Database 11g — sua nova geração de sistema de gestão de informações corporativas que, segundo a empresa, ajudará os clientes a inovar mais rapidamente através de uma melhor visão de negócios.

Assim é descrito o anúncio de lançamento (em inglês) da nova versão 11g do sistema gerenciador de bancos de dados relacional (SGBDR/RDBMS) que se mantém número 1 do mercado mundial (47,1% do mercado; Gartner, 2006), desde quando há trinta anos o visionário Larry Ellison apostou no potencial da então recém criada linguagem SQL.

A nomenclatura da versão segue a linha da anterior, onde o “G” de 11g — assim como 10g — vem de grid computing, termo que faz referência à era da computação distribuída em alta escala, baseada em cluster (ou grade — grid) de computadores inter-conectados. A linhagem “G” da Oracle sucedeu a “I” das versões 8i e 9i, que aludia à era da internet.

O release de imprensa do Oracle Database 11g (em inglês) destaca as seguintes caracterísiticas da nova versão:

  • Real Application Testing Helps Reduce Time, Risk and Cost of Change
  • Increase Return On Investment for Disaster Recovery Solutions
  • Enhanced Information Lifecycle Management and Storage Management
  • Total Recall of Data Changes
  • Maximum Availability of Information
  • Oracle Fast Files
  • Faster XML
  • Transparent Encryption
  • Embedded OLAP Cubes
  • Connection Pooling and Query Result Caches
  • Enhanced Application Development
  • Enhanced Self-Management and Automation

Os outros produtos da Oracle Corporation devem acompanhar brevemente a nova geração 11g na numeração de suas versões. A ferramenta de desenvolvimento Java, Oracle JDeveloper, já tem disponível a versão 11g em Technology Preview (beta).

Para saber mais:

Na Oracle Technology Network (OTN) você pode acessar (requer registro gratuito) toda a documentação dos produtos Oracle, assim como baixar qualquer produto, seja gratuito ou como avaliação/teste para o desenvolvedor de um produto comercial. OTN inclui ainda uma infinidade de artigos, tutoriais, exemplos e fóruns.

Em matéria de documentação de produto, a Oracle não economiza. Vejamos o caso do servidor de banco de dados Oracle 10g. A documentação mais recente Oracle Database Online Documentation 10g Release 2 (10.2) é composta de nada menos que 344 livros!

Na aba Books está a lista completa de todos os livros que compõem a documentação. Todos podem ser visualizados em formato HTML (melhor para visualização on-line) ou PDF (melhor para visualização off-line, consulta e impressão). Para dar um pequeno exemplo apenas sobre a linguagem SQL no Oracle, temos os livros:

  • SQL Developer Installation Guide: guia de instalação do Oracle SQL Developer, ferramenta gráfica multi-plataforma (Java) gratuita da Oracle para manipulação de SQL;
  • SQL Developer User’s Guide: guia do usuário da ferramenta Oracle SQL Developer;
  • SQL Quick Reference: referência rápida dos comandos, funções, expressões, condições, cláusulas, tipos e outras construções do Oracle SQL (142 páginas);
  • SQL Reference: referência completa do Oracle SQL (1428 páginas!).

Se você decidisse ler uma página por dia só do livro de referência completa SQL, demoraria quatro anos para concluir. :-)

É certo que mesmo o mais experiente desenvolvedor ou DBA Oracle encontrará algumas coisas que nem imaginava existir. Com tanta informação, o mais prático deve ser consultar ou pesquisar o que se precisa sob demanda.

Passeando pela documentação, lembrei de uma dica:

Obter o valor máximo e o mínimo dentre as linhas de resultado de uma consulta SQL é um trabalho para as funções de grupo do SQL: MAX(expressão) e MIN(expressão). Usadas nos itens de retorno ou em condições de grupo HAVING, este tipo de função pode ser relativa a todas as linhas retornadas, ou a agrupamentos de linhas caso exista a condição GROUP BY.

Se você, contudo, precisa saber o máximo ou mínimo entre colunas ou expressões (numéricas, datas/tempo) em cada uma das linhas, aí deve utilizar as funções GREATEST(expr1, expr2…) ou LEAST(expr1, expr2…) respectivamente.

Para saber mais:

Sun apresenta JavaFX, Oracle traz prévia de JDeveloper e OC4J 11g e anuncia ADF Faces Rich Client livre, no evento JavaOne 2007, que ocorre de 8 a 11 de maio em San Francisco, EUA.

Sun

Dia 8 de maio, na conferência JavaOne 2007, a Sun apresentou prévia da tecnologia JavaFX, para a criação de conteúdo e aplicações ricas — Rich Internet Applications (RIA) — em ambiente Java (JRE) cliente, voltada tanto a dispositivos móveis e aparelhos eletrônicos quanto a desktop e navegadores web.

Há por enquanto dois componentes principais: JavaFX Script, uma linguagem de script radicalmente simples rodando em Java SE, destinada a desktop e web/RIA, e JavaFX Mobile, um sistema de software completo para dispositivos móveis.

JavaFX parece uma mistura de Applet, Flash e Javascript e com uma interface de programação amigável. A tecnologia JavaFX vem concorrer com outras tecnologias RIA como Adobe Flash e Microsoft Silverlight, além do AJAX que vem impulsionando a Web 2.0. O Flash da Adobe (que incorporou a Macromedia em 2005) é base para novas soluções como o emergente projeto Apollo e o IDE/framework Flex. Já o Microsoft Silverlight é codinome do Windows Presentation Foundation/Everywhere (WPF/E), em Beta.

Para saber mais (em inglês):

Oracle

Dia 9 também no JavaOne, a Oracle anunciou a disponibilidade do Oracle Development Kit for Spring, com suporte a Spring Framework 2.0 e integração com o IDE gratuito Oracle JDeveloper, e revelou a próxima geração da Arquitetura para o Oracle Fusion Middleware, sua infra-estrutura integrada e cada vez mais abrangente para computação em Grid, Service-Oriented Architecture (SOA), e Event-Driven Architecture (EDA).

O componente fundamental do Fusion Middleware é o Oracle Application Server. Seu release 10g recentemente superou IBM WebSphere e BEA WebLogic e foi o melhor na avaliação de servidores single-node em plataforma x86, nos Benchmarks SPECJAppServer2004.

A Oracle também anunciou novidades em ferramentas Java: Technical Preview do IDE Oracle JDeveloper 11g, do Oracle Containers for Java EE (OC4J) 11g e do framework de persistência Oracle TopLink 11g; e a doação dos componentes ADF Faces Rich Client para o Projeto Apache, mais uma parte do Oracle Application Development Framework (ADF) que se torna software livre.

OC4J e JDeveloper 11g trazem compatibilidade com Java EE 5 — incluindo suporte a EJB 3, JPA, JAX-WS, JSF 1.2 e WS-Policy (para Web services seguros) –, plataforma de persistência Oracle TopLink melhorada e integração com Spring e Java Transaction Service (JTS).

Oracle ADF Faces Rich Client inclui mais de 80 componentes ricos com suporte a AJAX e RIA baseados em JSF 1.2 e Java EE 5, além de melhor suporte a Web Services.

Para saber mais (em inglês):

A sumarização e agrupamento de resultados em consultas pivô sobre bancos de dados, em geral com a transposição de linhas em colunas no resultado, são necessidades com as quais um desenvolvedor SQL pode se deparar. Esta situação é mais comum quando se trabalha em aplicações analíticas sobre dados, típicas de consultas OLAP em modelos de Inteligência de Negócios (BI – Business Intelligence) e Armazém de Dados (DW – Data Warehouse).

Veja em meu artigo Consultas pivô e transposição de linhas em colunas um exemplo apresentando passos para realização desta tarefa. O texto inclui também referências adicionais que explicam e exemplificam soluções para esta necessidade, com foco na sintaxe e nos recursos SQL de Oracle.

Em 15 de dezembro, saiu a versão de produção do Oracle SQL Developer 1.1 (1.1.0.23.64), que pode ser obtido gratuitamente no portal de Tecnologia da Oracle (OTN). SQL Developer pode se conectar a qualquer banco de dados Oracle Server versão 9.2.0.1 (9i Release 2) e posterior. Escrito em Java, roda em Windows, Linux e Mac OS X.

Oracle SQL Developer é uma ferramenta gráfica gratuita de desenvolvimento para banco de dados Oracle. SQL Developer permite navegar por objetos da base de dados, executar comandos SQL e scripts SQL, editar e depurar instruções PL/SQL. Você pode também executar os relatórios fornecidos, ou criar e salvar os seus próprios. SQL Developer melhora produtividade e simplifica tarefas de desenvolvimento em banco de dados.

Para quem acha o Oracle SQL Developer muito pesado, uma alternativa de terceiros para Windows, igualmente gratuita, é o SQL Tools, uma ferramenta gráfica leve e robusta de desenvolvimento em banco de dados Oracle, desenvolvida por Aleksey Kochetov. Consiste em um poderoso editor de texto para código SQL e PL/SQL com coloração de sintaxe, console SQL para execução de DML e DDL, um navegador de objetos e diversos recursos utilitários.

Para saber mais:

Próxima Página »