Olá pessoal,
Estou escrevendo este artigo para fazer um comparativo e comentar sobre algumas vantagens e recursos dos 2 bancos de dados (BDs) mais utilizados nas grandes empresas brasileiras: Oracle e SQL Server, conforme pesquisa realizada em 2005 pelo Grupo Impacta (ver Figura 1). Embora a pesquisa de 2005 não seja tão recente, ela foi a mais confiável e concisa que eu encontrei para demonstrar a nossa realidade.
 |
Figura 1 - BDs mais utilizados nas grandes empresas brasileiras (Grupo Impacta 2005) |
Conheço os 2 BDs que vou comentar neste artigo, porém conheço muito melhor o BD Oracle, por isso, gostaria que os profissionais que estiverem lendo este artigo, deixem comentários que possam acrescentar mais detalhes sobre o SQL Server e recursos que existam nele e que não tenham itens correspondentes no Oracle.
Seguem abaixo as principais características de cada BD:
SQL Server:
- SGBD comercializado atualmente pela Microsoft. Nasceu em 1988, a partir de uma parceria entre Microsoft, Sybase e Aston-Tate;
- Última versão
(até a data da publicação deste artigo): SQL Server 2008;
- Custo de uma licença da versão Enterprise por CPU: aprox. U$ 28.000 por CPU;
- Pode ser instalado somente em SO Windows;
- Possui ferramentas de administração com interface gráfica excelentes, que possibilitam um gerenciamento mais fácil e produtivo. Ex.: SQL Server Management Studio 2008;
- Como toda ferramenta Microsoft, o BD SQL Server em geral, é mais fácil de administrar e de programar do que em Oracle;
- 2 recursos que acho bastante interessantes em SQL Server e que não existem correspondência no Oracle, são:
a) Divisão lógica de uma instância contendo vários BDs. No Oracle temos apenas vários
schemas. O SQL Server possui uma camada extra onde cada BD pode conter vários usuários ou schemas. Desse modo, podemos organizar e gerenciar melhor schemas correlacionados, pertencentes a uma mesma aplicação, em um BD isolado dos demais schemas do BD;
b) Possui um schema do sistema chamado MODEL que serve como template para schemas de usuários. Se por exemplo, o schema MODEL tiver 2 tabelas e uma visão, ao criar um novo schema de usuário, ele será criado com estes mesmos objetos.
Oracle:
- SGBD comercializado atualmente pela Oracle, que nasceu em 1979 e que foi o primeiro BD relacional comercializado no mundo;
- Última versão: Oracle Database 11G;
- Custo de uma licença da versão Enterprise por CPU: U$ 47.500
(até 2 core);
- Pode ser instalado em múltiplas plataformas desde 1985. Entre as principais, podemos citar: Unix, Linux, HP/UX, BIM AIX, IBM VMS e Windows;
- Possui ferramentas de administração com interface gráfica menos amigáveis que as do SQL Server. Isso vem mudando e melhorando a cada nova versão do Oracle. No 10G, o Enterprise Manager possui muitos recursos e sua interface gráfica evoluiu muito, mas ainda acho que as ferramentas da Microsoft são mais intuitivas e mais produtivas. No Oracle o DBA costuma gerenciar muitas atividades do BD através de conjuntos de scripts;
- Possui uma documentação muito bem detalhada, o que de início até assusta, mas permite que você conheça muito bem o BD e todos os seus recursos;
- Possui mais recursos de segurança e performance que o SQL Server. Exemplos:
a) Por padrão, o Oracle não commita transações. Isso permite que você desfaça as alterações de uma instrução SQL, caso ela tenha sido submetido erroneamente. No SQL, por padrão as intruções SQL são auto-commitadas, o que facilita o trabalho geral dos desenvolvedores, mas que dificulta o trabalho de recuperação por danos acidentais e o controle transacional;
b) Por padrão, o Oracle permite efetuar
leitura consistente de dados. Esse recurso permite que um usuário "B" leia os dados de uma linha de uma tabela, no mesmo momento em que ela está sendo alterada por um usuário "A", sem que o usuário "B" visualize os dados que estão sendo alterados pelo "A". Não há bloqueio de leitura nem risco do usuário "B" visualizar os dados que ainda não foram commitados pelo usuário "A". No SQL Server esse não é o comportamento padrão do BD e para garantir a leitura consistente, o SGBD efetua bloqueios nas linhas acessadas/alteradas, portanto, desenvolvedores inexperientes poderão desenvolver aplicações com sérios problemas de performance no acesso concorrente, se não tiverem os conhecimentos necessários para contornar bloqueios de leitura aos dados;
c) Arquitetura mais flexível e com mais recursos para otimização de performance. No Oracle é possível criar e gerenciar diversas estruturas de memória no BD. É possível, por exemplo, definir estruturas de armazenamento com tamanhos de blocos que podem variar de 2k à 32k. No SQL Server só é possível criar estruturas de armazenamento de 8k. Em Oracle, sistemas OLAP e índices em geral, são otimizados com tamanhos de blocos maiores
(32k);
d) Possui
Packages, que são objetos que permitem (entre diversos outros benefícios) agrupar e encapsular código de stored procedures e funções;
e) Possui
Sequences (que já li em alguns blogs que será implementado no SQL Server 2012). Sequences possuem muito mais recursos do que colunas de auto-incremento, existentes em SQL Server, para definir valores de chaves-primárias. Um exemplo que posso citar é o
cache de Sequences, que permite otimizar a performance de inserções que necessitam de um valor único para compor a chave-primária
(ver artigo Otimizando SQL utilizando cache em sequences);
f) O Oracle possui mais tipos de índices que o SQL Server. Índices permitem otimizar consultas em BD. 2 exemplos que vou citar no Oracle que não existem itens correspondentes no SQL Server são: índices
BITMAP (que permitem otimizar consultas em colunas com baixa cardinalidade) e índices
Baseados em função (que permitem indexar funções em colunas);
g) Permite criar um ou mais processos chamados
listeners, que são utilizados para conectar clientes remotos ao BD. Uma das vantagens de ter este tipo de processo é que a conexão ao BD pode ser distribuída entre diversos listeners, ou seja, podemos configurar múltiplos
listeners para grupos menores de usuários, para
ouvir em portas diferentes, com o objetivo de evitar gargalos de conexão ao BD quando temos muitos usuários
(normalmente mais de 200 conexões por segundo) se conectando ao mesmo tempo;
h) O Oracle possui um modelo de controle de acesso concorrente chamado
multiversion read consistency (
MVRC) que é um dos melhores modelos do mercado para permitir um controle de acesso concorrente com menor contenção de linhas e consequentemente, melhor performance quando há acesso concorrente aos dados. No Oracle o controle de bloqueios é realizado através da gravação de indicadores de bloqueio no nível das linhas, já no SQL Server existe um componente chamado
Lock Manager para fazer o mesmo trabalho. No Lock Manager há uma sobrecarga maior para gerenciar uma grande qtde. de bloqueios, que consequentemente pode degradar a performance de uma grande quantidade de atualizações concorrentes.
CONCLUSÃO:
A percepção que eu tenho é que a Microsoft tem um histórico de manter o foco na entrega de produtos mais fáceis de se utilizar e de gerenciar. A Oracle, por sua vez, tem foco na entrega de produtos quer priorizam a segurança e uma vasta gama de recursos.
Ambos são ótimos BDs e cada um tem suas vantagens e desvantagens. O SQL Server tem a principal vantagem de ter um custo menor, aproximadamente metade do preço de um Oracle. No SGBD SQL Server, todas as funcionalidades (Ex.: Particionamento de tabelas) estão inclusas no seu valor de licenciamento inicial, enquanto que, no SGBD Oracle, é necessário adquirir licenças adicionais (chamadas Options), que tornam o produto da Oracle até 10 vezes mais caro que o produto da Microsoft. Outra vantagem do SQL Server é a facilidade de uso e gerenciamento. Eu, particularmente, quando comecei a trabalhar com Oracle, achava tudo muito difícil. As ferramentas do SQL Server eram mais produtivas e mais intuitivas.
O Oracle tem um custo mais alto que o SQL Server e é mais difícil de administrar, porém é um produto que possui mais recursos de segurança e performance, que podem ser muito importantes e cruciais para empresas que possuem aplicações críticas e que possuem muitos dados e muitos usuários concorrentes, em geral.
Para finalizar, vou responder agora a questão que é o título deste artigo: Qual é o melhor BD: Oracle ou SQL Server?
R.: Bom... isso depende da necessidade! De um modo geral, acredito que o SQL Server é mais indicado para pequenas e médias empresas ou pequenas e médias aplicações, devido ao custo menor desse BD e porque normalmente as aplicações que são executadas nestes ambientes possuem menor quantidade e complexidade de requisitos. O Oracle, por sua vez, é mais indicado para grandes empresas ou grandes aplicações, que possuem requisitos de negócios mais complexos e críticos, e que possuem grana para pagar pelos recursos de segurança e performance adicionais que este grande BD oferece!
Por hoje é só! Deixem seus comentários!
[]s
Referências:
- http://www.linhadecodigo.com.br/artigo/2412/Análise-de-desempenho-entre-os-bancos-de-dados-SQL-Sever-x-Oracle.aspx
- http://www.dba-oracle.com/t_sql_server_vs_oracle_terminology.htm
- http://stackoverflow.com/questions/2322260/basic-differences-between-oracle-and-sql-server
- http://pt.wikipedia.org/wiki/Oracle_(banco_de_dados)
- http://msdn.microsoft.com/pt-br/library/ms175049.aspx
- http://en.wikipedia.org/wiki/Microsoft_SQL_Server