Banco de Dados

21 mai, 2008

Novas tendências em banco de dados – Parte 02

Publicidade

Olá pessoal. Na coluna desta semana vou continuar a apresentação de novas tendências na área de banco de dados. Como dito na primeira parte, algumas destas tendências são puramente teóricas e talvez nunca se tornem realidade, enquanto outras já podem ser observadas no dia-a-dia de quem trabalha com banco de dados.

Apesar de focar nas tendências tecnológicas voltadas para banco de dados é importante notar que os avanços de outras áreas também influenciam o mundo de banco de dados. Como exemplo podemos citar as diversas aplicações da chamada Web 2.0, os constantes avanços em hardware e as melhorias nos processos de desenvolvimento de sistemas.

Novos algoritmos de Data Mining e melhorias em B.I.

A área de B.I. (Bussiness Inteligence) vêm apresentando diversas novas tecnologias ao longo dos últimos anos. No que diz respeito à tendências, podemos esperar novas ferramentas de consultas de data warehouses que permitam visualizações animadas, utilização de mesclagem, combinação e agregações avançadas. Além disso também podemos esperar melhorias nas interfaces para que estas sejam mais intuitivas, claras e simples para o usuário final. Para deixar claro um exemplo prático disso destaco o uso de uma ferramenta de B.I. apresentada no vídeo apontado abaixo. Este vídeo, apresentado por Hans Rosling e já considerado clássico, mostra um provável protótipo de ferramenta de B.I. que contém diversas animações e que auxiliam a compreensão, interpretação e entendimento de dados.

A área de Data Mining é uma das áreas mais proeminentes para quem deseja trabalhar com dados e, por que não, banco de dados. Apesar de poucas empresas investirem em mineração de dados como deveriam , novos avanços vem sendo apresentados a cada dia. Por exemplo: a partir do crescente uso de redes sociais vistos nos últimos anos (devido a sites como o MySpace, FaceBook, Orkut, etc) dezenas de novos algoritmos de Data Mining foram apresentados com o objetivo de obter algum conhecimento a partir de dados provenientes de redes sociais.

Alguns exemplos são os algoritmos específicos para mineração de dados em grafos. Estes algoritmos permitem a minimização de custos, obtenção de padrões relevantes, descobertas de subestruturas freqüentes e análise de grafos densos. Para quem deseja obter mais informações sobre estes algoritmos recomendo o excelente livro chamado “Mining Graph Data”, editado por Diane J. Cook e Lawrence B. Holder e publicado pela editora Wiley-Intersicence em 2007. Outra referência online é o site visualcomplexity que apresenta diversas visualizações de grafos, como o apresentado na Figura 1.

Figura 1. Exemplo de visualização de dados de uma rede social.Figura 1. Exemplo de visualização de dados de uma rede social.

Outra visualização interessante sobre dados de redes sociais é chamada de Social Circles. Esta visualização apresenta o conceito de círculos socias, como aqueles que temos na nossa vida. Desta maneira fica mais facil identificar certos padrões no relacionamento. Com recursos interativos da Web 2.0, a Figura 2 apresenta um exemplo de uma rede social representada em um Social Circle. Podemos ver pela Figura 2 que quanto maior for a quantidade de amgios de um determinado usuário maior será o seu círculo. O link para o Social Circle se econtra no final deste artigo.

Figura 2. Demonstração do Social Circles com dados de redes socias.Figura 2. Demonstração do Social Circles com dados de redes socias.

Avanços em escalabilidade

Com o crescimento do número de usuários nas aplicações é cada vez mais comum a preocupação com a escalabilidade. Com sites que podem pular de 1.000 visitas mensais para 500.000 visitas diárias é preciso encontrar tecnologias que suportem este tipo de escalabilidade rapidamente.

As tendências mais atuais se voltam para a área de computação distribuída, que remete ao conceito de scale-out. Neste cenário são utilizados novos servidores para suprir a demanda. Outro conceito relacionado à escalabilidade é o scale-up, onde o hardware existente é incrementado para fornecer mais escalabilidade.

Na parte de banco de dados temos uma forte tendência na área de grid. O Oracle saiu na frente neste jogo, pois deste o 10g e o 11g que o Oracle está pronto suportar ambientes de grid. Não é a toa que a letra g no nome do produto significa grid. Em termos práticos, esta tecnologia ainda é restrita a poucos locais devido aos requisitos necessários para a sua implementação e a dificuldade técnica encontrada para montar e gerenciar este ambiente.

