SQL Server 2000 : o Contra-Ataque

Veja neste artigo esclarecimento sobre uma série de comentários à respeito do banco de dados da Microsoft.

SQL Server 2000 : o Contra-Ataque

Sou partidário da idéia de que o melhor ataque é a defesa, e é nesse sentido que gostaria de iniciar nosso primeiro encontro: esclarescendo minha opinião sobre uma série de comentários à respeito do banco de dados da Microsoft.

Periodicamente o leitor é apresentado a matérias comparando o SQL Server com outros bancos de dados. Comparações são saudáveis, pois permitem nortear os usuários na escolha do produto que melhor se adapte às suas necessidades. Comparações também estimulam melhorias nos produtos, pois forçam produtos concorrentes a estarem evoluindo sempre.

O SQL Server 2000 não chegou onde está por acaso. São mais de dez anos e 3 grandes saltos (6.5, 7.0 e 2000). Para o início do ano que vem está prevista a versão 2005 (codename Yukon, se preferir), que está chegando para arrasar.

Destaquei algumas frases, que serão comentadas a seguir.

O SQL Server não “aguenta o tranco” ...

O SQL Server custa caro ...

O tempo de treinamento é longo ...

A Microsoft possui vários cursos para SQL Server, cada um deles focado numa particularidade do banco. Basicamente, existem três cursos: no primeiro deles você aprenderá como administrar um servidor SQL Server, incluindo sua arquitetura, processo de instalação, criação de databases, política de segurança, procedimentos para backup e recovery, replicação de dados e métodos de monitoramento. Esse curso tem a duração de 5 dias. Outro curso é destinado para a construção de queries, e tem o objetivo de apresentar ao usuário - aquele que nunca se deparou com um comando select - a linguagem T-SQL. Esse curso tem a duração de2 dias. O último curso possui duração de 5 dias e é indicado para aqueles que serão responsáveis pela criação de objetos, definição de regras, análise de performance de queries e programação de acesso em dados distribuídos entre vários servidores.

Como pode-se observar, o tempo total para preparação se resume em 12 dias. Se você já conhece alguma linguagem SQL, esse tempo cai para 10 dias. Para se tornar um DBA Certificado, a Microsoft entende que além dos recursos relacionados ao banco são necessários também conhecimentos do Sistema Operacional, pois a performance do servidor de banco de dados depende não somente do banco em sí, mas também do conjunto formado pelo hardware (memória, discos, processador e rede) e Sistema Operacional onde o banco está inserido. O candidato do título MCDBA tem ainda que se submeter a uma última prova, atestando que possui também conhecimentos noutra ferramenta (Data WareHousing, Visual Basic .Net, C#, entre outras). Nessa condição, para se tornar um DBA Certificado o tempo de treinamento sobe para uma média de 22 dias.

A certificação fornecida pela Microsoft – assim como outras cerfificações no mundo da informática – visa diferenciar e qualificar profissionais na utilização do produto. O que não deve ser confundido é que no processo de titulação são exigidos alguns conhecimentos adicionais, acarretando num maior tempo de treinamento.

O SQL Server não trabalha com bloqueios de linha ...

Quem diz esse tipo de coisa está desatualizado. O SQL Server trabalha com bloqueios de linha desde a versão 7.0.

Os níveis de isolamento do SQL Server não são adequados ....

O SQL Server 2000 trabalha com todos os níveis de isolamento assegurados pela convenção ANSI-92 (Read Uncommitted, Read Committed, Repeateble Read e Serializable). O nível de isolamento padrão é o Read Committed, que permite somente a leitura de dados comitados por transações.

Processos de leitura utilizam um tipo de bloqueio chamado Shared. Imagine o índice de um livro. Você seleciona um tópico, que indica a página de número 101. Você procura pela página, e percebe que essa página não existe. Da página 100, o livro “pula” para a página 102. Para evitar esse tipo de situação, existe o shared lock. O que é importante frisar é que esse bloqueio persiste SOMENTE durante a leitura, e não durante toda a transação. Vamos supor que você precise ler informações na página 101 da tabela A, depois acessar uma página na tabela B. Assim que o engine do banco finalizar a leitura na página 101, o shared lock é liberado independentemente do término da transação (ou se preferir, da leitura na tabela B). Esse bloqueio é extremamente curto, e serve para garantir a integridade da informação.

Se você utilizar um nível de isolamento mais restritivo, como Repeateble Read ou Serializable para leituras, a transação de leitura irá bloquear a transação de atualização. Isso é verdade. Agora, o que acontece de fato é que esses níveis de isolamento raramente são utilizados – na empresa onde trabalho simplesmente não existe nenhum processo que utilize tais níveis de isolamento.

Existem bancos de dados que trabalham com um nível de isolamento conhecido por Snapshot, que permite o versionamento de registros. Funciona mais ou menos assim: imagine a transação A alterando o valor de venda de um produto de R$5,00 para R$6,00. Essa transação continua ativa quando a transação B requisita a leitura do mesmo produto. Com o nível de isolamento snapshot, a transação B conseguiria ler a última versão comitada do registro (=R$5,00), sem ter que aguardar o fim da transação A.

O versionamento com certeza é uma característica bastante interessante, por isso a Microsoft implementou essa mudança no SQL Server 2005, que teve seu lançamento postergado para o início do ano que vem. Falarei um pouco das principais features do SQL Server 2005 no próximo artigo.

O SQL Server não trabalha com before triggers ...

O SQL Server trabalha com after e instead of triggers. Essas últimas podem ser utilizadas como before triggers, permitindo que se trabalhe, por exemplo, uma violação de foreing key ANTES que ela de fato aconteça. Imagine uma aplicação que esteja tentando inserir uma linha com a opção ‘WW’ para a unidade de federação do endereço do cliente. Ora, todos sabemos que não existe um estado com essa sigla. A before trigger poderia ser utilizada para interceptar essa alteração, corrigir a unidade da federação pelo CEP do cliente e gravar a linha adequadamente.

Em tempo: as possibilidades para resolução do problema visto no parágrafo anterior são muitas. Conseguiríamos um resultado bem mais interessante encapsulando o processo de inserção do cliente numa stored-procedure, deixando a checagem da unidade da federação FORA dos limites da transação - antes do begin tran. Com a stored-procedure, além de agregar bastante flexibilidade ao código, contribuiríamos para otimizar a transação de inserção de clientes, isentando-a do processo de checagem.

MSDE suporta somente 5 conexões simultâneas ...

Quem faz esse tipo de afirmação também está desatualizado. Nesse exato momento, estou rodando uma mesma query em 8 conexões concorrentes sob o MSDE, instalado em minha máquina.

O MSDE, anacrônimo de Microsoft SQL Server 2000 Desktop Engine, é uma versão enxuta e redistribuível do SQL Server destinada a aplicações desktop. Verifique algumas respostas a perguntas freqüentes sobre essa versão do produto em www.microsoft.com/sql/msde/howtobuy/msdeuse.asp. Essa questão em particular, referente ao número conexões concorrentespode ser confirmada em:

... Can I use MSDE as a database for Web applications ?
A resposta é …
… Yes, MSDE is an ideal solution for basic Web applications with up to 25 concurrent users.

Conclusão:

O objetivo central desse artigo foi mostrar a você leitor que o SQL Server 2000 possui uma posição bastante consolidada no mercado de banco de dados. A Microsoft tem investido muito nessa área, que o diga o SQL Server 2005 - ou YUKON - que traz uma série de novidades para torná-lo ainda melhor. Em nosso próximo encontro, falaremos um pouco dessas features.

Forte abraço a todos e até a próxima!

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados