domingo, 24 de janeiro de 2010

Migrando MySQL para PostgreSQL

MySQL e PostgreSQL esses Banco de Dados você pode já ter lido vários artigos sobre esse assunto de migração, mas provavelmente conseguiu apenas fragmentos da informação necessária e não soube nem por onde começar estou certo? haha bom mas vamos pra luta e chego a hora de colocar tudo junto e na prática.

Você tem um projeto/sistema rodando no MySQL e de repente você descobre que você precisa migrar para PostgreSQL. E você se depara com um SQL diferente para cada plataforma, o MySQL trabalha com SQL e o PostgreSQL trabalha com PL/SQL e ai?, bom mas o detalhe que você não tem tempo para reescrever o código do zero e, logicamente, se você tiver tempo de reestruturar o seu projeto para PostgreSQL, o seu Data Base vai ficar mais organizado e, como um bom Data Base deve ser com relacionamento entre Tabelas, Trigger, Functions e etc.

Na verdade, pode haver boas razões para migrar um Data Base de MySQL para PostgreSQL a segurança, desenpenho ou mesmo por um previlégio que so o outro banco possua e não pela falta de tempo de rescrever as tabelas...

E ná verdade o Postgre você poderá vender o seu produto com total tranquilidade (PostgreSQL é licenciada BSD, o diferente de MySQL) e você pode encontrar artigos "Migrando MySQL para PostgreSQL" na web, mas.. você não vai encontrar nenhuma "Migrando PostgreSQL para MySQL" sinal que ele é bom.

PostgreSQL não pode ser apenas mais um péssimo banco porque o que eu sei e andei lendo que vários softwares pupaleres de nome no mercado tem a base de dados do Postgre vou citar uns Skype, Cisco, Juniper, IMDb, Pandora ou NOVA TV decidiram confiar nele, além de a Sun Microsystems tê-lo tornado como base de dados de escolha (e uma também que em janeiro de 2008 PostgreSQL comprou o MySQL UAHSUsuahs).

No PostgreSQL você ainda pode sentir um pouco como uma pessoa com segurança particular. Existem alguns grandes projetos que já reconheceram suas qualidades e que, embora o MySQL tenha sido sua primeira escolha de Banco de Dados, e eles estão demonstrando esforço para fazer tudo funcionar.

Mas Voltando...

Convertendo Base de Dados MySQL para PostgreSQL

Primeiramente vamos fazer Backup de nossa Data Base MySQL com o software mysqldump do próprio MySQL:


mysqldump --compatible=postgresql bancodedados > bkp-bancodedados.sql

Convertendo caracteres para o SQL ficar funcional no PostgreSQL:

sed "s/\\\'/\'\'/g" bkp-bancodedados.sql

Este processo vai demorar muito tempo porque o software "sed" varrerá todo o arquivo para fazer a conversão

Colocando as coisas para funcionar: importando para o PosgreSQL

psql -h server -d databasename -U username -W

Com isso você acabo de migrar a sua estrutura de Dados de MySQL para PostgreSQL

Alguns Likes do PostgreSQL

MySQL

Comunidade Brasileira de PostgreSQL

PostgreSQL: The world's most advanced open source database

PGCon Brasil

PostgreSQL Documentation

Migrações de Dados


Bom Migração de Dados presumo que você que esteja lendo ai tenha um pouco de conheçecimento da Tecnologia Básica de Banco de Dados. Então com o aumento de computadores e aplicativos nas ultimas décadas, foram criandas um grande números de diferentes tecnolígias de Gerenciamento de Dados. E essas Tecnológias vão de sistemas com arquivos de Textos até Sistemas Relacionais de Banco de Dados de grande porte indempendentemente do tipo de armazenamento de dados existentes, o que na época era a melhor solução hoje está desatualizando não é único motivo para que uma empresa decida migrar seus dados de um Sistema Gerencial de Bando de Dados Relacional (SGBDR) para o outro. Bom aqui para frente vou fazer vários exemplos de linguagens utilizando Migrações de Dados, aguardem os tópicos.