Há também uma forte tendência para a computação em nuvem (cloud computing) que também é chamada de computação elástica. Atualmente esta tendência é representada pelo serviço chamado Amazon Simple DB, que faz parte da estratégia Amazon EC2. Em poucas palavras este serviço permite uma escalabilidade fantástica ao custo proporcional ao que se utiliza. A idéia deste serviço é fornecer toda a infra-estrutura para que desenvolvedores se preocupem apenas com a aplicação, que pode ser construída a partir de várias tecnologias.

A Figura 3 apresenta um exemplo de como fazer a ponte entre o uma aplicação desenvolvida em Ruby on Rails e o Amazon Simple DB. Para obter informações sobre como integrar o Ruby on Rails ao Simple DB recomendo a apresentação chamada “Using Amazon SimpleDB with Rails”, disponibilizada em um endereço no final do artigo.

Figura 3. Comunicação entre Ruby on Rails e o Amazon SimpleDB.Figura 3. Comunicação entre Ruby on Rails e o Amazon SimpleDB.

Além destas tendências voltadas para a escalabilidade existem novas funcionalidades voltadas para alta disponibilidade em banco de dados. As principais tecnologias neste contexto envolvem clusters, virtualizações, uso de redes mesh e p2p.

Portabilidade e miniaturização de banco de dados

Da mesma maneira que existe uma forte tendência para escalabilidade e bancos de dados muito grandes (VLDB – Very Large Databases) também existe a tendência para a portabilidade e miniaturização de banco de dados.

Devido a novos dispositivos e plataformas, como tocadores de mp3, telefones celulares, video games e outros, cada vez mais existe a necessidade de armazenar e manipular dados diretamente nestes dispositivos. Como exemplo destaco o ótimo SQLite. O SQLite é um mini-banco de dados escrito em ANSI-C, possui o código aberto, é multi-plataforma, permite o uso de transações, pode ser executado com até 180K de memória e já é utilizado em diversos projetos profissionais. Este exemplo mostra que não é preciso possuir um hardware muito poderoso para utilizar um banco de dados. A Figura 4 apresenta um diagrama simples de arquitetura com os principais componentes do SQLite.

Figura 4. Diagrama contendo os componentes do SQLite.Figura 4. Diagrama contendo os componentes do SQLite.

Tendências no mercado de banco de dados

Com certeza as tendências relacionadas ao mercado de banco de dados são as mais complicadas de serem feitas devido à natureza volátil do mesmo. Mais aqui posso arriscar alguns palpites pessoais.

Com a compra da MySQL AB pela Sun Microsystems podemos esperar uma aproximação maior do MySQL em relação ao Java. Não estranharia ver uma suíte completa da Sun, com servidor Web, IDE, Servidor de Componentes junto com o banco de dados. Algumas notícias recentes indicam que o MySQL vai continuar a ser livre e aberto, o que pode indicar que ele vai cada vez mais ganhar mercado principalmente com as aplicações Web. A propósito, vale a pena mencionar que os sites YouTube, Flickr, Wikipedia, FotoLog e Facebook utilizam soluções MySQL.

Ainda na parte de software livre existe uma movimentação interessante em termos de compatibilidade entre bancos de dados e plataformas diferentes. Por exemplo: a algum tempo atrás foi anunciado a versão do Firebird que funcionada no modo Oracle, ou seja, uma versão do Firebird que é relativamente compatível com o Oracle. Esta versão recebeu o nome de Fyracle (Firebird + Oracle). Talvez esta idéia seja interessante para alguns pacotes de software como ERP ou CRM, mas ainda é cedo para dizer se teremos ou não outras iniciativas híbridas como esta.

Quanto à Microsoft, é clara a estratégia de continuar apenas na plataforma Windows, ainda que novos processadores estejam sendo suportados pelo sistema operacional. A nova versão do seu principal banco de dados, o SQL Server 2008, possui alguns avanços notáveis no que diz respeito ao gerenciamento e à melhorias no T-SQL. Além do mais o SQL Server 2008 reforça a integração com a plataforma .NET, sugerindo que os desenvolvedores desta plataforma assumam um papel mais ativo na parte de banco de dados.

Já a Oracle está cada vez mais se especializando em soluções robustas. As novas versões apresentam recursos de altíssima disponibilidade, como o grid e melhoras na solução de cluster. Quanto à estas tendências, é provável que a Oracle se consolide no mercado de grande empresas e comece a incomodar os outros players no mercado de médias empresas.

