artigo SQL Magazine 04 - SQL – Passado, Presente e Futuro.

Veremos um pouco da história do SQL, além de discutir aspectos atuais e apontar algumas tendências.

É indiscutível a importância do SQL nos dias de hoje. A linguagem está presente nos mais variados sistemas de informação, podendo ser encontrada, por exemplo, em um aplicativo rodando sob um simples PDA ou em uma consulta complexa realizada sob um mainframe. Ou ainda, pode estar codificada em sistemas escritos com modernas linguagens de programação, como Java, ou mesmo em programas feitos em COBOL. Em se tratando de manipulação de dados, a SQL é quase onipresente. Veremos um pouco da sua história, além de discutir aspectos atuais e apontar algumas tendências.

Passado

Não podemos falar da história da linguagem sem uma referência ao modelo relacional. A razão disso é que grande parte do sucesso da SQL se deve ao fato de existir um modelo matemático formal que serviu de base para seu desenvolvimento. O pai deste modelo, o matemático Edgar Frank Codd, divulgou as primeiras idéias no final da década de 60 e, em junho de 1970, publicou o artigo “A Relational Model of Data for Large Shared Data Banks” na revista “Communications of the ACM”. Esse material é um marco na área de banco de dados e rendeu a Codd (falecido recentemente, em 18 de abril de 2003, aos 79 anos), em 1981, o prêmio Turing.

O cientista utilizou a álgebra relacional para expressar as ações realizadas nas tabelas (ou “relações”, na terminologia matemática). Operações, tais como seleção, projeção e junção, foram definidas de forma procedimental utilizando-se notação matemática.

Em 1973 a IBM deu início ao seu primeiro gerenciador de dados relacional, o System R. Este projeto, que se estendeu até 1979, provou a viabilidade do modelo matemático de Codd e foi o berço da SQL.

Em 1974 Don Chamberlin e outros pesquisadores do laboratório da IBM em San Jose, Califórnia, propuseram uma linguagem declarativa, que utilizava palavras comuns da língua inglesa, para expressar as operações realizadas no modelo relacional. Essa linguagem foi inicialmente chamada de SEQUEL (Structured English QUEry Language). Por motivos legais, a sigla teve que ser alterada para SQL. A pronúncia da nova sigla, em inglês, continuou sendo Sequel, apesar de a norma ANSI (American National Standards Institute) afirmar que a pronúncia correta é Ess-Que-Ell.

A natureza declarativa da linguagem SQL era uma novidade para a época. Os sistemas gerenciadores de banco de dados existentes utilizavam o modelo de dados hierárquico ou em rede. As linguagens de acesso a dados eram procedimentais, isto é, era necessário que o programador navegasse nas estruturas de dados, passo a passo, para obter os dados de interesse. Na SQL, o programador informa “o que” compõe o conjunto resultado, não se preocupando “como” esse resultado será obtido.

Apesar de todo o trabalho de pesquisa ter sido iniciado e desenvolvido dentro da IBM, o primeiro sistema gerenciador de banco de dados relacional (SGBDR) disponível comercialmente foi o Oracle, lançado em 1979 por uma empresa chamada Relational Software (hoje, Oracle Corporation). A entrada da IBM neste mercado só aconteceu em 1981, com o lançamento do SQL/DS, e sua consolidação veio apenas em 1983, com o DB2.

No início da década de 80 várias implementações de SGBDRs utilizavam SQL. Cada fornecedor passou a incluir extensões à linguagem conforme seu interesse. Logo se percebeu que era importante a padronização para permitir a portabilidade entre os diversos produtos disponíveis, fortalecendo, desta forma, o mercado deste segmento.

Em 1986 a ANSI publicou a primeira versão do padrão SQL, que ficou conhecido como SQL-86. No ano seguinte, o padrão foi publicado como uma norma internacional pela ISO (International Organization for Standardization). Em 1989, uma nova padronização foi publicada pela ISO incluindo recursos como integridade referencial, valores NULL e DEFAULT, check constraints e outros.

Em 1992 foi publicada a versão do padrão que ficou conhecida como SQL-92, ou SQL2, contendo 589 páginas - quase cinco vezes maior que seu antecessor, que tinha apenas 120 páginas. Várias novidades foram agregadas nesta versão, como novos tipos de dados (DATE e TIME), tabelas temporárias, catálogos, domínios, SQL Dinâmico, tabelas derivadas na cláusula FROM, múltiplos operadores de JOIN, entre outras. O curioso é que muitos desses recursos não foram implementados até hoje pelos fornecedores. Na SQL-92, foram definidos 3 níveis de conformidade: “entry level”, nível inicial, muito parecido com o SQL-89, “intermediate level” e “full level”, níveis mais completos.

Os pioneiros do System R se reuniram em maio de 1995 para relembrar os fatos ocorridos na década de 70 e comemorar os 20 anos da linguagem SQL. Detalhes do nascimento da SQL e comentários sobre a implementação dos primeiros gerenciadores de dados relacionais (não só o System R) estão transcritos nos registros desta reunião, que está disponível na Internet em http://www.mcjones.org/System_R/.

Presente

