Instituto Superior de Engenharia do Porto



Documentos relacionados
TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO. SISTEMAS DE GESTÃO DE BASE DE DADOS Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO

Desenvolvimento Cliente-Servidor 1

ESTUDO DE CASO WINDOWS VISTA

TECNOLOGIAS DE INFORMAÇÃO E COMUNICAÇÃO

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO

Noções de. Microsoft SQL Server. Microsoft SQL Server

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

Entendendo como funciona o NAT

Ferramentas de Modelação e Análise de Sistemas baseadas em Redes de Petri (RdP)

Sistemas Operacionais. Patrícia Megumi Matsumoto Luciana Maria Gregolin Dias

Serviço a Pedido ( On Demand ) da CA - Termos e Política de Manutenção Em vigor a partir de 1 de Setembro de 2010

Modelo Cascata ou Clássico

Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores

5. Métodos ágeis de desenvolvimento de software

Introdução a Banco de Dados

Acronis Servidor de Licença. Manual do Utilizador

Tecnologia PCI express. Introdução. Tecnologia PCI Express

Sistemas Operacionais Gerência de Dispositivos

Guia Rápido de Vodafone Conferencing

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X

Windows NT 4.0. Centro de Computação

Introdução aos Sistemas Operativos

Sistemas Operacionais

Comunicação de Dados de Autenticação e Credenciais de Acesso para Resposta ao Inquérito

Introdução aos Computadores

Persistência e Banco de Dados em Jogos Digitais

Virtualização e Consolidação de Centro de Dados O Caso da UTAD António Costa - acosta@utad.pt

Sistemas Distribuídos

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

Múltiplos Estágios processo com três estágios Inquérito de Satisfação Fase II

Mestrado em Segurança da Informação e Direito no Ciberespaço. Segurança da informação nas organizações Gestão de Configuração

Novidades no Q-flow 3.02

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Migração da Versão 4.0 para a Versão 4.1 do MSS. Versão 1.0 de Português

OFICIAL DA ORDEM MILITAR DE CRISTO MEDALHA DE EDUCAÇÃO FÍSICA E BONS SERVIÇOS. Circular n.º 029/2014 PORTAL FPT Abertura aos atletas

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo

A VISTA BACKSTAGE PRINCIPAIS OPÇÕES NO ECRÃ DE ACESSO

Consistem num conjunto de apontadores para instâncias especificas de cada relação.

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource Rev: 02

Introdução ao Modelos de Duas Camadas Cliente Servidor

Um Driver NDIS Para Interceptação de Datagramas IP

PRIMAVERA EXPRESS: Funcionalidades do Produto

Processos e Threads (partes I e II)

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

NetEye Guia de Instalação

2 Diagrama de Caso de Uso

Tarefa Orientada 2 Criar uma base de dados

Sistemas Operacionais. Conceitos de um Sistema Operacional

Tarefa Orientada 16 Vistas

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

Gestão do Risco e da Qualidade no Desenvolvimento de Software

Gestão dos Níveis de Serviço

P HC XL - Nem calcula o produto que temos para si...

Aplicação Prática de Lua para Web

Arquitetura de Banco de Dados

Sistemas Operacionais. Prof. André Y. Kusumoto

Programação 2ºSemestre MEEC /2011. Programação 2º Semestre 2010/2011 Enunciado do projecto

PLANEAMENTO DA INSTALAÇÃO DO WINDOWS SERVER 2003

Programação de Sistemas

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Integração de Sistemas Embebidos MECom :: 5º ano

ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET

O AMBIENTE DE TRABALHO DO WINDOWS

Figura 01 Kernel de um Sistema Operacional

Sistemas Operativos 2005/2006. Arquitectura Cliente-Servidor Aplicada A Uma Biblioteca. Paulo Alexandre Fonseca Ferreira Pedro Daniel da Cunha Mendes

ISEP. Instituto Superior de Engenharia do Porto. Análise de Sistemas Informáticos

Servidor de Dados. Sistemas de Informação Módulo 4

WINDOWS NT SERVER 4.0

A SÈTIMA. O nosso principal objectivo

Arquitetura de Rede de Computadores

Sistemas Operacionais

Soluções de Gestão de Clientes e Impressão Universal

Guia de Utilização. Acesso Universal


DESENVOLVER E GERIR COMPETÊNCIAS EM CONTEXTO DE MUDANÇA (Publicado na Revista Hotéis de Portugal Julho/Agosto 2004)

Curso Profissional de Técnico de Gestão e Programação de Sistemas Informáticos. Sistemas Operativos - 2º Ano

O Manual do Desktop Sharing. Brad Hards Tradução: Pedro Morais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

Consistência Eventual - Sistemas Distribuidos e Tolerância a Falhas

ENHANCED SERVER FAULT- TOLERANCE FOR IMPROVED USER EXPERIENCE. André Esteves nº3412 David Monteiro

Banco de Dados. Introdução. João Eduardo Ferreira Osvaldo Kotaro Takai. DCC-IME-USP

Alta Disponibilidade na IPBRICK

Prof. Marcelo Machado Cunha

Procedimentos para Reinstalação do Sisloc

Sistemas Operacionais

Suporte Técnico de Software HP

Introdução a Banco de Dados Aula 03. Prof. Silvestri

Programação de Sistemas

Programação de Sistemas

5.1 Exemplos de uso Mediante a instanciação de componentes específicos, o OiL pode ser configurado

Transcrição:

Instituto Superior de Engenharia do Porto Engenharia Informática Computadores e Sistemas Arquitectura de SQL Server 2000 por Pedro Miguel de Almeida Sousa orientador Eng. João Rocha -2001-

TABELA DE CONTEÚDOS Tabela de Conteúdos ii Lista de Figuras iv Prefácio 1 Agradecimentos 2 Introdução 3 1. Capítulo 4 1.1) Evolução do Microsoft SQL Server: 1989 a 2000 4 1.1.1) O início do SQL Server 4 1.1.2) O lançamento do SQL Server 6 1.1.3) O papel do OS/2 7 1.1.4) SQL Server 4.2 8 1.1.4.1) Lançamento do OS/2 2.0 adiado 8 1.1.4.2) Lançamento da versão 4.2 8 1.1.5) SQL Server para NT 9 1.1.6) O final do desenvolvimento conjunto 11 1.1.7) SQL Server 95 12 1.1.8) Nome de Código Sphinx 12 1.1.9) Finalmente o SQL Server 2000 14 2. Capítulo 16 2.1) A Arquitectura do SQL Server 2000 16 2.1.1) O motor do SQL Server 16 2.1.2) O Net-Library 17 2.1.3) Open Data Services 20 2.1.3.1) Buffers de input e output do ODS 21 2.1.3.2) As Net-Libraries por defeito do ODS 23 2.1.4) O Relational Engine e o Storage Engine 24 2.1.4.1) O Parser de comandos 25 2.1.4.2) O Optimizer 25 2.1.4.3) O SQL Manager 26 2.1.4.4) O Expression Manager 27 2.1.4.5) O Query Executor 28 2.1.4.6) Comunicações entre o relational engine e o storage engine 28 2.1.5) O Access Methods Manager 30 2.1.6) O Row Operations Manager e o Index Manager _ 30 2.1.6.1) O Row Operation Manager 31 2.1.6.2) O Index Manager 32 2.1.7) O Page Manager e o Text Manager 35 2.1.8) O Transaction Manager 36 Página ii

2.1.8.1) Uncommited Read 37 2.1.8.2) Commited Read 38 2.1.8.3) Repeatable Read 38 2.1.8.4) Serializable 39 2.1.9) O Lock Manager 40 2.1.10) Outros Gestores 41 2.2) A Gestão de Memória 41 2.2.1) O Buffer Manager e Memory Pools 42 2.2.2) Acesso a In-Memory Pages 43 2.2.3) Acesso a Free Pages (Lazywriter) 43 2.2.3.1) Manter páginas em cache permanentemente _ 45 2.2.4) Checkpoints 45 2.2.5) Acesso a Páginas utilizando o Buffer Manager 47 2.2.6) Questões Relacionadas com Grandes Quantidades de Memória 48 2.2.6.1) Read Ahead 49 2.2.6.2) Merry-Go-Round Scans 50 2.2.6.3) O Log Manager 51 2.3) Registo de Transacções e Recuperação 52 2.3.1) Locking e Recuperação 55 2.3.2) Páginas LSN e Recuperação 56 2.4) O Kernel do SQL Server e Interacção com o Sistema Operativo 57 2.4.1) Threading e Multiprocessamento Simétrico 58 2.4.2) O Worker Thread Pool 60 2.4.3) E/S de Disco no Windows NT/2000 62 3. Conclusão 63 Bibliografia 64 Página iii

LISTA DE FIGURAS Figura 1: Esquema Geral da Arquitectura 16 Figura 2: Arquitectura Net-Library do SQL Server 2000. 19 Figura 3: Um Nonclustered Index com bookmarks no nível folha. _ 33 Figura 4: Um Clustered Index com os dados no nível folha. 34 Figura 5: O Merry-Go-Round do SQL Server 2000 Enterprise Edition 51 Figura 6: Três fases de recuperação do SQL Server 55 Figura 7: Comparação do LSN para verificar o processamento da entrada do registo. 57 Figura 8: Design de múltiplas threads num único processo do SQL Server 60 Página iv