Hardware e Sistema Operacional

Como indicado no começo do artigo, de uma forma ou outra novas tendências na área de sistemas operacionais e hardware influenciam o banco de dados. Aqui vou apresentar algumas tendências que considero importantes.

Na parte de sistemas operacionais temos muitos avanços voltados para a especialização do servidor. Por exemplo, o Windows 2008 conta com uma nova tecnologia que permite customizar melhor os módulos do sistema operacional chamada Server Core. Com esta tecnologia é possível instalar apenas os componentes específicos de um servidor DHCP dedicado, por exemplo. Além do Server Core o Windows 2008 possui uma integração melhor com ambientes de virtualização graças à tecnologia Hyper-V, que pode trazer diversas vantagens para quem utiliza muito a virtualização.

Já no mundo Linux existem algumas tendências para servidores. Como está se tornando cada vez mais fácil montar uma distribuição é possível que aparecem distribuições específicas e pré-configuradas para servidores de banco de dados. Além disso existem várias melhorias no kernel que podem tornar mais robusta esta plataforma. Por exemplo: na última LCA (Linux.Conf.Au – uma das poucas conferências que o Linus Towards participa) houve uma discussão a respeito de como tratar drivers com problemas no kernel do Linux. Com o crescente número de drivers de código livre aparecendo é de se esperar que o kernel apresente alguma mudança no tratamento destes problemas, o que aumentará a confiabilidade e tolerância a falhas da plataforma.

Já na parte de hardware os avanços são vários. Deste tecnologias próprias do processador para suportar nativamente instruções de virtualização até melhorias nos storages SAS e SATA e nos ambientes SAN, DAS e NAS. Na parte de memória alguns apostam na utilização de cache específico em baterias e memórias ultra-rápidas de novas tecnologias. Existe até um conceito novo chamado memória violino (Violin Memory) para maximizar o desempenho e permitir servidores com memória de até 1 TB.

Indo um pouco mais adiante, já existe uma proposta para a criação de um chip SQL, ou seja, um chip responsável por otimizar a execução de instruções SQL, I/O e cache do servidor. Pode parecer ficção científica, mas já existem pesquisas nesta área e pode ser que futuramente tenhamos alguns avanços sigifnicativos.

Para finalizar, gostaria de sugerir um material para quem está estudando banco de dados e pensa em fazer alguma pesquisa na área ou precisa de algum tema para um trabalho de graduação. Este material é uma palestra com algumas dicas e conselhos para pesquisas acadêmica em banco de dados sugeridos pelo professor Carlos A. Heuser (UFRGS) apresentada em abril de 2005 mais ainda atual. Para fazer o download da palestra no formato PDF clique aqui.

Antes de terminar esta coluna sobre tendências gostaria apenas de citar um diálogo bem interessante que assisti em uma série de fição científica. Basta diser que o protagonista faz uma defesa a respeito do quão importante é a relação humana frente a vários avanços tecnológicos.

Todos somos exploradores, que procuram saber o que está mais à frente do horizonte, o que está no outro lado. E ainda assim, quanto mais experimentei, mais aprendi…que não importa quão longe viajemos, ou quão rápido cheguemos ali, os mais profundos descobrimentos… não estão necessariamente mais à frente… da próxima estrela. Eles estão dentro de nós…tecendo os fios que nos unem, a todos nós, uns aos outros.

Um grande abraço e até a próxima pessoal.

Referências:

Vídeo clássico de Hans Rosling na conferências TED:

http://www.youtube.com/watch?v=hVimVzgtD6w

visualcomplexity:

http://www.visualcomplexity.com/vc/

Social Circles:

http://www.marumushi.com/apps/socialcircles/socialcircles.cfm

Palestra “Using Amazon SimpleDB with Ruby on Rails”:

http://www.slideshare.net/martin.rehfeld/amazon-simple-db-07-feb-2008-rug-b

Informações sobre o Amazon Simple DB:

http://www.amazon.com/gp/browse.html?node=342335011

SQLite:

http://www.sqlite.org/

Fyracle:

http://www.janus-software.com/fb_fyracle.html

Memória Violino (Violin Memory):

http://www.violin-memory.com/

SQL Chip:

http://www.eweek.com/c/a/Database/SQL-Chip-Gives-MySQL-Data-Warehouse-Boost/