No início da década de 90, era grande o marketing das empresas que tentavam emplacar os sistemas gerenciadores de banco de dados puramente orientados a objeto. Algumas até anunciavam a morte da SQL: seria a vez da Object Query Language, ou OQL. As empresas deste segmento se reuniram e criaram a ODMG (Object Data Management Group), vinculada à OMG (Object Management Group), para padronizar a OQL.

Na outra vertente, o comitê de padronização da SQL trabalhava para incorporar características de orientação a objeto ao modelo relacional, gerando, em 1999, o padrão mais recente, que ficou conhecido como SQL3 (ISO/IEC 9075). Esta versão é significativamente maior que a anterior. Para termos uma idéia, basta olhar para o número de páginas de cada seção:

NOTA: Com o suporte a objetos complexos (vídeo, imagem e texto) definidos pela SQL3, os fornecedores passaram a classificar seus produtos como “sistemas gerenciadores de dados universais”. As extensões para objetos complexos que passaram a ser comercializadas como um produto à parte, em alguns casos sendo até fornecidas por terceiros, receberam diversos nomes, tais como “DB2 Extenders”, “Oracle Cartridges” e “DataBlades” no Informix (mais uma vez, o pessoal de marketing mostrando serviço).

As principais características incluídas foram:

Após 1999, outras partes foram agregadas ao padrão:

NOTA: As seções 6,7,8 estão obsoletas.

Hoje, o padrão SQL-99 possui mais de 3000 páginas e está sendo continuamente revisado e estendido. A ABNT (Associação Brasileira de Normas e Técnicas) é o representante do Brasil, no comitê da ISO, que trabalha na padronização da SQL. Vale notar que um brasileiro teve importante participação na criação do SQL3: Nelson Mattos, Ph.D. em ciência da computação e representante da IBM, que participou dos comitês ANSI e ISO e teve centenas de sugestões aceitas.

Chris Date (mais conhecido como C.J. Date) e Hugh Darwen, no livro "Foundation for Future Database Systems: The Third Manifesto” (2ª Edição, Addison Wesley), criticam duramente a forma como o atual padrão SQL implementa os conceitos de orientação a objeto. Entre outras coisas, eles argumentam que a idéia de classe da OO deve ser equiparada ao conceito de “domínio” do mundo relacional e não ao de “tabela”.

Segundo Date, as “algemas da compatibilidade com o legado” impedem que correções sejam feitas na linguagem SQL. Para exemplificar as idéias do Terceiro Manifesto, eles propuseram uma nova linguagem: “Tutorial D”. Na visão dos autores, esta linguagem relacional recepciona os conceitos de orientação a objeto sem causar danos ao modelo relacional. Atualmente não existe implementação da linguagem “Tutorial D”, mas vários centros de pesquisa estão trabalhando nesta linha.

Futuro

Apesar do nome (Structured Query Language), a SQL é hoje muito mais do que uma linguagem de consulta. É possível criar tabelas, índices e visões; definir regras de integridade; impor restrições de segurança; implementar resposta a eventos utilizando triggers; definir procedimentos e funções, além de muito outros recursos. A tendência é que a SQL continue se distanciando de seu propósito original, agregando cada vez mais funcionalidades.

A tecnologia XML, apesar do pouco tempo de vida, já é língua franca nos negócios. Veja o exemplo do Sistema de Pagamentos Brasileiro, coordenado pelo Banco Central e implementado por todas as instituições financeiras, que utiliza XML para definir mais de 500 tipos de mensagens que trafegam no sistema.

A exemplo do que ocorreu no início da década de 90, quando se falava que a SQL não seria páreo diante da OQL, nos dias atuais tem sido grande o investimento de algumas empresas tentando emplacar a ideia de bancos de dados baseados em XML puro. Afirmam que o modelo relacional é inadequado, pois o XML possui uma estrutura hierárquica, enquanto o SQL trabalha apenas com tabelas bidimensionais. A resposta dos fornecedores de banco de dados relacionais tem sido rápida. Antes mesmo da padronização através da SQL, vários deles já incluíram facilidades para processar XML.

A quarta geração da linguagem SQL deverá ser publicada ainda este ano e possivelmente será chamada de SQL-2003. A modificação mais relevante é a inclusão da seção “XML-related specifications (SQL/XML)". A padronização do uso de XML pelos SGBDs foi discutida em um consórcio informal de empresas do segmento, denominado SQLX Group (www.sqlx.org). O objetivo foi acelerar a definição do padrão, que já foi submetido à ISO.

Conclusão

Para o profissional de informática, independente da área de atuação, investir no aprendizado de SQL será sempre uma atitude saudável. Esse conhecimento irá ajudá-lo a trabalhar nas mais diversas plataformas, linguagens e aplicativos. A SQL é simples: com pouco tempo já é possível submeter consultas ao gerenciador de dados. O desenvolvedor com algum conhecimento de álgebra relacional terá maior facilidade em dominar a linguagem.

Os gerenciadores de dados orientados a objeto e os gerenciadores de dados XML representam muito pouco, se comparado aos gerenciadores de dados relacionais. Muito investimento foi feito por parte dos fornecedores e muitos sistemas já foram desenvolvidos utilizando essa tecnologia. No contexto atual, não há dúvidas de que a SQL ainda terá muita vida pela frente!

Artigos relacionados