PREFÁCIO Ao longo da minha vida profissional e de estudante, tive contacto com vários sistemas SGBDR. No primeiro curso de informática que fiz, aprendi a trabalhar com dbase e comecei a compreender o modo de criação e estruturação de uma base de dados. O raciocínio e planeamento de uma base de dados é algo que obriga a um estudo profundo de um problema e constitui a base para a implementação de uma boa solução. Posteriormente, com o surgir do sistema operativo Windows, comecei a trabalhar com Microsoft Access, mas, apesar das diferenças para o dbase, ainda faltava algo. A utilização do minisql no meu projecto de Bacharelato veio acrescentar o SQL à minha lista de necessidades para um bom SGBDR. Até que, na cadeira de Bases de Dados 2 leccionada pelo Eng. Melo e Castro, conheci o SQL Server na sua versão 7 (beta). Finalmente tinha conhecido uma base de dados que me fornecia ferramentas e funcionalidades à medida do que eu esperava de um bom sistema SGBDR. Fui convidado, nesse mesmo ano, pelo Eng. Melo e Castro, para trabalhar num projecto desenvolvido pelo IDT Instituto para o Desenvolvimento Tecnológico, tendo como base o SQL Server 6.5. Foi nesse projecto que aprendi o que realmente é o SQL Server e a gostar ainda mais da linguagem SQL. No ano passado obtive uma bolsa de estudos para frequentar os cursos do percurso oficial Microsoft com vista a atingir o grau de Microsoft Certified Systems Engineering, que concluí com sucesso. Actualmente lecciono cursos desse mesmo percurso na área de Sistemas e pretendo obter as certificações em SQL Server 2000. Como gosto de conhecer as tecnologias com que trabalho a fundo, surgiu a ideia deste trabalho em Arquitectura de SQL Server 2000. Página 1

AGRADECIMENTOS Este projecto só foi possível com a ajuda do meu coordenador, o Eng. João Rocha, que tenho o prazer de ter aceite o meu convite para orientar pela segunda vez um trabalho meu. O facto de já nos conhecermos há alguns anos fez com que o entendimento entre ambos tenha sido mais fácil. Tenho a agradecer a liberdade de escolha e decisão que me deu desde início, quer para a escolha do tema, quer para a abordagem do mesmo. Sem dúvida que o Eng. Melo e Castro teve também um papel importante na escolha deste tema, uma vez que foi ele quem me ensinou as bases para aquilo que sei hoje em dia sobre o SQL Server. Ao Eng. Alexandre Bragança, por me ter esclarecido algumas dúvidas que tive ao longo do projecto. E também à TecniData e ao coordenador de Formação, Nuno Velho, pela ajuda a nível de recolha de informação e esclarecimento de dúvidas e a disponibilidade de máquina para fazer testes e experiências. Página 2

INTRODUÇÃO O objectivo deste trabalho é descrever quais os principais componentes do SQL Server 2000, as suas funcionalidades e interligação. Não se pretende uma descrição pormenorizada das suas ferramentas, nem da criação e manutenção de bases de dados, mas sim do que está por trás de tudo isso. Numa primeira fase teremos uma perspectiva histórica da evolução do SQL Server até aos nossos dias. Segue-se uma descrição dos seus componentes base e a sua interligação. Página 3

1. Capítulo 1.1) EVOLUÇÃO DO MICROSOFT SQL SERVER: 1989 A 2000 Em 1985, a Microsoft e a IBM anunciaram um acordo de desenvolvimento conjunto de longo termo de um sistema operativo e outros produtos de software. Este anuncio era o início do OS/2, o sucessor do sistema operativo Microsoft MS-DOS. O OS/2 seria um sistema operativo mais completo e robusto. Iria explorar os novos poderosos computadores pessoais baseados no processador Intel 80286. E iria permitir aplicações multitarefa, cada uma com o seu espaço de endereçamento de memória e cada em execução no safe ring 3 do esquema da Intel four-ring protection scheme do 80286. O OS/2 foi formalmente anunciado em Abril de 1987, com promessas de lançamento para o final desse mesmo ano (O OS/2 versão 1.0 foi lançado a 16 de Dezembro de 1987). Mas logo após a declaração conjunta, a IBM anunciou uma versão especial do OS/2 denominada OS/2 Extended Edition. Esta versão mais poderosa iria incluir de base o sistema operativo OS/2 mais um sistema SQL SGBDR chamado OS/2 Database Manager. O OS/2 Database Manager seria útil para pequenas aplicações e parcialmente compatível com o DB/2 da IBM e com o menos utilizado SQL/DS. 1.1.1) O início do SQL Server Em 1986, a Microsoft era uma empresa pequena e os seus produtos eram essencialmente focados em sistema desktop, sendo o MS-DOS o seu principal produto. Aplicações cliente/servidor não faziam parte do desenvolvimento da Microsoft. A gestão de dados estava no seu início e a maioria das pessoas tinha os dados nos seus PCs na folha de cálculo Lotus 1-2-3. O dbase da Ashton-Tate tinha também começado a ser popular. Embora existissem outros produtos, como o Paradox da Ansa Software, o dbase era claramente líder nos produtos de gestão de dados em PCs. Em 1986, a Microsoft não tinha nenhum produto de gestão de dados (Em 1992 atingiu um grande sucesso com o Access e o FoxPro). Página 4

