Um pouco sobre a história dos bancos de dados – Parte II

Os anos 80 foram realmente incríveis, não?

Na primeira parte falamos sobre as origens dos bancos de dados, passando pelas décadas de 60 e 70. Agora vamos continuar nossa saga pelos anos 80 e 90.

dBase

Na década de 80, com o lançamento do IBM PC, os microcomputadores deixam de ser brinquedos e entram em cena como uma alternativa de baixo custo para a informatização de empresas. Assim, surge ainda em 1979 o dBASE. Longe de ter a sofisticação dos bancos de dados relacionais, eles atenderam bem às demandas menores e tiveram muitas outras iniciativas baseadas nele como o Clipper, o FoxPro e toda uma família de clones conhecida como xBase.

Teradata

Também em 1979, foi lançado o Teradata, um banco de dados que praticamente criou o conceito de DataWarehouse. O Teradata era vendido como um banco de dados integrado com o hardware e utiliza a arquitetura de cluster do tipo “Shared Nothing” para escalar sua capacidade horizontalmente. Em 2011, o Teradata incorpora capacidades de Big Data com recursos de MapReduce por exemplo.

O padrão SQL

Na década de 90, os bancos de dados relacionais passam a povoar os microcomputadores em Unix e Windows também. Nesta época, os bancos de dados no estilo dBase começam a perder popularidade, enquanto os bancos de dados relacionais passam a dominar o mercado. O padrão SQL criado pela IBM é consolidado no ANSI SQL em 1986 e no padrão ISO SQL em 1987. Depois disso, várias versões do padrão ISO SQL são lançados: SQL-89, SQL-92, SQL-99, SQL-2003, SQL-2006, SQL-2008, SQL-2011 e SQL-2016. Nenhum banco de dados relacional incorpora plenamente todo o padrão, nem mesmo o SQL-99 é adotado plenamente, mas nos anos recentes é observado que um número maior de bancos de dados tem sido mais mais aderentes ao padrão.

Sybase

Em 1984, o Sybase é criado a partir da experiência com o Ingres. Em 1988, é feita uma parceria com a Microsoft para lançar uma versão do Sybase para o OS/2. Em 1993, a parceria com a Microsoft é desfeita e a Microsoft passa a vender a sua própria versão para o Windows, o MS SQL Server. Em 1996, o nome do banco de dados é trocado para ” Adaptive Server Enterprise” e em 2010 a SAP compra o Sybase. O Sybase teve grande destaque na década de 90 e voltou a se destacar com a aquisição pela SAP que tem utilizado o Sybase em seu ERP.

MS SQL Server

As primeiras versões do SQL Server nada mais eram que versões do Sybase portadas para o OS/2, um sistema operacional desenvolvido pela IBM e Microsoft para substituir o Windows, que acabou não vingando. Depois vieram as versões para o Windows NT. Com o rompimento com a Sybase em 1996, o MS SQL Server 6.0 foi a primeira versão lançada sem a mão da Sybase. Nas próximas versões, o código original passa a ser gradualmente reescrito até que no SQL Server 2005, o código original do Sybase já havia sido quase totalmente substituído. O SQL Server cresceu junto com a popularidade das versões do Windows para servidores se tornando o 3º maior banco de dados, logo atrás do Oracle e do MySQL. Recentemente a Microsoft anunciou que as novas versões do MS SQL Server irão rodar também em Linux, algo impensável nos anos 2000, uma vez que a Microsoft foi uma grande opositora ao Linux no passado. O sucesso da Azure, serviço de nuvem da Microsoft também tem ajudado a alavancar o SQL Server no mercado.

PostgreSQL

Após sair da universidade de Berkeley em 1982 para tentar comercializar uma versão proprietária do Ingres, o Sr. Michael Stonebraker volta à universidade em 1985 para criar uma versão “post-ingres”. Ele queria reescrever o Ingres do zero, procurando soluções para novos problemas encontrados nos bancos de dados da década de 80. Assim em 1986, nasceu o Postgres, com várias características novas, com destaque para a flexibilidade e capacidade de extensão. Em 1989, foi lançada a primeira versão do Postgres que continuou a ser desenvolvido em Berkeley até 1994, quando a universidade de Berkeley publica o código fonte na internet utilizando a licença livre BSD. O Sr. Michael Stonebraker sai novamente de Berkeley e cria o Illustra, uma versão proprietária do Postgres que em 1997 é comprada pela Informix, que por sua vez foi comprada pela IBM em 2001.

