XT-INDENT: 0cm"> 

capaSQL14.JPG


Clique aqui para ler todos os artigos desta edição

 

Dúvidas

Dúvida 1

Resposta

 

Olá André!

Quanto à sua pergunta: stored procedures são sempre bem-vindas, pois economizam largura de banda. Imagine enviar um batch com 500 linhas para ser executado no servidor. Agora troque as 500 linhas por uma única linha de chamada para a stored procedure. O que é mais rápido? Outra grande vantagem é que você não precisa ficar abrindo os fontes de seus programas para alterar o código, fora o fato da stored procedure ser muito mais maleável: se houver alguma alteração no negócio, você altera somente a stored procedures, sem a necessidade de abrir fontes e recompilar sua aplicação!

Mas a questão básica dessa discussão é a seguinte: em que camada você irá deixar as regras do seu negócio: na de aplicação ou banco? Tudo tem caminhado para que as regras de negócio fiquem no banco, pois além dos requisitos de segurança, deixam as aplicações mais eficientes e são mais fáceis de implementar, mais simples de administrar e convivem melhor com alterações.

Quanto justificar a criação de views por questões de segurança, acho desnecessário. Views são utilizadas para substituir select's complexos (exceção seja feita às indexed views, que materializam o select na forma de páginas de dados por questões de otimização).

Quanto aos locks, eles existem em views, stored procedures, batches. Na edição de número 5 da SQL Magazine, escrevi uma matéria exclusiva sobre como otimizar locks.  Você chegou a dar uma lida? Se você não possui esse exemplar, escreva para a SQL Magazine solicitando o seu.

Um grande abraço,

 

Paulo Ribeiro

 

Pergunta

Caro Professor,

Parabéns pelos artigos publicados na SQL Magazine! São de grande valia para os profissionais de software. Gostaria de saber sua opinião quanto a um assunto: nas empresas, parece que há duas linhas de pensamento quando o assunto é stored procedure, trigger e view. Uma delas defende o uso desses recursos para algumas rotinas mais pesadas. A outra segue a linha de que tudo deve ser acessado através de stored procedures e view, tanto na leitura quanto na escrita (inclusão, alteração e exclusão). Não se pode acessar as tabelas diretamente, por motivos de segurança e de "lock". O que você acha sobre isso? Há algum material (livro ou site) que aborde essa situação?

Abraços e obrigado,

André

Dúvida 2

Resposta

Oi Renato,

Sim, a utilização de árvore binária, em determinados casos, pode realmente gerar uma tabela de índices maior que a de dados. Para esses casos, a utilização de índices bitmap passa a trazer maiores benefícios.

Os índices são ponteiros para linhas da tabela organizados de forma a melhorar o desempenho para seleção registros. No caso dos índices tradicionais, esses valores são armazenados em uma lista de rowids para cada chave correspondente, ou seja, é criada uma nova tabela (tabela de índices) contendo o valor da chave e o rowid correspondente. Já um índice bitmap trabalha criando um mapa de bits para cada valor ao invés da lista das rowids. Cada bit do mapa corresponde a um possível rowid. Se o bit é selecionado, significa que a linha com o valor correspondente contém o valor da chave.

Uma função de mapeamento converte a posição do bit no valor do rowid, mantendo a mesma funcionalidade dos índices tradicionais. Porém, em casos em que a seletividade é baixa, como em uma coluna “sexo” (valores “F” ou “M”), os índices bitmap trarão um enorme ganho de espaço de armazenamento, uma vez que não será necessário armazenar o valor da coluna e seu respectivo rowid. Vejamos como exemplo a tabela abaixo:

 

COD_CLI

EST_CIVIL

REGIAO

GENERO

NIVEL_RENDA

101

Solteiro

Sudeste

Masculino

...
Quer ler esse conteúdo completo? Tenha acesso completo