Uma conclusão bem rápida a vocês ficarem entendendo melhor então, para a migração de um Banco de Dados de uma tecnologia para outra existem diversos fatores que devem ser levados em consideração. Entre eles, os motivos para migrar e se a migração é a melhor solução. È necessário fazer uma análize antes completa do ambiente antigo quanto do novo para determinar se a migração pode ser feita com um risco razoável. Bom está ai a dica antes de tomar a decisão de migrar vários BACKUP's é isso ai.

Obrigado.

Raspagem de Dados



Olá, hoje vou falar sobre o que é uma Raspagem de Dados ai pessoal. Comentarei sobre o que se trata, alguns detalhes, e também um exemplo aprensentarei e algumas questões relevantes. Vamos lá....

O conceito de Raspagem de Dados, ou
Data Scrapping, não é novo. De acordo com a página americana da Wikipédia, desdeos primórdios da informática já havia a necessidade e soluções para se obter dados a partir da tela do computador, ou seja, obter os dados que estão em telas, relatórios e outros formatos que não são convencionais.

Com o surgimento da internet, cada vez mais dados são publicados on-line. Porém a maioria destes dados não é pronta para ser consumida, sob o ponto de vista de um
Banco de Dados, e ser transformada em informação relevante. Isso quer dizer que é preciso, de alguma maneira, obter os dados publicados nos seus mais variados formatos, limpá-los e armazená-los em um formato que possa ser facilmente manipulado.

Na área de banco de dados já existe uma sigla que resume este processo:
ETL. Um processo ETL (Extract Transform Load - Extração Transformação Carga) é adotado periodicamente ou esporadicamente e sua função é a extração de dados de diversos sistemas, a transformação desses dados conforme regras de negócios e, por fim, a transferência dos dados para um local de armazenamento. Geralmente utiliza-se ferramentas ETL que possuem recursos para a manipulação de diversos formatos de dados, como Arquivos Texto, PDF, HTML, XML, Dados Relacionais, DBF, etc. durante o processo ETL. Além disso, as ferramentas específicas para se implementar o processo ETL contam com mecanismos para modificar, complementar, consolidar, acrescentar, transformar, apagar e muitas outras formas de manipular dados antes de enviá-los ao seu destino final.

Devido à peculiaridade, à variação de formato e até à forma de disponibilizar os dados na internet, as ferramentas que fornecem suporte para implementar
ETL não são capazes de obter e manipular os dados on-line muito bem. Devido a isso, muitas pessoas começaram a chamar o processo de obtenção e manipulação de dados on-line de raspagem de dados e criar ferramentas para auxiliar a obtenção de dados. Já existem até livros que abordam este assunto focando em como implementar a Raspagem de Dados em linguagens específicas. Faz muito sentido pensar em ETL em um ambiente corporativo, pois algumas pesquisas recentes indicam que aproximadamente 80% do total de informação corporativa são armazenados em dados não estruturados.

Lembro-me de que uma das primeiras vezes em que li a respeito do termo Raspagens de Dados foi no Google durante e foi no ano passado ai em 2009 bem no fimzinho do ano. E andei pequeisando e vi vários e diversos projetos foram sendo publicados para obter dados visando ao ativismo digital, em especial para a área de fiscalização, ao acompanhamento político e também à obtenção de notícia e fotos. E de meu ponto de vista estes projetos sugerem que a obtenção de dados públicos pode facilitar e tornar transparente o acompanhamento de ações políticas, destino de recursos, causas e efeitos de atitudes, conscientização e outros fins. Contudo, é preciso separar a parte técnica envolvida na obtenção e na manipulação dos dados da parte que apresenta, interpreta e faz uso dos dados.

Focando na parte técnica e voltando mais ao assunto de origem, geralmente as ferramentas de Raspagem de Dados se baseiam aonde em que o dado está dentro de uma página HTML disponibilizada em um site. Neste cenário a Raspagem de Dados se resume na obtenção e na manipulação destes dados, geralmente por meio de um script que acessa o código fonte da(s) página(s) HTML, faz uma cópia local deste conteúdo, aplica alguma regra para a obtenção do dados em si (geralmente através de uma expressão regular ou instruções SQL) e joga os dados em uma tabela de um banco de dados. Apesar de existirem outras fontes de dados OnLine, como arquivos PDF, imagens, animações flash, podcasts, planilhas on-line e outros, o princípio das ferramentas que fazem Raspagem de Dsegue o mesmo conceito básico.

O uso de scripts é feito devido à facilidade e à quantidade de recursos que podem ser empregados na Raspagem de Dados. Geralmente este script contém uma chamada para uma ferramenta ou instrução que faz uma requisição web por meio de um POST ou GET, que são comandos do protocolo HTTP. Depois de obter a página, o script geralmente salva o seu conteúdo em um arquivo no disco ou faz um parser no mesmo, ou seja, lê o código da página e obtém o dado que é relevante. Devido à variedade de formatos, layouts, designs e outros fatores visuais encontrados nas páginas da web, geralmente os scritps de Raspagem de Dados são customizados para uma determinada fonte.
Como exemplo que na minha pesquisa encontrei e posso citar foi, o projeto Legisdados, um projeto para agregar software de extração de dados do Legislativo Brasileiro. A iniciativa partiu dos projetos CongressoAberto e ParlamentoAberto que, como fica claro pelos nomes, têm muito em comum. Para evitar repetição de esforços e desacoplar extração de dados de aplicações escritas usando esses dados, o projeto agrega scripts de Raspagem de Dados relativos ao poder Legislativo. A idéia é aumentar a colaboração entre os dois projetos e incentivar o surgimento de novas aplicações.

Atualmente já existem algumas ferramentas e produtos além de projetos independentes para a Raspagem de Dados. Destaco o Yahoo! Query Language (YQL), uma excelente linguagem que pode ser utilizada em conjunto com a plataforma Yahoo! Pipes. Além disso, existem diversas outras ferramentas que permitem a Raspagem de Dados, como vou apresentar os linkes na parte final do artigo. 

Uma rápida pesquisa por ferramentas de Screen Scraper em qualquer buscador vai retornar uma quantidade considerável de ferramentas para a Raspagem de Dados. Porém, por mais adequada que seja a ferramenta, sempre é preciso algum nível de customização ou, na maioria das vezes, algum esforço de programação. 
1. Entenda a fonte de dados

Antes de obter o dado on-line é preciso conhecer muito bem a fonte de dados. Isso quer dizer que é preciso navegar pela página, verificar se as informações são paginadas, colocadas em uma tabela, frame, área dinâmica ou controle, se requerem um login, se são disponibilizadas em um arquivo, possuem acesso via API, seguem algum padrão de apresentação e organização e outros detalhes relevantes. Um exemplo é da #cparty
entender o parâmetro da URL utilizada na parte de arquivos isso quer dizer que a cada requisição do tipo GET precisa passar um parâmetro da página que queira fazer a consulta. 

Este tipo de atitude é comum. Fazer Raspagem de Dados com certeza vai acabar envolvendo a manipulação de parâmetros de uma URL, principalmente quando não se deseja obter todos os dados de um vez só, ou seja, são necessários filtros. Novamente, aqui não há regra: cada site da web possui um jeito de apresentar informações, porém para evitar a sobrecarga geralmente algum tipo de paginação é feita, que pode apresentar a forma de links com o número da página, controles do tipo combo-box ou outros. Em alguns casos é preciso até fornecer parâmetros de pesquisa em um controle e forçar um POST para se chegar os dados ao invés de simplesmente fazer uma requisição do tipo GET.

Há casos mais complexos onde é preciso realizar um login antes ou até elaborar alguma maneira de se ler um dado que não está armazenado em texto, como dados colocados dentro de uma figura, animações flash ou arquivos PDFs. Nestas situações é preciso primeiro entender o que é necessário para se obter o dados para só depois pensar na tecnologia necessária para se extrair o dado e transformá-lo no formato adequado.
2. Planejar como será feita a obtenção bruta dos dados

Uma vez que é já se conhecem os detalhes da fonte de dados é hora de planejar como será planejada a obtenção dos dados. Isso quer dizer é preciso relacionar ferramentas, ambiente, plataforma, link de internet e outros recursos tecnológicos necessários para se obter os dados. Aqui também não há uma regra geral, pois cada situação pode requerer uma ferramenta específica. Por exemplo, se o dado está armazenado em uma imagem pode ser preciso utilizar uma biblioteca OCR ou algo similar para se obter o dado. Outra situação envolve animações em flash, estruturas de dados em JavaScript, aplicativos em Java, silverlight ou algo assim. Obter dados que estão dentro destas tecnologias pode ser complexo, porém não impossível.

Bom este exemplo eu decidi utilizar um script em SQL por conveniência, uma vez que tenho experiência nesta linguagem pois começei a estudar SQL e foram os meus primeiros passos em Linguagens de Banco de Dados. Bom então planejei montar um script que faria uma chamada a um executável no console com o objetivo de obter a página em um arquivo texto. Esta chamada foi colocada dentro de um loop onde criei dinamicamente o número da página na URL que seria passada como parâmetro para o aplicativo de código livre wget.exe para plataforma Windows. Este pequeno programa wget.exe recebe como parâmetro a URL da página e o arquivo texto onde será armazenado o código HTML. Após o loop eu joguei todas as páginas em um único arquivo HTML

Depois de capturar os dados eu teria um arquivo texto grande com todo o conteúdo das páginas. Apesar de conter os dados que eu queria, o arquivo também tinha muitas tags HTML que não me interessavam e que foram removidas em um passo posterior. E vamos lá.
3. Programar a captura dos dados

Uma vez que o planejamento estava pronto, bastou programar o script que montava o loop e fazer a chamada ao arquivo wget.exe. Neste ponto me deparei com alguns detalhes de implementação, como a necessidade de criar um arquivo .bat para poder chamar o arquivo wget.exe.

Geralmente a implementação da Raspagem de Dados envolve muitos detalhes específicos, como a utilização de
bibliotecas no script, a criação de nomeclaturas para os arquivos, a alocação de espaço em disco e outros detalhes técnicos. Vale a pena lembrar também que neste passo de programação é preciso efetuar testes e também considerar questões de desempenho e acesso aos dados. Algumas páginas da Web podem perceber que estão recebendo muitas requisições simultâneas de um mesmo endereço IP e bloquear o acesso. Para isso, faça testes que possam ajudar a identificar problemas quando o script da Raspagem for executado.

4. Verificar os dados capturados e realizar a limpeza

Após programar e executar o script que faz a Raspagem de Dados é preciso verificar se tudo ocorreu bem e se os dados brutos realmente foram capturados. Aqui não é preciso realizar uma verificação completa, e sim apenas checar se o processo automático realmente capturou os dados. 

Na maioria das situações a Raspagem de Dados não trará os dados já prontos e no formato adequado, a não ser que isso seja planejado desde o começo by design. Isso quer dizer que geralmente muito do que foi capturado precisa ser limpo e transformado em informação que realmente pode ser manipulada da maneira desejada.

Aqui temos algumas opções que envolvem trabalhar diretamente no que foi capturado ou jogar tudo em um local que forneça recursos para manipulação dados. Os Bancos de Dados atuais trabalham muito bem com a linguagem SQL, que é feita sob medida para tornar fácil a manipulação de dados. Porém existem diversas outras ferramentas que permitem o uso de expressões regulares para limpar os dados, em especial a linguagem Perl e vários comandos do Shell do Unix, que também conta com o conveniente mecanismo de redirecionamento de dados conhecido como pipes.

Na maioria das vezes é preciso eliminar dados irrelevantes que vieram junto com os dados desejados. Eu optei por carregar todo o arquivo com os dados capturados em uma tabela com uma única coluna contendo caracteres sem limites. A separação em linhas foi feita de acordo com os caracteres separadores de final de linhas (CR+LF). Aliás, quem trabalha com raspagem de dados em texto deve estar preparado para conhecer bem certos caracteres especiais, especialmente os caracteres de controle.

Já com os dados carregados em uma só tabela eu complementei o script com diversas instruções UPDATE e DELETE que eliminaram as linhas que eu não queria. Além disso, pude utilizar a instrução SELECT para prototipar as chamadas às funções que manipulam strings (SUBSTRING, REPLACE, etc) e montar as colunas com os dados no formato que eu precisava.
5. Carregar no banco de dados e adequar os dados ao formato modelado

Uma vez que já se tenha realizado a limpeza nos dados e outras manipulações, recomenda-se colocar os dados em um formato que seja adequado. Este passo muitas vezes requer a modelagem de uma ou mais tabelas em um Banco de Dados visando à integração com um sistema ou com uma ferramenta que possa fazer a visualização de dados de forma gráfica. Além disso, as ferramentas de relatórios ou de mineração de dados podem exigir um formato proprietário que pode ser facilmente gerado através de ferramentas de importação e exportação dos banco de dados.

Destaco que a modelagem é uma tarefa muito importante, principalmente quando se fala em integração com dados já existentes que estão separados em várias tabelas. Aqui é preciso tomar cuidado na ordem de inserção, pois relacionamentos de chave primária (PK) e chave estrangeira (FK) forçam a integridade relacional do Banco de Dados e requerem uma ordem específica de inserção, deleção e atualização dos dados.

No exemplo da que montei foi fácil criar uma tabela a partir da instrução SELECT que já separava corretamente as colunas da tabela. Fiz isso utilizando a cláusula INTO da instrução SELECT, pois no SQL Server esta cláusula permite a criação de uma tabela a partir do que a instrução SELECT retornar. Porém tive também que adequar os dados obtidos ao formato dos tipos de dados do SQL Server, o que deu certo trabalho. Foi especialmente complicado adequar a data da mensagem devido ao formato necessário para a inserção desta data no tipo de dados DATETIME do SQL Server.

Quanto todos os dados já estavam armazenados na tabela fiz questão de criar índices e também uma chave primária (PK) artificial para que a manipulação apresentasse uma performance razoável. Como utilizei o site ManyEyes para realizar algumas visualizações, tive que exportar os dados para outro arquivo texto já com as palavras separadas por cada dia do evento.

6. Deixar a solução pronta para ser utilizada novamente

Algumas Raspagens de Dados precisam ser periódicas, ou seja, devem ser executadas com alguma freqüência. Nestes casos vale a pena incrementar o script e montá-lo de forma que possa ser chamado várias vezes e em vários horários automaticamente.

Isso implica em planejamento de armazenamento, expurgo de dados, horário de execução e recursos adicionais como backup, garantia de largura de banda e backup. A forma de implementar a reutilização do script varia de plataforma para plataforma, porém a maioria dos Bancos de Dados e o próprio sistema operacional contêm ferramentas, funcionalidades e maneiras de se criar tarefas agendadas, cujo resultado de execução pode ser acompanhado posteriormente.

No meu exemplo não houve a necessidade de executar o script de Raspagem de Dados novamente, pois o que eu queria era obter apenas a quantidade de dados de um período fechado. Porém nem todas as soluções seguem esta idéia e podem precisar de extração de dados periódica.

Para terminar, destaco a questão do uso e da disponibilização dos dados. Ao contrário do que muitos podem pensar, nem tudo que é colocado na internet é público e pode ser utilizado como bem entender. Existem muitos dados que são publicados na internet, independente da sua origem/site, que estão protegidos por copyright ou outro modelo de licença. Infelizmente nem sempre é possível obter
informações sobre a licença do dados, porém, em caso de dúvida, é preciso adotar uma postura ética e perguntar para quem está disponibilizando a informação e como ela pode ser utilizada. 