Em 1994, dois alunos graduados em Berkeley adicionam a linguagem SQL ao Postgres que passa a ser chamado depois de PostgreSQL (embora ainda seja oficialmente aceito o nome anterior, Postgres). A Partir de 1996, ele passa a ser mantido por uma comunidade de desenvolvedores independentes conhecida como PGDG ou PostgreSQL Global Development Group. Devido ao tipo de licenciamento do Postgres, dezenas de versões proprietárias foram criadas com o tempo, mas a versão livre mantida pelo PGDG continua sendo a mais utilizada, sendo hoje o 4º maior banco de dados.

Arquitetura Client/Server

Até meados da década de 80, a maior parte das aplicações e bancos de dados rodavam em um único computador, um mainframe ou um mini computador. Com o desenvolvimento dos microcomputadores, surgiram cada vez mais aplicações onde o banco de dados residia num computador de porte maior (como um UNIX ou depois um Windows Server) e a aplicação era distribuída em vários microcomputadores. Os bancos de dados relacionais, ao contrário do dBase, eram bastante eficientes neste tipo de arquitetura. Aplicações em MS Visual Basic e Delphi se alastraram em grande volume. Nessa época, os 3 maiores bancos de dados do mercado eram o Oracle, Sybase e Informix.

MySQL

Em 1993, o Sr. David Hughes queria um banco de dados para uma aplicação de monitoramento de rede. Ele queria utilizar um banco de dados relacional com a linguagem SQL. Eles tentaram criar uma interface SQL para o Postgres, que na época ainda usava o QUEL e o chamaram de miniSQL ou mSQL. Mas o Postgres era muito complexo e pesado para a tarefa que eles tinham em mente. Então eles criaram uma versão mais simples de um banco de dados que implementava apenas uma parte do SQL, feito para funcionar em hardwares bastante simples. O mSQL teve grande importância nos primórdios da WWW pois era simples, leve e rápido. Ele foi muito utilizado entre 1994 e 1997, quando foi superado pelo MySQL.

O MySQL foi criado em 1994 com a primeira versão lançada em 1995. Foi baseado no mSQL e manteve a mesma API, permitindo uma fácil migração do mSQL para o MySQL. O MySQL, teve enorme impacto na internet. A arquitetura LAMP (Linux, Apache, MySQL e PHP), foi o motor da “Internet 2.0”. Com o tempo foram sendo incorporadas novas funcionalidades SQL no MySQL, além de outros Storage Engines,  característica peculiar do MySQL. Em 2008, a MySQL AB, companhia que criou o MySQL foi comprada pela SUN Microsystems. Em 2010, a Oracle compra a SUN. Após MySQL AB ser comprada pela SUN começaram a surgir novos forks do MySQL, movimento que se intensificou quando a Oracle comprou a SUN. Os forks mais conhecidos do MySQL hoje são o MariaDB, Percona Server e mais recentemente o Aurora da Amazon. A Oracle possui hoje os dois maiores bancos de dados do planeta, o Oracle Database e o MySQL.

O bancos de dados Objeto-Relacional

Na década de 90, as linguagens orientadas ao objeto como o Java da Sun começaram a fazer muito sucesso. Enquanto a Sun guiava o mercado rumo à internet com seus servidores Sparc e Sistema Operacional Solaris, outras linguagens como PHP, depois ASP, Python e Ruby espalharam a “Internet 2.0” ou a Internet dinâmica, com sites nas quais suas páginas são construídas dinamicamente com base nas informações dos seus bancos de dados. Apesar deste florescimento, os bancos de dados relacionais surgiram na era da programação estruturada. A ligação entre tabelas relacionais nos bancos de dados e objetos nas linguagens se tornou um problema que dificultou a vida dos programadores. Uma das soluções encontradas foi a criação de uma infinidade de ferramentas de ORM (Object Relational Mapping), como o famoso Hibernate. O problema das ferramentas de ORM é que elas funcionam muito bem para telas simples e operações CRUD, mas são um desastre em relatórios e transações complexas.
A outra solução encontrada foi a criação de bancos de dados que estendem a teoria relacional criada por Codd e criam formas mais naturais de armazenar objetos. O primeiro banco de dados a fazer isso foi o Postgres, já no seu projeto inicial em 1986. Tempos depois, os demais grandes bancos de dados relacionais também criaram extensões objeto-relacionais. Em 1999, é lançado o ISO SQL::1999 que define um padrão para estas extensões objeto-relacionais.