A Microsoft virou-se para a Sybase como rampa de lançamento para a entrada no mercado de SGBDs. A primeira versão do DataServer ainda não tinha sido lançada, mas a sua pré-release tinha obtido boa reputação por conter capacidades inovadoras, tais como os stored procedures e triggers, e porque tinha sido desenhada para um novo paradigma da computação: os ambientes cliente/servidor. Uma vez que a capacidade de processamento de transacções do OS/2 não era esperada que fosse alta, a Sybase poderia utilizar o sistema para preparar o mercado para futuras vendas dos sistemas Unix mais poderosos. A Microsoft podia distribuir o produto em volumes mais elevados do que a Sybase; simplesmente não era economicamente possível para o grupo de vendas da Sybase distribuir a primeira versão de uma base de dados aos utilizadores de PCs. Este acordo foi assinado a 27 de Março de 1987 pelo presidente da Microsoft Jon Shirley e pelo co-fundador e presidente da Sybase Mark Hoffman. No mundo das bases de dados em PCs, o dbase da Ashton-Tate ainda tinha a reputação e grande fatia do mercado, apesar do dbase e o DataServer da Sybase oferecerem capacidades extremamente diferentes. Para ganhar aceitação, este novo e altamente capaz SGBD da Microsoft (licenciado pela Sybase) necessitaria de agradar à comunidade dbase. A melhor forma de o fazer era garantir o patrocínio da Ashton-Tate e assim a Microsoft tratou de o conseguir. Em 1988, um novo produto foi anunciado com o complicado nome de Ashton-Tate/Microsoft SQL Server. Apesar de não fazer parte do título do programa, a Sybase tinha um papel importante na informação que acompanhava o produto. Este produto era uma porta de entrada do DataServer no OS/2, comercializado por Ashton-Tate e Microsoft. A Ashton-Tate prometeu que o seu produto dbase IV também iria estar disponível numa edição servidor que iria utilizar as ferramentas de desenvolvimento e linguagem do dbase IV como uma plataforma cliente e que armazenaria os dados no novo SQL Server. Esta nova característica cliente/servidor prometia dar ao dbase novos níveis de poder que permitiriam suportar alguns utilizadores concorrentes que poderiam ser suportados pela sua existente arquitectura de ficheiros-partilhados. A Ashton-Tate, a Microsoft e a Sybase trabalharam em conjunto para lançar o SQL Server no OS/2 (Esta era a primeira vez que o nome SQL Server era utilizado. Posteriormente a Sybase renomearia o seu DataServer para Unix e VMS como Sybase SQL Server. Nos nossos dias o servidor de base de dados da Sybase chama-se Sybase Adaptive Server). A primeira versão do beta do SQL Server da Microsoft e da Ashton-Tate foi lançado no Outono de 1988. Página 5

1.1.2) O lançamento do SQL Server Em 1990, o acordo de marketing e distribuição conjunta com a Ashton-Tate, que pretendia ligar o SQL Server à grande comunidade dbase, simplesmente não estava a funcionar. Até a versão desktop do dbase IV estava bastante atrasada e tinha a reputação de conter vários bugs quando lançada em 1989. A edição servidor, que iria tornar mais simples desenvolver aplicações de alta-performance para SQL Server utilizando dbase, não estava perto de estar pronta. O desenvolvimento de aplicações mono-utilizador, orientadas a registos é muito diferente de desenvolver aplicações para vários utilizadores onde questões de concorrência, consistência e latência de rede tem que ser consideradas. As primeiras tentativas de juntar o SQL Server com as ferramentas do dbase não resultou, pois tratava o SQL Server como se fosse utilizado um método de acesso sequencial indexado (ISAM). Este tipo de acesso era o que os utilizadores do dbase estavam habituados, mas não tirava partido da potencialidades do SQL Server. Para se listar um conjunto de linhas tinham que ser invocados comandos SQL para cada linha. O dbase não tinha ainda a capacidade de saltar de registo para registo, saltar registo para a frente ou para trás, etc. Ainda não existiam os cursores (scrollable cursors). Apenas dois anos antes, a Ashton-Tate era líder de mercado com o seu produto, mas agora atravessava um mau período e tinha que lutar pela sua sobrevivência. A Microsoft lançou o OS/2 LAN Manager com o seu nome, e necessitava do SQL Server para criar uma base de ferramentas de desenvolvimento em arquitecturas cliente/servidor. Assim a Microsoft e a Ashton-Tate terminaram a sua parceria de distribuição e marketing. O SQL Server iria ser reempacotado e relançado como Microsoft SQL Server. A versão 1.1 do Microsoft SQL Server foi lançado no Verão de 1990 como um upgrade da versão 1.0 da Asthon-Tate/Microsoft SQL Server que havia sido lançada em 1989. A versão 1.1 do SQL Server da Microsoft tinha as mesmas características da versão 1.0, tendo no entanto várias correcções de bugs. Mas a versão 1.1 também continha suporte para uma nova plataforma cliente, o Windows 3.0 da Microsoft que havia sido lançado em Maio de 1990. Este suporte para computadores a correr Windows 3.0 foi uma das chaves do sucesso do SQL Server. Página 6