Mas é isto ai acho que deu pra entender um pouco né.
Bom pessoal enquanto o governo não liberar seus dados seguindo então façam Raspagens de Dados dos portais governamentais.


Referências:

Ai nesses linkes vocês iram encontrar de tudo exemplo de Scripts e tudo mais programas para as coletas de Raspagens de Dados por URL.

Downloads

Aqui você encontra alguns linkes redirecionando de fontes seguras para donwloads de Banco de Dados.
  • Migrações de Banco - (Não estou disponibilizando aqui o links para donwloads porque detalhei eles melhores em outro tópico so para Migrações de Banco bom ai estão eles no link os Softwares para você instalar e Migrar os Dados);
  • PostgreSQL - (Alguns Links abaixo);
PostgreSQL - http://www.postgresql.org/ (The world's most advanced open source database)
  • FirebirdSQL - (Alguns links abaixo);
  • MySQL - (Alguns links abaixo);
MySQL - Aqui você encontra todas versões e para qualquer plataforma e qual tipo
MySQL Community Server - Aqui você irá encontrar documentações para serviços e suporte MySQL
MySQL Embedded Server - O MySQL Embedded Server é Database uma escolha mais popular para OEMs/ISVs que pretendem uma solução de bases de dados relacional fiável e de alta performance
MySQL Enterprise - MySQL Enterprise Server é a versão mais confiável, segura e atualizada do MySQL. De custo reduzido para implementação de E-commerce, Processamento de Transações On-Line (OLTP) e aplicações de Data Warehousing multi-terabyte
MySQL Cluster - MySQL Cluster combina o banco de dados open source mais popular com uma arquitetura de cluster tolerante à falhas que permite implementar aplicações de banco de dados de missão crítica com até 99.999% de disponibilidade
MySQL Workbench (GUI Tool) - Ferramenta de designer visual para bancos de dados
MySQL Proxy - Permite monitorar, analizar e transformar as comunicações
ConnectorsDriver - para desenvolvedores que permite aplicativos a acessarem bancos de dados em MySQL.
  • SQLite - (link do programa
SQLite3.6.13 - Banco de Bados compacto útil para testes e desenvolvimento. Projeto de código aberto e possui uma interface intuitiva. Opensource Código livre (Grátis).

sábado, 23 de janeiro de 2010

Novas Tendências na Área de Banco de Dados

Olá pessoal fiquei um bom tempo ausente mas hoje estou devolta e vou apresentar algumas Tendências na Area de Banco de Dados. Algumas das idéias que citarei já existem de alguma forma nos produtos atuais, outras estão encaminhando para a implementação e algumas são puramente idéias teóricas que talvez nunca vinguem. Por isso recomendo a leitura com cuidado, pois algumas destas tendências podem ser enquadradas na área de futurologia. Bom vamos lá né...

Técnicas de Controle de Concorrências

Os Bancos de Dados naturalmente precisam de alguma técnica para controlar a concorrência. Desde o início desta área a técnica que mais tem sido utilizada é o lock, presente tanto no SQL Server como o Oracle. Denominada técnica pessimista, o locking permite o acesso exclusivo de recursos a somente um usuário por vez.

Porém existem outras técnicas mais interessantes, que são muito utilizadas na área de sistemas colaborativos síncronos, como aplicações groupware. Um exemplo disso é o uso do MVCC (
Multi Version Concurrency Control) que já é utilizado no PostgreSQL. Nesta técnica otimista cada usuário consegue trabalhar com a sua versão do registro que posteriormente será sincronizada. 

Existem também outros algoritmos que talvez sejam utilizados em banco de dados, como o OT (Operational Transformations), dOPT (distribtuted Operational Transformation) e alguns algoritmos híbridos que utilizam técnicas otimistas e pessimistas. Estes algoritmos híbridos permite o uso de locks dinâmicos, múlti-granulares, hierárquicos e síncronos. Porém estas idéias estão implementadas apenas em protótipos descritos em papers da área acadêmica.

Melhoria da tecnologia de índices

Índices são objetos extremamente importantes para o Banco de Dados, pois eles são os responsáveis por acelerar o tempo de execução de instruções. Apesar de termos visto muita evolução nesta área, como índices para views, uso paralelo de índices e criação de índices a partir de expressões ou de apenas alguns valores de chaves, ainda existem muitas melhorias que podem ser implementadas.

Neste sentido as pesquisas na área tem se voltado para o modo de armazenamento dos índices. Em geral os bancos de dados atuais utilizam alguma variação da estrutura de árvores binária para armazenar e percorrer os valores dos índices. Porém uma tendência forte para esta tecnologia é utilizar outra forma de armazenamento dos valores das chaves. Vejam por exemplo o Oracle: você pode especificar vários tipos de armazenamento do índices que incluem índices BITMAP, InterMEDIA/Text Indexes e outros. Em geral esta tecnologia tem sido impulsionada pelos novos tipos de dados armazenado no banco que requerem tratamento especial, como dados geográficos e dados voltados para a área de biotecnologia.

Além da nova forma de armazenamento existe também a tendência de aproveitar ambientes multi-núcleo, clusterizados, replicados, virtuais e até em grid para armazenar, alterar e consultar índices. Mais uma vez, os bancos de dados atuais ainda estão apenas engatinhando nesta área.

Evolução da linguagem SQL

Muito tem-se falado a respeito da evolução da linguagem. Apesar de tudo que tenho ouvido a respeito de mecanismos de persistência, LINQ e Banco de Dados Relacionais Orientados e Objetos e outras inovações, a linguagem SQL continua firma e forte. Porém podemos classificar as tendências relacionadas à evolução da linguagem SQL em dois tipos: melhorias na linguagem em si e no modo que ela é utilizada.

A linguagem SQL, em geral, se baseia muito no padrão SQL, que vêm evoluindo. Nas últimas versões temos cada vez mais cláusulas, sintaxes, operadores e outras funcionalidades que são implementadas nos Bancos Dados. O Oracle, por exemplo, possui a sintaxe bem enxuta mas que pode ser estendida pelos seus vários pacotes PL/SQL. Já o SQL Server está se dirigindo para a utilização de outras linguagens dentro do banco, devido à integração com o Framework .NET, ao invés de modificar muito a linguagem SQL. Em geral, os Bancos de Dados de código livre apresentam a conformidade com o padrão e não possuem muita variação dele.

Aqui vale a pena citar algumas alternativas. Além da evolução do SQL, e de seus padrões irmãos voltados para OLAP, como o MDX (Multidimensional Expressions), temos outras idéias interessantes.

Como exemplo de outras idéias interessantes posso citar: 

  • O uso de instruções parecidas com o SQL voltadas para Data Mining;
  • A linguagem OSQL (Object Query Language);
  • O uso de Lógica Fuzzy diretamente em consultas;
  • Técnicas para a abreviação de joins e outras cláusulas que podem ser inferidas diretamente a partir do modelo de dados;
  • Consultas e instruções específicas para o tratamento de dados temporais; 
  • Extensões e linguagens específicas para o tratamento de dados hierárquicos, semi-estruturados, acesso a repositório de regras (como no PROLOG) e também instruções específicas para processo de ETL (Extract, Transform, Load).

Do ponto de vista de como o SQL é utilizada várias idéias novas tem aparecido ao longo dos dados. Geralmente esta tendência está relacionada com novas interfaces gráficas ou técnicas que evitam o uso direto de uma instrução SQL. Um exemplo disso é o uso do Processamento Natural de Linguagem (PNL), que permite ao usuário fazer uma perguta mais natural em vez de formatá-la em uma linguagem SQL. Outra idéia é apresentar interfaces gráficas que permitem montar a consulta SQL diretamente.

A partir deste ponto de vista a tendência á cada vez mais tornar transparente para o usuário a linguagem SQL, pois o usuário contará com uma interface gráfica mais amigável para realizar sua consulta.

Recuperação de Dados

O conceito de Recuperação de Dados apresenta vários desafios. A idéia aqui é permitir que a recuperação de linhas, tabelas e outros objetos do Banco de Dados seja como a metáfora da lixeira do Windows ou do Mac, tudo que foi jogado fora pode ser recuperado rapidamente com apenas alguns cliques.

Nesta área o Oracle está apresentando algumas idéias interessantes. A partir da versão 9i foi colocado um mecanismo chamado de Time Machine. Este mecanismo permite consultar e recuperar dados passados de uma tabela facilmente, como se houvesse uma outra tabela contendo os dados. Por exemplo, imaginem o seguinte cenário: "são 11:00 da manhã na empresa e um usuário apagou registros de um pedido por engano". Como existem várias tabelas relacionadas ao pedido é preciso voltar todos os dados, inclusive chaves primárias, estrangeiras, relacionamentos, cálculos efetuados por Triggers e outros, no menor tempo possível. É claro que existe o backup, mas esta solução provavelmente vai envolver uma quantidade considerável de esforço e recursos. 

Para estes cenários que o Oracle implementou o recurso Time Mach
ine, que permite voltar os dados de um terminado ponto no tempo. Mas existe muitos outros conceitos e meios por trás disso, como Snapshot Databases, Transaction Time Databases, Valid Time Database, Bitemporal Database e uma linguagem própria chamada TSQL2. Por exemplo, com a linguagem TSQL2 poderíamos utilizar instrução para indicar que desejamos os dados de um momento específico de uma determinada tabela. Os exemplos abaixo mostram como fazer isso utilizando os conceitos de schemas e operadores bitemporais do TSQL2. Estes exemplos apresentados na Listagem 1 não podem ser executados nos bancos de dados atuais, pois são apenas parte de um protótipo acadêmico proposto por pesquisadores da área.

-- Especificando o schema antes de executar a instrução
SET SCHEMA DATE "2010-01-01"
SELECT * FROM DOCTOR
WHERE Name = "Elder Stroparo"

-- Especificando o operador bitemporal apenas para a entidade DOCTOR
SELECT * FROM DOCTOR
WHERE SCHEMA (DOCTOR) PRECEEDS DATE "2007-06-01"
 
-- Especificando schema e transação junto com operadores bitemporais
SET SCHEMA VALID DATE "2008-01-01"
AND TRANSACTION DATE "2007-01-01"
SELECT * FROM DOCTOR
WHERE VALID(DOCTOR) OVERLAPS DATE "2005-01-07"
AND TRANSACTION (DOCTOR) OVERLAPS DATE "2006-01-01"
Listagem 1. Exemplos de instruções TSQL2

Com estas tendências terminamos a primeira parte do artigo que aborda algumas tendências da área de Banco de Dados. No próximo artigo apresentaria mais algumas idéias e tendências que talvez representem as inovações futuras nos
Bancos de Dados que utilizamos atualmente.

Links

Aqui você encontra links de Sites oficiais e Blogs parceiros, e sites com conteúdo da Área de Informática que eu irei recomendar.

FirebirdSQL - Site oficial;

Linguagem de Programação - Um Blog legal sobre Programação em Geral;

MySQL - Site oficial;

PostgreSQL Brasil - Site oficial;

SQL.org - Site oficial;

Contato

Seu Nome:
Seu Email: (Obrigatório)
Sua Mensagem: (Obrigatório)

Skype: ElderStroparo Twitter: Profile Telefone: (42) 9959 - 3727 / (42)  3422 - 9161

 Copyright © 2008-2010 All Right Reserved - Todos os Direitos Reservados Elder Stroparo