Houve também iniciativas mais ousadas criando bancos de dados puramente orientados a objetos. O banco de dados que teve maior sucesso nisso foi o InterSystems Caché. Com o tempo, os bancos de dados orientados ao objeto não fizeram tanto sucesso, seja por falta de uma teoria mais robusta para lhes darem sustentação, seja por falta de padronização ou por fim, por não apresentarem um desempenho semelhante aos bancos de dados relacionais. Ainda assim, em situações que manipulam dados complexos, eles encontraram um nicho de mercado.

Os testes de performance TPC

No começo da década de 90, os bancos de dados relacionais estavam com seu desenvolvimento a pleno vapor e passaram a estabelecer uma hegemonia global no mercado de bancos de dados. No entanto, cada fornecedor sempre alegou ser melhor que os demais. Os departamentos de marketing sempre foram muito criativos em estabelecer métricas muitas vezes obscuras nas quais o seu produto sempre aparece como líder de mercado. Ao fim e ao cabo, duas métricas poderiam ser facilmente verificáveis entre cada fornecedor: preço e desempenho.

Infelizmente, a história não é tão simples assim. Os custos de manutenção de um banco de dados podem envolver diferentes custos de licenciamento, suporte, compra de hardware, etc. Pior que isso é comparar o desempenho dos diferentes bancos de dados com um conjunto de operações idênticas que se assemelhem com a carga que um banco de dados recebe no dia-a-dia. Por fim, ainda existe um detalhe delicado: a licença de uso da maioria dos bancos de dados comerciais não permite que você publique o resultado de testes de performance sem a autorização do seu fornecedor. Tudo isso torna muito complicada a tarefa de escolher qual banco de dados suporta determinada carga e qual o custo para suportar esta carga.

O Transaction Processing Performance Council, ou simplesmente TPC, foi criado com a intenção resolver esta bagunça.  Criaram um teste padrão chamado TPC-A para medir a performance em bases OLTP imitando uma transação bancária. Depois, vieram novas versões com o TPC-B e o TPC-C. A última versão de testes em com carga OLTP foi o TPC-E, um teste mais complexo e completo para os dias atuais. Infelizmente, apenas encontramos testes do MS SQL Server com o TPC-E, portanto não é possível comparar estes testes com outros fornecedores. Também criaram testes para outros tipos de carga como sistemas web, o já aposentado TPC-W, e o TPC-H para datawarehouse, entre outros. Até o começo dos anos 2010 a maioria dos grandes bancos de dados comerciais possuíam testes publicados no site do TPC e eram um recurso valioso para comparar preço e performance de bancos de dados.

Um dos problemas do TPC era que os bancos de dados livres nunca publicaram um único teste no TPC. Os custos para realizar os testes são muito altos e não temos nenhum teste com MySQL, PostgreSQL ou Firebird por exemplo. Outro problema é que no começo em meados de 2010, alguns fornecedores como a Oracle deixaram de publicar testes no TPC. O último teste com Oracle disponível é um TPC-H de 2014 utilizando Oracle 11G. Portanto, hoje em dia, ficamos sem parâmetros de comparação para preço e desempenho. Acreditar nos dados publicados pelos fornecedores em geral é acreditar em contos de fada…

Continua na Parte III

Compartilhe

Você pode gostar

Sobre minha saída da Timbira

Há 14 anos, durante o PGConf.Brasil 2009, lá na UNICAMP em Campinas/SP, 4 pessoas se reuniram e idealizaram a criação da primeira empresa dedicada exclusivamente

Split brain

Já tem algum tempo que eu pensava em fazer isso e chegou a hora. Este blog vai se dividir em 2 partes a partir de

plugins premium WordPress