1.1.3) O papel do OS/2 Em 1991, a Microsoft lançou a versão 1.11, uma versão de manutenção. A arquitectura cliente/servidor não estava ainda muito desenvolvida, mas novos convertidos apareciam todos os dias. A nível de vendas não era um grande sucesso, em parte devido ao desapontamento com o OS/2. No entanto, o Windows 3.0 tinha sido um grande sucesso e os utilizadores estavam a migrar de MS-DOS para Windows 3.0, e não para OS/2. Simultaneamente, a Microsoft estava a desenvolver uma versão do SQL Server que servia para sincronizar com o novo produto da Sybase para Unix, versão 4.2. Quando a versão 1.0 da Microsoft foi lançada, o produto da Sybase era designado versão 3.0. Eles acrescentaram algumas características necessárias para o mercado de PCs, tais como tipos de dados de texto e imagem e modos de visualização. A Sybase subsequentemente lançou a versão 4.0 para várias plataformas, seguida da versão 4.2 num lançamento mais limitado. Entretanto, em Maio de 1991, a Microsoft e a IBM anunciaram o fim da sua parceria de desenvolvimento do OS/2. A Microsoft decidiu apostar e concentrar esforços nas novas versões do Windows e aplicações para Windows. A Microsoft estava bem lançada no desenvolvimento de um novo sistema operativo baseado num microkernel denominado internamente como NT ( New Technology ). Este novo sistema era para ser uma futura versão de OS/2 e foi várias vezes denominado OS/2 versão 3.0. Depois da ruptura com a IBM, o projecto NT foi alterado para integrar o interface do sistema Windows e as APIs de programação Win32, e ficou conhecido como Microsoft Windows NT. A primeira versão do Windows NT só era esperada daí a dois anos. O SQL Server seria eventualmente migrado para Windows NT. No entanto, a Microsoft tinha que continuar o desenvolvimento do SQL Server em OS/2, apesar de este agora ser um programa que competia com a Microsoft. Página 7

1.1.4) SQL Server 4.2 A Microsoft estava a desenvolver o SQL Server 4.2 para o futuro OS/2 2.0, a primeira versão de 32-bits do OS/2. Como o SQL Server 4.2 também estava desenhado para ser uma versão de 32-bits, migrar o produto da versão de Unix seria mais fácil uma vez que a segmentação de memória não seria um problema. Na teoria, o SQL Server a 32-bits também seria mais rápido. O principal ganho de performance esperado devia-se ao endereçamento de memória. Uma vez que o endereçamento de memória é tão comum, alguns cálculos rápidos mostravam que as versões de 32-bits poderiam ter um aumento de performance de até 20% ou mais, mesmo que todas as outras operações se mantivessem. 1.1.4.1) Lançamento do OS/2 2.0 adiado A versão do OS/2 2.0 foi subitamente adiada no fim de 1991. De facto, não havia a certeza se a IBM seria capaz de lançar o produto. Assim, a Microsoft teve que migrar novamente o SQL Server para 16-bits e lançá-lo para OS/2 1.3. Esta alteração custou à equipa de desenvolvimento da Microsoft 3 meses. No entanto, outro problema surgiu com o lançamento do OS/2 1.3, uma vez que este só funcionava com máquinas IBM. Na teoria, os fabricantes podiam licenciar uma versão do OS/2 OEM da Microsoft e inclui-lo nos seus produtos, mas tal não aconteceu e os pedidos de OS/2 desceram. Pela primeira vez, a Microsoft lançou um produto denominado OS/2 versão 1.3, com o nome de código Tiger. O Tiger incluía o SQL Server e o LAN Manager, minimizando o problema do produto estar a ser lançado para um sistema operativo morto. 1.1.4.2) Lançamento da versão 4.2 O SQL Server versão 4.2 entrou em fase beta no Outono de 1991, e em Janeiro de 1992, o CEO da Microsoft, Bill Gates, anunciou formalmente o produto numa conferência para programadores de SQL Server em San Francisco. A versão 4.2 tinha sido na realidade um esforço de desenvolvimento conjunto entre a Microsoft e a Sybase. O motor da base de dados tinha sido migrado de Unix da Página 8

versão 4.2, com os engenheiros da Microsoft e da Sybase a trabalhar em conjunto na migração e correcção de erros. Adicionalmente, a Microsoft ainda produziu bibliotecas para interface cliente de MS- DOS, Windows e OS/2, e pela primeira vez incluiu uma ferramenta de administração com um GUI Windows. O código fonte do motor da base de dados foi adicionado nas instalações da Sybase, com ficheiros a serem transferidos via modem e fitas magnéticas. O SQL Server 4.2 foi lançado em Março de 1992. As críticas eram boas e o feedback dos clientes era positivo. Faltava o lançamento de uma versão de 32-bits do SQL Server. 1.1.5) SQL Server para NT O desenvolvimento de uma versão completa de 32-bits nunca foi abandonado pela Microsoft. Nos inícios de 1992, a equipa de desenvolvimento da Microsoft tinha alguns problemas a resolver. Por um lado, tinha os seus clientes baseados em OS/2, mas esses mesmos clientes tinham deixado clara a necessidade de uma versão de 32-bits. A ideia era claramente lançar uma versão para Windows NT, pois esse sistema operativo representava o futuro. Seria a solução de sistema operativo de grande porte da Microsoft, e de um ponto de vista de desenvolvimento, apresentava uma série de vantagens sobre o OS/2, incluindo I/O assíncrono, multiprocessamento simétrico e portabilidade para arquitecturas RISC. Embora a Microsoft tenha decidido em 1991 retornar a versões de 16-bits do SQL Server, o desenvolvimento de uma versão de 32-bits não parou. Aquando do lançamento do OS/2 2.0, os testes das versões de 16-bits e 32-bits do SQL Server não tinham a performance esperada. Aliás a versão de 16-bits era mais rápida no Tiger (OS/2 1.3) Chegou-se a uma etapa em que o desenvolvimento de duas versões, uma para OS/2 e outra para NT, complicava o desenvolvimento. Em primeiro lugar, aumentar o número de pessoas da equipa de desenvolvimento era uma má solução (normalmente representava o problema e não a solução no desenvolvimento de software). O desenvolvimento para os dois sistemas iria necessitar da construção de um nível (camada) de abstracção, o que levaria muito tempo de reengenharia do produto, além de que não se iria tirar partido das características e potencialidades dos dois sistemas. Assim foi decidido parar o desenvolvimento da versão para OS/2 e concentrar os esforços de desenvolvimento para fazer evoluir a versão para Windows NT. Página 9

Por esta altura a Sybase estava a trabalhar numa nova versão do seu produto, que iria receber o nome de System 10. Existia assim uma agenda de prioridades diferentes entre a Microsoft e a Sybase. Por um lado a Sybase necessitava do sucesso do seu novo System 10, a Microsoft apostava na migração do seu produto para NT o mais rápido possível. Assim a Microsoft migrava o SQL Server de OS/2 para NT, ficando a Sybase com os clientes que pretendiam continuar em OS/2 e a Sybase teria no NT um sistema operativo que seria dos primeiros a suportar o System 10. A equipa de desenvolvimento concentrou-se apenas na migração para NT, tendo como um dos principais objectivos o seu lançamento logo 90 dias após o lançamento de Windows NT. Não houve qualquer preocupação em criar uma layer de abstracção, uma vez que só desenvolviam para uma plataforma, o NT. O próprio sistema operativo estava desenhado para ser portável, suportando diferentes tipos de arquitecturas; ou seja, a layer de abstracção do SQL Server seria o próprio NT. O SQL Server estaria intimamente ligado ao NT a nível de gestão, tal como o lançamento de eventos, a instalação baseada num serviço e a exportação de estatísticas para o Performance Monitor do Windows NT. A utilização de DLLs pelo NT, permitiu a criação de um suporte que permitisse aos programadores a criação de aplicações que estendessem as capacidades do SQL Server. No final, esta nova versão do SQL Server acabou por ser mais do que uma simples migração, uma vez que todo o kernel foi rescrito para a API Win32. Um outro objectivo era a capacidade de migração das versões de OS/2 para esta nova versão e sistema operativo. Era necessário que existisse uma forma de migração das aplicações SQL Server versão 4.2 para OS/2 sem alteração para a nova versão a correr em NT. Uma das características do NT era a capacidade de dual-boot com OS/2 ou MS-DOS. A nova versão do SQL Server tinha que permitir a leitura e escrita de bases de dados directamente da versão OS/2. As alterações foram efectuadas apenas no núcleo interno do SQL Server, acrescentando novas características a nível de gestão, suporte de rede e extensões, sem alterar o núcleo externo do motor da base de dados o que iria comprometer a compatibilidade. Em Julho de 1992, a Microsoft distribuiu numa conferência para programadores sobre Windows NT uma versão pré-beta do Windows NT e, apesar do SQL Server ainda não se encontrar em fase beta, disponibilizou bibliotecas que permitissem ao programadores iniciar a migração de OS/2 ou Windows 16-bits para NT. Para dar ênfase à compatibilidade entre esta versão e a versão 4.2 baseada em OS/2, a Microsoft designou esta nova versão como SQL Server 4.2. Página 10

Em Outubro de 1992, a Microsoft lançou a primeira versão beta do SQL Server para Windows NT. Esta versão beta apresentava quase todas as características de um produto final e fornecia versões Win32 completas de todos os componentes. Foi lançada em 100 sites beta, o que era algo sem precedentes para uma base de dados: normalmente seriam aproximadamente 10. Em Dezembro de 1993, quase todos os clientes baseados em OS/2 tinham já migrado para esta nova versão e para o Windows NT. Isto deveu-se não só ao facto da migração ser feita quase sem problemas e sem alterações, mas principalmente porque apresentavam um ganho de performance. 1.1.6) O final do desenvolvimento conjunto O sucesso da Microsoft levou a que as relações com a Sybase de deteriorassem, uma vez que desde 1987 até 1993 muito havia mudado a nível competitivo e de mercado. Ambas as empresas haviam crescido imenso no mercado e as razões para o seu acordo inicial tinham deixado de existir. Também a equipa de desenvolvimento do SQL Server tinha crescido ao longo dos anos, de um grupo de algumas pessoas para mais de 50. Esta equipa tinha os conhecimentos e experiência de desenvolvimento para Windows NT que era necessária para desenvolver ainda mais o SQL Server, mas as condições do acordo com a Sybase impediam que a Microsoft implementasse novas características ou alterações sem o acordo da Sybase. A Sybase tinha necessidades e prioridades diferentes das da Microsoft, nomeadamente algumas novas características que se poderiam implementar, tais como integração de messaging utilizando MAPI e que não eram possíveis pois eram específicas dos sistemas operativos da Microsoft. As duas versões do SQL Server, para Windows NT da Microsoft e para Unix/NetWare/VMS da Sybase estavam a competir no mesmo mercado, levando a perda de clientes e vendas por parte da Sybase. Como seria de esperar, a 12 de Abril de 1994 a Sybase e a Microsoft anunciaram o fim do seu acordo. Cada empresa iria desenvolver separadamente a sua versão do SQL Server. Estava aberto o caminho para acrescentar novas características ao produto e mudar o rumo do desenvolvimento. Ambas as versões teriam compatibilidade com as versões anteriores, mas a partir deste ponto o seu desenvolvimento divergiu e as novas versões apresentaram características diferentes. Começavam assim a competir directamente uma com a outra. Página 11

1.1.7) SQL Server 95 No início de 1995, estava planeado que a nova versão do SQL Server acrescentasse novas características do System 10, mas o fim do acordo de desenvolvimento veio alterar este cenário. O lançamento do System 10 no final desse ano fez com que a Microsoft perdesse clientes. Iniciava-se uma corrida para o lançamento de uma nova versão com muitas características novas e melhorias a nível de performance. Foi denominada SQL95 adoptando a designação da nova versão do Windows a ser lançada por essa altura. Nesta altura o problema de replicação estava na moda, tornando-se uma característica chave desta versão. Os scrollable cursors, que se achava necessário incluir, eram outra característica importante. Uma outra característica a ser incluída passava por um novo sistema de gestão com o nome de código StarFighter (conhecido hoje como SQL Server Enterprise Manager) que também estava em desenvolvimento. A primeira versão beta foi lançada nos finais de Outubro de 1994, ainda com o StarFighter incompleto, mas com o motor da base de dados final. A 14 de Junho de 1995, o produto final era lançado com o nome de SQL Server 6.0. Logo após o lançamento desta versão, começou o trabalho numa nova versão que iria ser conhecida com SQL Server 6.5. Devido ao lançamento de uma versão como a 6.0, cheia de novas características, algumas funcionalidades foram adiadas e novas necessidades surgiram. Por exemplo, a explosão da Internet e do Data Warehousing. Estas características seriam incluídas no SQL Server 6.5. A primeira versão beta foi lançada a 15 de Dezembro de 1995 e a versão final em Abril de 1996. 1.1.8) Nome de Código Sphinx Ainda antes do lançamento do SQL Server 6.5 uma equipa de desenvolvimento já preparava separadamente o futuro. Em 1993, a Microsoft havia decidido que as bases de dados eram uma área chave e, em finais de 1994, começou a contratar profissionais da DEC e de outras grandes companhias para trabalhar com as equipas de desenvolvimento do Microsoft JET e do SQL Server numa nova geração de tecnologias de bases de dados. Durante 1995, o período de lançamento do SQL Server 6.0 e 6.5, esta equipa construiu um novo motor de consultas (query processor) que daria origem ao Microsoft Data Engine (MSDE). Página 12

O desenvolvimento do MSDE foi complementado com o desenvolvimento simultâneo do OLE BD, que permitiu que elementos base do SQL Server fossem desenvolvidos como componentes independentes. Estes componentes podiam assim comunicar utilizando a layer de OLE BD. Nos finais de 1995, o novo componente de processamento de consultas foi integrado no código base do SQL Server e o desenvolvimento do novo SQL Server, denominado Sphinx, começou. O desenvolvimento desta nova versão tinha um objectivo primordial: rescrever o motor da base de dados de forma a que o SQL Server pudesse ser escalável até às necessidades dos utilizadores. Isto significava capacidade para tirar partido de maior quantidade e velocidade dos processadores e da memória que o sistema operativo conseguisse suportar. Este crescimento implicava a capacidade de suportar alterações aos seus componentes de uma forma modular. Também seria alterado de forma a correr em plataformas mais leves como desktops e portáteis. Existiam dois objectivos principais: Full row-level locking 1 com um novo gestor de smart lock; Um novo motor de processamento de queries que permitisse tecnologias como processamento de queries heterogéneas distribuídas e processamento eficiente de ad hoc queries (necessário para a Internet e Data Warehousing). A versão beta 1 do SQL Server 7.0 foi lançada numa edição limitada nos finais de 1997, sendo lançado em Dezembro de 1997 a versão beta 2. Devido à nova arquitectura, todas as bases de dados e estruturas de dados contidas tiveram que ser completamente reconstruídas no processo de upgrade. Havia um compromisso com os clientes de que as suas bases de dados seriam completamente actualizáveis na migração da versão 6.5 para a versão 7.0. Foi instituído um programa designado 1K Challenge, em que 1000 clientes foram convidados a enviar cópias das suas bases de dados para a equipa de desenvolvimento para serem migradas para a versão 7.0. Foi instalado um laboratório para efectuar estas migrações e onde equipas de desenvolvimento convidadas efectuaram testes de compatibilidade das suas aplicações com a nova versão. Estes testes permitiram que a detecção e correcção de problemas com a nova versão ainda antes dela ser lançada como 1 Mecanismo de bloqueio. 2 Comandos de interrogação à base de dados. Página 13

produto final e a discussão de estratégias para tirar partido das novas funcionalidades do produto. Em Junho de 1998, foi lançada a versão beta 3 a partir do site SQL Server Web, conjuntamente com exercícios que demonstravam as novas características e capacidades do produto. A 16 de Novembro de 1998, na COMDEX em Las Vegas foi publicamente apresentado o novo produto, que seria lançado no mercado em Janeiro de 1999. 1.1.9) Finalmente o SQL Server 2000 Como seria de esperar, o desenvolvimento do SQL Server não parou por aqui. Muitas características que não tinham sido incluídas na versão 7.0 passariam a fazer parte da nova versão em desenvolvimento. Nesta altura estavam planeado duas novas versões, o Shiloh que seria uma actualização da versão 7.0 para 7.5 e o Yukon que seria a próxima grande versão a ser lançada. As expectativas em relação ao Shiloh não eram muitas, uma vez que era esperado que a maior parte dos clientes não instalassem esta versão por a considerarem uma versão que necessitaria de alguns service packs até atingir estabilidade. No entanto, isto não se verificou. Na realidade o SQL Server 7.0 recebeu uma boa aceitação e a maior parte dos problemas pode ser resolvido através de alguns Service Packs simples, não existindo necessidade para uma versão.5. Inclusive os clientes pediam novas características há muito prometidas e sempre adiadas, como suporte para cascade deletes e updates, melhorias a nível de partitioned views. Existia também um desafio lançado pela Oracle Corporation que evidenciava características que estavam incluídas no Oracle e não no SQL Server. Assim foi decidido que a versão 7.5 seria não apenas uma actualização da versão 7.0, mas uma nova versão completa, acrescentando novas características. Com um período de desenvolvimento de 18 meses, a objectivo inicial passava por melhorias a nível de performance (o objectivo era um aumento de pelo menos 20%). Uma vez que era um objectivo pouco concreto, a equipa de desenvolvimento decidiu concretizar essa melhoria para o processamento de queries do SAP R3, o que implicaria melhorias também para muitas outras aplicações. Na apresentação do Windows 2000 em Fevereiro de 2000, San Francisco, foram anunciados os resultados do teste efectuado com 6700 utilizadores no Sales and Distribution benchmark do SAP R3 em comparação com o SQL Server 7.0 que apenas atingiu os 4500 utilizadores (testes realizado com o Página 14

mesmo hardware, uma máquina com 8 processadores Pentium-III 550 MHz). Isto representava uma melhoria de 48%, superando os objectivos iniciais. Secretamente uma nova característica estava a ser acrescentada ao SQL Server que não foi anunciada, nem incluída nas primeiras versões beta. Só aquando do lançamento do Windows 2000 é que foi revelado a inclusão de partitioned views no SQL Server e que tinham permitido atingir as melhorias da performance anunciadas. Esta característica foi denominada internamente por Coyote. A versão Beta 1 do SQL Server foi lançada em Setembro de 1999 apenas para um grupo restrito de clientes e beta testers. Pouco depois a Microsoft anunciava que o nome definitivo do produto seria SQL Server 2000. Existiam duas razões para esta alteração de nome. Em primeiro lugar, as características deste produto faziam com que não fosse apenas uma versão intermédia, mas um produto completamente novo. Em segundo lugar, se o produto adoptasse o nome de versão 8.0, seria o único produto do BackOffice que não utilizava o nome 2000. Para se enquadrar com os restantes produtos da mesma linha foi decidido que adoptaria as mesmas linhas guia. No entanto, internamente esta versão ainda utiliza o número 8.00.194 visível através da função @@VERSION. Do ponto de vista do utilizador esta versão introduziu uma série de novas funcionalidade, ainda mais do que a sua antecessora. A versão 7.0 teve várias alterações, a rescrita do motor da base de dados e outras alterações internas, mas a nível externo as alterações ou novidades foram poucas. O SQL Server 2000 acrescentou novas funcionalidades a nível de suporte multilíngue e alterações a objectos tais como constraints de tabelas, vistas, triggers. Devido às poucas alterações a nível do motor interno, foram apenas previstas duas versões beta, sendo a Beta 2 lançada em Abril de 2000. A 6 de Agosto de 2000, a equipa de desenvolvimento deu o código por terminado e compilou a versão final, que entraria em produção três dias mais tarde. Se analisarmos a história deste produto vemos que ela passa por uma série de alterações e acrescentar de características que os utilizadores necessitam, sendo previsível que no futuro sejam lançadas novas versões que devem estar hoje em desenvolvimento. Página 15

2. Capítulo 2.1) A ARQUITECTURA DO SQL SERVER 2000 Este capítulo pretende descrever quais os componentes da arquitectura do motor do SQL Server 2000. 2.1.1) O motor do SQL Server A Figura 1 mostra um esquema geral da arquitectura. A partir deste esquema serão descritos os vários componentes estudados para este trabalho. Figura 1: Esquema Geral da Arquitectura Página 16