Compact Express Comparison

Propaganda
Escolhendo entre o
SQL Server 2005 Compact Edition e o
SQL Server 2005 Express Edition
White paper
Publicado em: Novembro de 2006
Autor:
Steve Lasker, Microsoft
http://blogs.MSDN.com/SteveLasker
Para obter as informações mais recentes, consulte http://www.microsoft.com/sql/
Conteúdo
Visão geral .................................................................................................................................. 3
Serviço de dados e mecanismos de banco de dados incorporados...................... 3
Selecionando o banco de dados correto ......................................................................... 4
XML ............................................................................................................................................ 4
Access (Jet) e FoxPro (dbf) .............................................................................................. 4
Microsoft Data Engine (MSDE) ........................................................................................ 4
Microsoft SQL Server Express Edition e SQL Server Compact Edition ............ 5
Comparação de recursos de dados locais ....................................................................... 8
Implantação e serviços ........................................................................................................ 11
Suporte do ClickOnce ....................................................................................................... 11
Serviços centrais por meio do Microsoft Update.................................................... 11
Implantação do SQL Server Express Edition ........................................................... 12
Implantação do SQL Server Compact Edition ......................................................... 12
Programação e modelo de acesso a dados .................................................................. 12
Modelo de mecanismos de serviço de dados .......................................................... 12
Modelo de mecanismos de banco de dados incorporados ................................. 13
Procedimentos armazenados e modos de exibição .............................................. 13
Delegação e microgerenciamento ............................................................................... 14
Recursos exclusivos de um banco de dados local ................................................. 14
Protegendo seus dados locais ........................................................................................... 15
Segurança física .................................................................................................................. 16
Princípios do design de segurança do SQL Server Compact Edition .............. 16
Princípios do design de segurança do SQL Server Express Edition ................ 16
Instâncias do Usuário do SQL Server Express Edition – um curso rápido .. 17
Outras ameaças de segurança ...................................................................................... 18
Ataques de phishing e de mídia ............................................................................... 18
Arquivos de dados do SQL Server Compact Edition são documentos
seguros ............................................................................................................................... 19
Protegendo dados do laptop roubado ........................................................................ 19
Aproveitando os recursos de segurança do Windows .......................................... 20
Sistema de arquivos criptografados do Windows (EFS) ..................................... 21
Medindo o desempenho ................................................................................................... 22
Conclusão .................................................................................................................................. 24
Escolhendo entre o SQL Server 2005 Compact Edition e o SQL Server 2005 Express Edition
2
Visão geral
Até mesmo nesta nova era, em que temos conectividade, serviços online e Internet sem fio
por toda parte, os arquitetos, desenvolvedores e usuários finais estão se dando conta de
que permitir que a produtividade de seus negócios e do usuário dependa de uma conexão
constante com um local central é uma situação arriscada, frustrante e dispendiosa. Quando,
por algum motivo, a conexão é interrompida, é possível gerenciar a interrupção de seus
negócios? Com a criação de resiliência, redundância e da capacidade de trabalhar de forma
independente na sua arquitetura de aplicativos, é possível proteger seus usuários e os
resultados da empresa de problemas inevitáveis. O fato de haver um armazenamento de
dados local para armazenar em cache dados online, habilitar a funcionalidade offline ou
habilitar aquele aplicativo autônomo que não precisa fornecer dados para o mundo levanta
a questão do que deve ser usado para o armazenamento local.
A família do SQL Server oferece dois produtos adequados para armazenamento local: o
Microsoft SQL Server 2005 Compact Edition e o Microsoft SQL Server 2005 Express Edition.
Com o lançamento da Compact Edition para cenários de desktop, a Microsoft a está
posicionando como banco de dados local padrão. De qualquer maneira, as duas edições são
gratuitas para download e implantação. A escolha entre o SQL Server Express e o SQL
Server Compact Edition do SQL Server 2005 pode ser difícil, pois eles parecem se adequar
aos mesmos cenários. Este documento ajuda os desenvolvedores a compreender as
vantagens de cada edição e quando cada uma delas deve ser usada para o armazenamento
de dados local.
Enquanto você lê este documento, é importante lembrar sobre a necessidade de escolher a
ferramenta correta para cada trabalho. O tamanho único não se ajusta a todos. O SQL
Server 2005 está disponível em várias edições porque cada uma delas foi criada para um
fim específico. Conforme você verá, se quiser decidir qual banco de dados usar para seu
serviço de dados central ou o banco de dados local para seu dispositivo Windows Mobile, as
opções são fáceis e você pode ler este documento para obter informações casuais.
Se estiver procurando um armazenamento de dados local para um Tablet PC, um laptop,
um desktop em um escritório remoto ou se quiser simplesmente adicionar alguns recursos
de armazenamento em cache local ao aplicativo de sua central de atendimento, você
descobrirá alguns recursos interessantes e questões que podem não ser óbvias ao examinar
pela primeira vez os recursos do SQL Server Express Edition e do “mecanismo que não é
novidade no mercado” do SQL Server 2005 Compact Edition.
Serviço de dados e mecanismos de banco de dados
incorporados
A Microsoft fornece dois tipos diferentes de mecanismos de banco de dados SQL Server.
Normalmente, um mecanismo de banco de dados de serviço de dados é criado para ser
executado como um serviço em um ambiente cliente/servidor, atendendo a vários clientes
simultaneamente. Um mecanismo de banco de dados incorporado, por sua vez,
normalmente é executado em processo com o aplicativo e atende um cliente por vez 1.
Família de mecanismos de banco de dados de serviço de dados
1 Atender um cliente não implica no suporte a uma única conexão, em vez de uma única máquina estabelecendo
uma conexão.
Escolhendo entre o SQL Server 2005 Compact Edition e o SQL Server 2005 Express Edition
3

SQL Server Express Edition – O ponto de entrada da plataforma de serviços de
dados. A Express Edition é executada nas versões de servidor e desktop da
plataforma Windows. Ela possui a funcionalidade típica de um mecanismo de serviço
de dados, tendo sido ampliada para dar suporte ao uso como um armazenamento de
dados local.

SQL Server Workgroup Edition – Mecanismo de serviço de dados direcionado a
pequenos escritórios e filiais. A Workgroup Edition possui funcionalidades adicionais,
como a publicação de replicação de mesclagem, tamanho ilimitado do banco de
dados, e pode utilizar máquinas com duas CPUs com memória de até 3GB.

SQL Server Standard Edition – Mecanismo de serviço de dados direcionado para
organizações de pequeno e médio porte que inclui recursos de ponto de entrada para
a inteligência comercial.

SQL Server Enterprise Edition – Mecanismo de serviço de dados direcionado a
grandes empresas com ferramentas avançadas, análises recursos de data
warehouse, tolerância a falhas e outros recursos de nível empresarial.
Família de mecanismos de banco de dados incorporados

SQL Server Compact Edition – um mecanismo de banco de dados em processo
simples, criado para ser executado em dispositivos e desktops, voltado para o
armazenamento de dados local. A Compact Edition inclui um subconjunto de tipos de
dados do SQL Server 2005 e compartilha elementos comuns da linguagem do
Transact-SQL (T-SQL) com os mecanismos de serviço de dados.
Selecionando o banco de dados correto
Ao desenvolver um aplicativo que armazena e exibe dados, existem vários fatores
importantes que devem ser considerados, do armazenamento centralizado ao desempenho
no cliente e à capacitação da produtividade dos usuários quando a rede não está disponível.
Os desenvolvedores usaram várias tecnologias diferentes para atender às necessidades
específicas de seus aplicativos, mas cada tecnologia possui limitações inerentes.
XML
O XML e outras tecnologias baseadas em texto funcionam bem como um formato de
persistência e serialização, mas carecem da funcionalidade de consulta sofisticada, da
manipulação de dados e da funcionalidade transacional oferecidas pelos mecanismos de
banco de dados.
Access (Jet) e FoxPro (dbf)
Vários aplicativos oferecem mecanismos de armazenamento integrados criados para
atender às necessidades específicas de seus usuários. O Access e o FoxPro, sendo parte do
Microsoft Office, são exemplos de produtos que possuem mecanismos de banco de dados
integrados que funcionam bem em seu contexto, mas que nunca estiveram totalmente
integrados no ambiente de desenvolvimento do Visual Studio, por não serem considerados
mecanismos de armazenamento de dados genéricos.
Microsoft Data Engine (MSDE)
Como uma primeira tentativa de atender às necessidades de armazenamento de dados local
e de serviço de dados em pequena escala, o MSDE oferecia um sofisticado conjunto de
funcionalidades do SQL Server em um pacote menor. Apesar disso, os desenvolvedores
Escolhendo entre o SQL Server 2005 Compact Edition e o SQL Server 2005 Express Edition
4
ainda eram desafiados pelos requisitos de implantação de um mecanismo de serviço de
dados.
Conforme os requisitos de um armazenamento de dados local se tornaram mais refinados,
ficou claro que a abordagem de “tamanho único” comprometia muito os desenvolvedores e
usuários. Às vezes, leva algum tempo para se dar conta de que, mesmo obtendo o que se
pediu, não se conseguiu o que se queria. A abordagem revisada divide a família de produtos
em bancos de dados incorporados e de serviços de dados, que permite aos desenvolvedores
escolher a família de produtos apropriada para suas necessidades de aplicativos, mantendo
a compatibilidade com a mesma.
Microsoft SQL Server Express Edition e SQL Server Compact Edition
O SQL Server Express Edition é a evolução do MSDE e resolve vários dos problemas comuns
do MSDE relacionados com a facilidade de empacotamento e implantação. Exigindo direitos
administrativos para ser instalada, a Express Edition é consideravelmente menor que o
MSDE mas, com aproximadamente 53 MB, ainda é bastante grande para os cenários de
implantação da maioria dos clientes. Ela também foi ampliada para dar um suporte melhor
ao armazenamento de dados local quando a funcionalidade integral de um mecanismo de
serviço de dados é necessária.
O SQL Server Compact Edition não é um produto novo, mas uma evolução da família de
produtos SQL Server, que foi fornecida na plataforma Microsoft Mobile por vários anos.
Originalmente lançado em 2000, o SQL Server CE 1.0 era fornecido com o Embedded VB
(eVB) e o Embedded VC (eVC). O Visual Studio 2003 era fornecido com o SQL Server CE 2.0
como armazenamento local para a estrutura compacta. Respondendo aos clientes que
desejavam um armazenamento local comum do dispositivo para o Tablet PC, o SQL Server
CE tornou-se o SQL Server Mobile 3.0, sendo fornecido com o Visual Studio 2005. Em
novembro de 2006, o SQL Server Mobile tornou-se o SQL Server Compact Edition,
habilitando o mecanismo do SQL Server CE para toda a plataforma de desktop, e removeu a
restrição para dispositivos e o Tablet PC. O SQL Server Compact Edition foi criado para
atender às necessidades de aplicativos nos quais é importante incorporar um mecanismo de
dados simples diretamente no aplicativo.
Enquanto vários produtos da Microsoft eram fornecidos com o MSDE, muitos outros eram
fornecidos silenciosamente com o mecanismo do SQL Server Compact Edition, como o
Media Center PC, o Cliente do MSN e vários aplicativos do Windows Vista. As equipes de
produto reconheceram a necessidade de um conjunto central de recursos de banco de
dados e decidiram fornecer o mecanismo do SQL Server Compact Edition como
armazenamento de dados local para milhões de usuários. O mecanismo do SQL Server
Compact Edition não era visível para o usuário, pois era considerado parte do aplicativo.
Esse é o principal diferencial.
Os recursos de armazenamento de dados abordados neste documento vão além das
medidas tradicionais focadas no servidor dos parâmetros de comparação do TPC (Conselho
de processamento de transações) e da segurança para vários usuários. Um banco de dados
local precisa compartilhar seu ambiente com um conjunto de desafios diferente. Nós não
suspendemos, continuamos ou hibernamos servidores. Não assistimos filmes, jogamos,
executamos o Outlook ou apresentamos PowerPoints de nossos servidores. Não pensamos
nas características de utilização de energia e se o servidor deveria passar o dia sendo
alimentado por bateria, sendo carregado à noite. E não medimos o espaço em disco e de
instalação de um servidor de forma tão crítica quanto tendemos a instalar e configurar
muito menos servidores em comparação com cada cliente.
Escolhendo entre o SQL Server 2005 Compact Edition e o SQL Server 2005 Express Edition
5
A Figura 1 mostra dois cenários que têm uma única solução. Quando você precisa de
funcionalidade do serviço de dados, como a capacidade de dar suporte a vários usuários
remotos, deve iniciar com o SQL Server Express Edition e desenvolver a árvore da família
de serviços de dados. Se precisar de um armazenamento de dados para a plataforma
Pocket PC ou Smart Phone, ou precisar do mesmo armazenamento de dados do Smart
Phone ao desktop, o SQL Server Compact Edition será a opção apropriada. Este documento
se concentra nos principais recursos que são importantes para um armazenamento de
dados local e diferencia o SQL Server Express e o SQL Server Compact Edition com base
nesses recursos.
Escolhendo entre o SQL Server 2005 Compact Edition e o SQL Server 2005 Express Edition
6
SCENARIOS
START
HERE
Local
Data Store
Windows Mobile
PocketPC
SmartPhone
Compact Edtiion
Clear choice for
Embedded
Database
category
{
{
Compact Edtiion
Desktop
XP, TabletPC, Vista,
Windows 2000
DATA STORES
Data Service
{
Focus of this
white paper
Clear choice for
Database Server
category
Figura 1: Árvore de decisões entre o SQL Server Compact Edition e o SQL Server Express
Edition.
Serviços de dados
Um Serviço de dados é um mecanismo de banco de dados que fornece funcionalidade de
banco de dados a clientes de conexões remotas. Se o seu aplicativo fornece serviços de
dados centrais a clientes remotos, a Figura 1 mostra os produtos de serviços de dados do
Escolhendo entre o SQL Server 2005 Compact Edition e o SQL Server 2005 Express Edition
7
SQL Server disponíveis: SQL Server 2005 Express, Workgroup, Standard ou Enterprise
Edition. Aqui, você vai do serviço de dados pequeno e gratuito até os serviços de dados
tolerantes a falhas completos do SQL Server Enterprise Edition.
Armazenamentos de dados locais
Um armazenamento de dados local fornece a funcionalidade principal necessária de um
mecanismo de banco de dados relacional, incluindo funcionalidade de consultas sofisticada,
transações, persistência e os tipos de dados comuns usados em uma plataforma de serviço
de dados. O banco de dados é acessado de um cliente, apesar de não se limitar a uma única
conexão. Os exemplos podem variar do armazenamento em cache de catálogos de
produtos, estados e códigos de status a sofisticados aplicativos de contabilidade pessoal. O
aplicativo pode se comunicar com um serviço de dados central, mas precisa do
armazenamento local para melhorar o desempenho, ou o aplicativo deve funcionar quando
a conectividade não está disponível. O Microsoft Outlook 2003 demonstra a indistinção entre
o armazenamento local e central. Conforme você interage com o Outlook, a maioria das
operações são executadas com relação ao armazenamento de dados local. Quando a
conexão com o servidor do Exchange está disponível, o armazenamento local é sincronizado
com o serviço de dados central. É possível que o usuário nunca perceba que a conexão caiu.
Dispositivos móveis
Para os fins deste documento, um dispositivo móvel é qualquer hardware executado nas
plataformas Windows Mobile ou Windows CE. Consultando a Figura 1, você verá que, para
um aplicativo que exige um armazenamento de dados local e se destina a um dispositivo
móvel, o SQL Server 2005 Compact Edition é a opção óbvia.
Bancos de dados de desktop
Para os fins deste documento, um banco de dados de desktop se refere simplesmente à
plataforma Windows não-móvel, incluindo Windows XP, Windows Tablet PC, Windows 2000,
Windows Vista e Windows 2003 Server. Se o seu aplicativo exige um armazenamento de
dados local destinado à plataforma de desktop, você pode selecionar o SQL Server 2005
Compact Edition (que pertence à família de bancos de dados incorporados) ou o SQL Server
2005 Express Edition (que pertence à família de produtos de serviços de dados). A Microsoft
recomenda o SQL Server Compact Edition como banco de dados local padrão. Contudo, se o
seu aplicativo exigir alguns recursos de serviços de dados, talvez o SQL Server Express
Edition seja necessário.
O restante deste documento concentra-se em ajudá-lo a decidir entre o SQL Server 2005
Compact Edition ou o SQL Server 2005 Express Edition como a opção correta para seu
armazenamento de dados de aplicativos de desktop local.
Comparação de recursos de dados locais
Usando a lista de recursos mostrada na Tabela 1, você pode ver como o SQL Server
Compact e Express Edition concentram seus recursos nos cenários principais:
armazenamento local e serviços de dados, respectivamente. Essa lista de recursos não
pretende ser uma lista exaustiva dos recursos, especialmente os do SQL Server Express
Edition. Os recursos listados são específicos para quem precisa comparar somente os
armazenamentos de dados locais. Por exemplo, o SQL Server Express Edition pode utilizar
até 1GB de RAM para otimizar o processamento de consultas. Isso é ótimo para um serviço
de dados que pode precisar processar consultas complexas de vários clientes ao mesmo
tempo. Contudo, em um banco de dados local, existe um limite prático de quantos dados
Escolhendo entre o SQL Server 2005 Compact Edition e o SQL Server 2005 Express Edition
8
um usuário poderia digitalizar com um leitor de código de barras ou inserir fisicamente em
um determinado período.
Escolhendo entre o SQL Server 2005 Compact Edition e o SQL Server 2005 Express Edition
9
Recurso
Recursos de implantação/instalação
Tamanho da instalação
Implantação do ClickOnce
Instalado particularmente,
incorporado, com o aplicativo
Opção de instalação de nãoadministrador
Executado na plataforma Windows
Mobile
Instalado centralmente com um MSI
Executado em processo com o
aplicativo
Suporte a 64 bits
SQL Server Compact
Edition
SQL Server
Express Edition
Download de 1,7 MB
1,8 MB expandidos no disco
Download de 53,8 MB
~197 MB expandidos no disco
Versão 3.1
64 nativo na próxima versão
Executado como um serviço
Recursos de arquivo de dados
Formato de arquivo
Armazenamento de arquivo de dados
em um compartilhamento da rede
Suporte para várias extensões de
arquivo
Suporte ao tamanho do banco de
dados
Armazenamento de XML
Em processo com o
aplicativo
WOW (Windows on
Windows)
N+1
Arquivo único
Vários arquivos
4 GB
4 GB
Armazenado como
nText
Formato de arquivo sem código, de
documento seguro
Programação
Transact-SQL
Recursos de consulta comuns
Procedural T-SQL
Recursos Select, Case, If
Remote Data Access (RDA)
ADO.NET Sync Framework
Habilitado com o Visual
Studio Orcas
Suporte planejado para uma
versão futura
Assinante para replicação de
mesclagem
Transações simples
Transações distribuídas
Escolhendo entre o SQL Server 2005 Compact Edition e o SQL Server 2005 Express Edition
10
XML nativo, XQuery/QPath
Procedimentos armazenados, modos
de exibição, disparadores
Segurança baseada em funções
Número de conexões simultâneas
256
Ilimitado
Tabela 1: Comparação de recursos entre a Compact Edition e a Express Edition.
A comparação de recursos dos dois mecanismos de banco de dados não conta toda a
história. Várias questões filosóficas e funcionais precisam ser respondidas para fazer a
opção correta de armazenamento de dados local. Alguns dos fatores importantes a
considerar ao escolher o armazenamento de dados local são abordados nas seções a seguir.
Implantação e serviços
Como demonstrou a evolução dos aplicativos baseados na Web, a implantação representa
um dos maiores desafios para os aplicativos cliente. Quer seu aplicativo seja implantado
pela Internet ou instalado de um CD, a experiência de instalação e a complexidade do
processo de instalação têm um impacto direto sobre a percepção que o usuário tem do
produto e os custos relacionados às chamadas de suporte. A capacidade de desinstalar
facilmente um aplicativo e suas dependências também pode ter um grande impacto sobre
os custos de suporte e a percepção do usuário.
Suporte do ClickOnce
O SQL Server Express e o SQL Server Compact Edition podem ser incorporados na
instalação de seu aplicativo. O ClickOnce pode auxiliar na implantação de qualquer
mecanismo como um pré-requisito para seu aplicativo. O SQL Server Express Edition que é
executado como um Serviço do Windows deve ser instalado com um MSI. O SQL Server
Compact Edition possui um modelo de implantação por MSI para instalar o mecanismo
centralmente, o que também exige direitos administrativos. Entretanto, o SQL Server
Compact Edition, que é um conjunto de DLLs executado com o aplicativo que o hospeda,
pode ser implantado particularmente com o aplicativo. A implantação particular não exige
direitos administrativos.
Serviços centrais por meio do Microsoft Update
O SQL Server Express e o SQL Server Compact Edition podem ser atendidos pelo Microsoft
Update, quando instalados com o MSI. Quando o SQL Server Compact Edition é implantado
particularmente, as DLLs não são registradas com o miniaplicativo Adicionar ou Remover
Programas e não será atendido pelo Microsoft Update. Alguns fornecedores de aplicativos
encaram isso como uma vantagem. Apesar de os service packs e hotfixes passarem por
rigorosos testes de compatibilidade com versões anteriores, às vezes os problemas
ocasionados por eles continuam afetando o funcionamento de um aplicativo. Ao implantar o
SQL Server Compact Edition particularmente com o aplicativo, os proprietários do aplicativo
podem testar a versão do serviço e depois implantar os componentes atualizados do SQL
Server Compact Edition, com uma versão atualizada e testada de seu aplicativo. A
implantação particular do SQL Server Compact Edition com cada aplicativo significa que
você possui várias cópias do mecanismo. Considerando que todo o tempo de execução é
menor que algumas imagens digitais, normalmente o tamanho não é levado em
Escolhendo entre o SQL Server 2005 Compact Edition e o SQL Server 2005 Express Edition
11
consideração, em comparação com a vantagem dos serviços em nível de aplicativo e da
capacidade de instalar o aplicativo e seus componentes sem direitos administrativos.
Implantação do SQL Server Express Edition
O SQL Server Express Edition, sendo um servidor baseado em produto com um sofisticado
conjunto de recursos de serviços de dados, inclui vários componentes que você pode
configurar durante a instalação. O SQL Server Express Edition foi criado para ser seguro por
padrão; então, a instalação padrão é otimizada para funcionar no cenário de
armazenamento de dados local. O instalador do SQL Server Express Edition inclui uma
abrangente interface de linha de comando, para permitir aos desenvolvedores instalar e
configurar o SQL Server Express quando a instalação padrão não atende às suas
necessidades.
Implantação do SQL Server Compact Edition
O SQL Server Compact Edition, no outro extremo do espectro, foi criado para ser pequeno e
fácil de implantar do início. Os dispositivos móveis, como o Pocket PC e o Smartphone, não
possuem ambientes de instalação complexos e não têm muitos recursos. O SQL Server
Compact Edition, executado em processo com o aplicativo que o hospeda, não possui
nenhum serviço ou outras opções a serem configurados durante a instalação. O SQL Server
Compact Edition expõe suas opções de configuração na cadeia de caracteres de conexão,
permitindo que cada instância especifique parâmetros relativos àquele cenário de utilização
do aplicativo. Essas DLLs podem ser instaladas centralmente no computador de um usuário
com um MSI. Contudo, para usar o MSI é necessário possuir direitos administrativos a fim
de registrar o provedor gerenciado pelo ADO.NET no GAC (Global Assembly Cache). As
mesmas DLLs também podem ser implantadas particularmente no aplicativo que as
hospeda. Os aplicativos cliente, como aqueles implantados com o ClickOnce, normalmente
são instalados sob as pastas Documents and Settings do usuário, o que significa que o
processo de instalação não exige direitos administrativos.
Um dos outros benefícios da implantação particular é o rastreamento de dependências. Se
um usuário decidir desinstalar seu aplicativo, não haverá etapas adicionais para que o
aplicativo e o armazenamento de dados sejam completamente desinstalados. Ao usar o
modelo de implantação central por MSI, é necessário que o aplicativo faça a contagem de
referência do uso do mecanismo do banco de dados ou simplesmente exija que o usuário
tenha ciência de que a desinstalação do produto não retornará o ambiente a seu estado
original.
Programação e modelo de acesso a dados
Os recursos de programação e as prioridades de um banco de dados local podem ser
bastante diferentes daqueles disponíveis em um serviço de dados. O SQL Server Express
Edition oferece vários recursos que não existem no SQL Server Compact Edition; contudo, o
SQL Server Compact Edition possui alguns recursos que não existem no SQL Server Express
Edition, que são exclusivos de um modelo de programação local.
Modelo de mecanismos de serviço de dados
Os mecanismos de banco de dados de serviços de dados clássicos, como o SQL Server
2005, foram criados para atender a vários usuários e até mesmo vários aplicativos
simultaneamente. Por isso, os mecanismos de serviços de dados normalmente são
otimizados para fornecer desempenho, abstração e gerenciamento de funções complexo.
Escolhendo entre o SQL Server 2005 Compact Edition e o SQL Server 2005 Express Edition
12
Modelo de mecanismos de banco de dados incorporados
O mecanismo de banco de dados incorporado foi criado em torno do conceito de um único
usuário e dados que não são compartilhados diretamente com outros usuários. O
desempenho é medido em todos os aplicativos que o usuário possa estar executando e
normalmente os dados são particionados para cada usuário.
Procedimentos armazenados e modos de exibição
Se você precisa ter o mesmo modelo de programação que o serviço de dados, esse fato
isolado já pode direcionar sua decisão para o SQL Server Express Edition. Ele permite que
as mesmas construções de procedimentos e T-SQL dêem suporte a procedimentos
armazenados, da mesma forma que para outras edições do serviço de dados. O SQL Server
Compact Edition não dá suporte a procedimentos armazenados, modos de exibição ou
disparadores. Por isso, alguns desenvolvedores não consideram o SQL Server Compact
Edition como um armazenamento de dados “real”. Contudo, há algumas coisas que deve-se
ter em mente antes de chegar a essa conclusão.
Quando se pensa nas práticas comuns, várias empresa padronizaram o uso de
procedimentos armazenados para acessar dados no banco de dados e esperam que o
procedimento armazenado dê suporte a um modelo de programação comum entre seu
banco de dados local e o serviço de dados. Entretanto, às vezes é necessário reavaliar por
que esses padrões foram criados e questionar se eles ainda se aplicam.
Os procedimentos armazenados podem variar de simples a complexos, mas normalmente
os desenvolvedores e DBAs mencionam três motivos principais para padronizar os
procedimentos armazenados: desempenho, abstração e segurança. Considere o fato de que
vários bancos de dados de serviços podem ser usados por vários aplicativos ao mesmo
tempo. Conforme a utilização do banco de dados cresce, colunas e tabelas são adicionadas
aos requisitos de dados que sempre se expandem. A carga do banco de dados pode
aumentar em determinados pontos, exigindo que o DBA ajuste o banco de dados com
alterações de esquema. Como um serviço de dados nem sempre é “proprietário” ou nem
mesmo sabe quais aplicativos individuais estão utilizando seu dados, todas as alterações
internas do esquema devem ser abstraídas de quaisquer aplicativos que estejam
interagindo. Por isso, vários DBAs removem a interação em nível de tabela e permitem o
acesso somente por meio de procedimentos armazenados e modos de exibição.
Da mesma maneira, vários usuários diferentes e tipos de usuários acessam o serviço de
dados simultaneamente. Os usuários podem ter funções diferentes e, portanto, devem ter
diferentes níveis de acesso aos dados. Os procedimentos armazenados e modos de exibição
fornecem um portal de segurança para limitar a função de um usuário a determinadas
operações de dados. Uma determinada função recebe um conjunto de permissões para
procedimentos armazenados e modos de exibição diferentes.
Freqüentemente, os problemas de desempenho são gerenciados com procedimentos
armazenados para armazenar planos de consulta em cache e ajustar as consultas em
procedimentos armazenados para evitar a necessidade fazer alterações no aplicativo.
Quando você considera que um banco de dados incorporado é, por definição, parte do
aplicativo, as mesmas regras não necessariamente se aplicam. O banco de dados tem a
mesma versão do aplicativo, portanto, os problemas de abstração não se aplicam e não se
percebem os benefícios de ter de criar e manter procedimentos armazenados. Como os
dados locais já devem estar particionados nos dados permitidos pela função de um usuário,
as questões de segurança não necessariamente se aplicam aqui. O desempenho de planos
de consulta em cache é percebido quando várias operações simultâneas ocorrem de um
Escolhendo entre o SQL Server 2005 Compact Edition e o SQL Server 2005 Express Edition
13
grande número de usuários. A sobrecarga de manter planos de consulta não é um problema
em um ambiente de servidor, pois em geral os servidores têm grandes quantidades de
memória dedicada. Conforme os planos de consulta mudam, um DBA pode otimizar esses
planos de consulta no servidor.
Uma outra categoria de problemas abordada pelos procedimentos armazenados está
relacionada com as operações de procedimentos. Elas podem variar da manutenção de uma
última coluna de edição, de uma tabela do esquema em estrela até a implementação de
regras comerciais. Certamente essas operações ainda podem existir em um banco de dados
local. Contudo, dada a opção, talvez você não queira limitar sua capacidade de escrever
código apenas em T-SQL, mesmo que haja suporte para a linguagem T-SQL completa. Em
vez disso, você pode optar por tirar proveito de toda a variedade de sua linguagem de
código gerenciada pelo .NET favorita. Inovações adicionais, como o LINQ e o Modelo de
dados de entidades do ADO.NET fornecem um conjunto ainda mais amplo de
funcionalidades à sua disposição.
Delegação e microgerenciamento
Quando os DBAs usam procedimentos armazenados para limitar o acesso ao banco de
dados, também limitam os tipos de perguntas que um aplicativo ou usuário podem fazer
dos dados. Em um ambiente cliente servidor, pode ser vantajoso limitar as perguntas
complexas que um aplicativo pode fazer sobre o banco de dados. Em um banco de dados
compartilhado, o complexo equivale ao caro porque todos os usuários podem ser
“penalizados”, pois vários usuários podem fazer perguntas complexas e caras
simultaneamente. Em um banco de dados local, perguntas complexas afetam apenas o
usuário atual. As perguntas complexas também podem ser muito importantes ou podem ser
perguntas significativas que precisam ser feitas. Isso não quer dizer que você não deve criar
o conjunto correto de índices, criar seu banco de dados voltado para o desempenho ou
simplesmente escrever consultas tendo o desempenho em mente. Quer dizer simplesmente
que quando o banco de dados é local para o aplicativo, o desenvolvedor tem muito mais
flexibilidade para executar consultas complexas que seriam altamente problemáticas em um
ambiente de serviço de dados, mas altamente produtivas e inspiradoras para um usuário.
Em um banco de dados local, a complexidade se alterna entre o caro e o bastante valioso.
Isso não sugere realmente que os procedimentos armazenados também não possam ser
usados localmente. A questão é que os procedimentos armazenados que você cria no
servidor provavelmente não representam os tipos de consultas que você faria no cliente.
Considere um cenário semelhante, o doméstico. Como você provê sua casa para preparar
refeições específicas para sua família? Você sincronizaria os alimentos em sua cozinha com
um conjunto filtrado de material da loja. Seu supermercado local pode fornecer algumas
refeições semiprontas, mas ele não poderia manter a variedade de pratos e diferentes níveis
de variações de temperos para cada cliente. De maneira semelhante, o servidor pode não
responder realmente a várias das perguntas específicas. Ele pode expor um conjunto de
serviços e procedimentos armazenados para manter o banco de dados local sincronizado
com o servidor. Os procedimentos armazenados retornam as diferenças entre os dados
comparados localmente com os dados no servidor, permitindo que o aplicativo do cliente e o
desenvolvedor do aplicativo forneçam uma ampla variedade de perguntas sem exigir que
um DBA otimize cada uma delas.
Recursos exclusivos de um banco de dados local
Escolhendo entre o SQL Server 2005 Compact Edition e o SQL Server 2005 Express Edition
14
O acesso a dados de um serviço de dados exige que os desenvolvedores pensem em
escalabilidade e simultaneidade. Os desenvolvedores que esperam que seus aplicativos se
adaptem a centenas e milhares de usuários simultâneos nunca manteriam uma conexão
aberta com o banco de dados ou utilizariam um cursor atualizável que permitisse que o
usuário exibisse e editasse os dados. Os desenvolvedores do FoxPro e do Access se
referiram a isso como o “Bloqueio do almoço”. Um usuário abriria um formulário, começaria
a fazer alguma alteração e iria almoçar. Ele poderia até sair de férias. Os outros usuários
que precisam fazer uma alteração nesses dados ficam bloqueados. Para resolver o impasse,
alguém transmitiria uma mensagem solicitando à pessoa que abriu o formulário do cliente
que o fechasse.
A programação do serviço de dados envolve a recuperação de um instantâneo de dados,
retornando uma cópia para o cliente e liberando todos os recursos do lado do servidor.
Freqüentemente, isso é chamado de programação sem monitoração de estado ou
desconectada. O cliente edita a cópia dos dados, retornando as alterações para o servidor
com os valores originais. O código que aplica as alterações usa os valores originais para
detectar se outro usuário alterou os dados enquanto o usuário trabalhava com a cópia
desconectada. Freqüentemente, isso é chamado de programação para simultaneidade. Os
recursos do ADO.NET, como o modelo DataSet e DataAdapter, possibilitam isso, fornecendo
serviços do modelo de programação desconectada no DataSet. Outras tecnologias de
mapeamento de objeto / relacional (O/R) devem implementar serviços semelhantes para
fornecer uma solução escalonável.
Quando os aplicativos trabalham em um banco de dados local, o próprio banco de dados
pode ser a cópia desconectada. Em vez de criar uma outra cópia desconectada com um
DataSet ou alguma outra tecnologia O/R, muitas vezes é mais fácil simplesmente abrir uma
conexão e ligar aos dados o resultado de uma consulta atualizável. Como o banco de dados
está incorporado no aplicativo, não há necessidade de manter um complexo modelo de
programação sem monitoração de estado. O SQL Server Compact Edition dá suporte a um
cursor rolável atualizável com SqlCeResultSet, além de dar suporte ao acesso a arquivos
semelhantes a ISAM, aproveitando os índices na tabela para mover-se diretamente para
uma linha específica.
Conforme as alterações do armazenamento local são aplicadas ao servidor, o modelo sem
monitoração de estado precisa ser considerado. Então, os procedimentos armazenados que
abstraem o esquema de dados local em comparação com os esquemas do servidor entram
novamente no jogo.
Usando a ferramenta correta para o trabalho correto, você pode continuar se beneficiando
dos procedimentos armazenados no servidor e ainda aproveitar recursos como o
SqlCeResultSet ou as inovações, como o LINQ e o Modelo de entidades do ADO.NET V3.
Protegendo seus dados locais
A segurança sempre representa uma grande parcela do design de qualquer aplicativo. O
SQL Server Express e o SQL Server Compact Edition são plataformas seguras que foram
criadas para ajudá-lo a proteger seus dados confidenciais. A forma como cada edição
gerencia a segurança é diferente e essas diferenças devem ser consideradas ao fazer sua
opção de mecanismo para o armazenamento de dados local. Esta seção contém uma visão
geral dos princípios do design de segurança de cada mecanismo e compara como esse
design impacta diferentes ameaças de segurança que seu armazenamento de dados local
pode enfrentar.
Escolhendo entre o SQL Server 2005 Compact Edition e o SQL Server 2005 Express Edition
15
Segurança física
Os dois mecanismos de banco de dados discutidos armazenam dados em um ou mais
arquivos. A forma mais significativa para alguém proteger seus dados é limitar o acesso
físico ao arquivo, de maneira que apenas os usuários que necessitam do acesso aos dados
podem realmente alcançar o arquivo. A segurança física inclui o uso de uma segurança
baseada no Windows apropriada para controlar o acesso ao arquivo no disco e a segurança
das instalações e do equipamento em que o arquivo de dados reside. Existem muitas
histórias de notícias atuais sobre dados confidenciais perdidos em conseqüência do acesso
impróprio de criminosos aos arquivos físicos ou ao equipamento no qual os arquivos
estavam armazenados. Portanto, a segurança física do arquivo é importante demais para
ser ignorada.
Princípios do design de segurança do SQL Server Compact Edition
O SQL Server Compact Edition foi criado desde o início assumindo que o usuário tenha
acesso ao arquivo físico. Sem um mecanismo de segurança adicional, o usuário poderia
ignorar seu aplicativo e usar ferramentas como o MSQuery para exibir e editar os dados
brutos. O SQL Server Compact Edition dá suporte à proteção por senha e à criptografia do
arquivo de dados, limitando assim o acesso ao aplicativo que incorpora a senha. A proteção
por senha do arquivo de banco de dados adiciona uma camada de proteção que viaja com o
arquivo, tornando mais difícil acessar os dados, no caso de um usuário não autorizado obter
o arquivo.
Não existem níveis adicionais de acesso aos dados oferecidos com segurança baseada no
arquivo. Uma única senha dá acesso total ao arquivo. Contudo, normalmente os arquivos de
dados locais particionam os dados antes de chegarem na máquina do usuário local. Mesmo
no caso de várias pessoas compartilharem um determinado laptop, cada usuário teria seu
próprio arquivo de dados local com sua partição dos dados. Da mesma maneira que com
qualquer outro arquivo, a segurança do Windows é usada para limitar o acesso de cada
usuário aos arquivos de dados. Uma vez que o usuário tem seu arquivo de dados, por que o
aplicativo armazenaria todos os contatos de vendas e não apenas os contatos daquele
determinado usuário? Por que você armazenaria informações de salário localmente, se o
usuário não possui as permissões para exibi-las ou editá-las? Além dos aspectos de
segurança, essa também é uma forma de particionar a quantidade de dados mantidos
localmente. Neste modelo, o conceito de segurança baseada em funções não tem qualquer
significado. Em vez de implementar e manter um conjunto complexo de funções localmente,
a maioria dos aplicativos manteria um modelo de segurança baseado em funções no
servidor e usaria as funções para sincronizar os dados apropriados com o armazenamento
de dados local de cada usuário.
Princípios do design de segurança do SQL Server Express Edition
O SQL Server Express Edition, sendo parte da família de serviços de dados, foi criado para
aplicar a segurança nos limites do serviço. Ao proteger os dados nos servidores, a principal
linha de defesa é a segurança física. Existe uma porta física e, freqüentemente, vários
gadgets de segurança de alta tecnologia entre seu inimigo e a sala de computadores onde
ficam os servidores de dados. Se o inimigo conseguir chegar à sala dos computadores e não
morrer de medo, ele deverá fazer logon no computador usando credenciais de usuário
válidas. Se o usuário tiver direitos administrativos e obter acesso ao servidor, normalmente
o “jogo estará acabado”. Se o usuário conseguir ir tão longe, provavelmente será mais fácil
simplesmente ir embora com a unidade física ou todo o computador. O SQL Server Express
Escolhendo entre o SQL Server 2005 Compact Edition e o SQL Server 2005 Express Edition
16
Edition, como o restante das SKUs de serviços de dados, depende bastante da segurança
física para evitar que pessoas não autorizadas alcancem o arquivo do banco de dados. Não
é fácil conseguir chegar a uma sala de computadores; entretanto, conectar um serviço de
dados remotamente é um recurso. A conexão remota está desativada por padrão no SQL
Server Express Edition.
A família de serviços de dados dos produtos SQL Server implementa uma segurança
baseada em funções e oferece várias opções de segurança relacionadas a como as conexões
com o servidor são estabelecidas. As edições do serviço de dados podem implementar
criptografia em nível de tabela, coluna e linha. A conexão com o banco de dados deve ser
autorizada antes que qualquer dado possa ser retornado. O gerente de RH pode ter
permissões para exibir e editar informações de salários, mas não pode alterar os preços de
produtos. Parece bastante seguro, não é? Totalmente! A família de produtos de serviços de
dados SQL Server possui alguns dos melhores recursos de segurança do segmento,
protegendo os dados antes e durante sua viagem pelos fios.
As permissões em um modelo de segurança baseado em funções são atribuídas por
usuários especiais nas edições do serviço de dados, incluindo Administradores do sistema,
Administradores do banco de dados e Proprietários do banco de dados. Esses usuários de
alto nível não possuem qualquer restrição com relação ao acesso a um banco de dados, o
que tem algumas implicações, quando se usa o SQL Server Express Edition como
armazenamento de dados local. Por exemplo, um Administrador do sistema tem acesso
total a qualquer arquivo do banco de dados do SQL Server Express Edition que ele possui.
Se o arquivo do banco de dados usado para o armazenamento local não for protegido
fisicamente e puder ser roubado por um criminoso, esse criminoso poderia então acessar
seus dados, anexando o banco de dados a sua própria cópia do SQL Server Express Edition,
na qual ele é um Administrador do sistema.
Instâncias do Usuário do SQL Server Express Edition – um curso rápido
Uma descrição completa das Instâncias do Usuário transcende o escopo deste documento,
mas informações detalhadas podem ser encontradas no MSDN. Aqui, abordamos apenas as
implicações de segurança das Instâncias do Usuário, pois elas impactam a escolha do
armazenamento de dados local.
Um dos desafios enfrentados pelos desenvolvedores com o MSDE foi a dificuldade de anexar
um banco de dados a uma das instâncias do MSDE. Essa operação exigia que o usuário que
estivesse executando o aplicativo tivesse direitos de proprietário do banco de dados. Isso
tornou muito difícil para os desenvolvedores implantar arquivos de banco de dados do
MSDE, além de dificultar também o gerenciamento de seus arquivos de bancos de dados
locais com seus projetos.
Conforme descrito anteriormente, o provisionamento de contas em cada máquina,
permitindo aos usuários anexar arquivos de banco de dados efetivamente, dá aos usuários
um acesso de alto nível a todos os bancos de dados anexados ao SQL Server Express
Edition. A necessidade de configurar os usuários dessa forma limita a capacidade de evitar
que diferentes usuários tenham acesso aos dados de outro usuário anexados ao mesmo
servidor. Freqüentemente, manter os dados de cada usuário separados é um requisito
importante do armazenamento de dados local.
Para implementar essa separação dos dados do usuário e superar os problemas de
anexação dos arquivos de banco de dados, o SQL Server Express Edition apresentou um
novo recurso no 2005, chamado Instâncias do Usuário. As Instâncias do Usuário funcionam
usando uma cadeia de caracteres especial de conexão quando um aplicativo se conecta ao
Escolhendo entre o SQL Server 2005 Compact Edition e o SQL Server 2005 Express Edition
17
SQL Server Express Edition. Quando a instância principal enxerga essa cadeia de caracteres
especial de conexão, ela verifica e/ou cria uma nova instância do SQL Server Express no
contexto do usuário e anexa do banco de dados ao novo processo. Esse outro processo é
executado como um Serviço do Windows adicional sob as credenciais do usuário. Esse novo
Serviço do Windows consiste em uma instância completamente independente da instância
principal do SQL Server Express Edition e possui suas próprias cópias dos bancos de dados
do sistema (Master, TempDB e Model). Esses bancos de dados de “instância do usuário”
existem em pastas específicas do usuário. Como a Instância do Usuário é executada no
contexto do usuário, ele é considerado o proprietário do banco de dados e pode realizar
todas as tarefas necessárias relacionadas ao trabalho com a Express Edition. Outros
usuários na mesma máquina não terão acesso a instâncias de outros usuários, somente às
suas.
As Instâncias do Usuário permitem a separação de usuários, fornecendo uma instância
exclusiva da Express Edition para cada usuário, mas também oferecem ao usuário o
controle completo sobre os bancos de dados anexados à Instância do Usuário. Uma vez em
execução, o proprietário da Instância do Usuário pode exibir e editar todas as partes do
banco de dados, incluindo a configuração de esquemas, dados e recursos,
independentemente de permissões, senhas ou criptografia aplicadas aos objetos do banco
de dados. Novamente, a proteção do arquivo do banco de dados usando a segurança física
é importante. Para cenários de dados locais nos quais laptops são roubados com freqüência,
é importante entender que as Instâncias do Usuário da Express Edition poderiam ser outra
via que permitiria que usuários não autorizados acessassem seu banco de dados, se
tivessem o arquivo em seu poder.
Outras ameaças de segurança
Evitar que usuários não autorizados se conectem ao seu banco de dados é a principal
preocupação da maioria dos desenvolvedores de bancos de dados, mas há outras ameaças
que podem resultar no acesso ilícito aos seus dados. Exemplos dessas outras ameaças
incluem ataques de mídia, nos quais o arquivo do banco de dados real é usado para
executar código ilícito no computador, e roubo de hardware, quando o computador físico
que contém seu arquivo de dados é roubado.
Ataques de phishing e de mídia
Normalmente, nós pensamos em proteger os arquivos de dados contra roubos. Um outro
aspecto da segurança é como o inimigo pode obter informações de você. Eles podem roubar
seu banco de dados e você certamente se preparou para isso, mas e se eles inserissem
algum código em um banco de dados que você acabou de abrir? Nós todos vimos o email
dizendo "Verifiquem". Os ataques de mídia são realizados com a inclusão de código ilícito
em um arquivo e convencendo um usuário de que o arquivo provém de uma fonte confiável.
Quando o arquivo é aberto, o código ilícito é executado e conclui a tarefa que foi criado para
realizar. Um exemplo de ataque de mídia é um vírus de macro do Word.
O SQL Server Express Edition dá suporte a um modelo de eventos sofisticado que permite
que os desenvolvedores criem aplicativos para responder a eventos específicos no banco de
dados. Por exemplo, você pode executar uma ação de log personalizada sempre que tipos
específicos de dados são adicionados ao banco de dados ou até mesmo executar um
procedimento armazenado quando um arquivo do banco de dados é anexado. Os recursos
de programação avançada do SQL Server Express Edition fornecem poder significativo para
Escolhendo entre o SQL Server 2005 Compact Edition e o SQL Server 2005 Express Edition
18
o desenvolvimento de aplicativos, mas também podem ser usados para executar um código
ilícito que poderia executar ações como o envio de dados a uma pessoa não autorizada.
A Microsoft considera que os arquivos MDF do SQL Server sejam o equivalente em
segurança aos arquivos .EXE e que devem ser tratados com a mesma preocupação de
quando se recebe um EXE de fontes desconhecidas. Para minimizar a possibilidade de
execução de um código ilícito, os arquivos de dados do SQL Server Express Edition devem
usar sempre uma extensão MDF.
Os usuários não devem anexar arquivos de banco de dados de fontes desconhecidas. Você
também deve tentar não ser levado a pensar que um arquivo de banco de dados provém de
uma fonte confiável quando isso não é verdade.
Arquivos de dados do SQL Server Compact Edition são documentos seguros
Como os arquivos de dados do SQL Server Compact Edition não dão suporte a
procedimentos armazenados ou outros códigos no banco de dados, esse formato de arquivo
sem código é considerado um documento seguro. Diferentemente dos formatos de arquivo
de serviço de dados, a Compact Edition não possui qualquer “recurso” que permita a
alguém colocar no banco de dados um código que seja executado como resultado de um
evento. Com um formato de documento seguro, os arquivos de dados da Compact Edition
podem usar qualquer extensão de arquivo, permitindo que você associe um aplicativo de
receita com uma extensão .receita. Clicando duas vezes no arquivo .receita de seu amigo,
você poderia iniciar um aplicativo de receita, da mesma forma como abriria um documento
do Microsoft Office. Embora não tão poderoso quanto os arquivos de serviços de dados, com
os arquivos do SQL Server Compact Edition você não precisa se preocupar sobre a execução
de código em seu nome.
Protegendo dados do laptop roubado
Quando os dados são expostos ou residem no campo, a possibilidade de que caiam em
mãos erradas sempre existe. Isso se aplica tanto ao material impresso quanto eletrônico.
Os dados impressos são um pouco mais difíceis de proteger por senha, mas o material
eletrônico é mais tentador para seus inimigos, pois em geral contém conjuntos de dados
maiores e podem ser usados rapidamente contra você. Permitir que os dados sejam
armazenados localmente aumenta as oportunidades de os dados caírem em mãos erradas.
Da mesma forma, os dados podem ser roubados de um serviço de dados central. Na
verdade, o roubo de dados locais deve ter menos valor paras seus inimigos, pois os dados
armazenados localmente provavelmente seriam um subconjunto dos dados disponíveis
pelos serviços de dados.
A segurança nunca é finita. As empresas que vendem cofres nunca garantem que eles
sejam à prova de roubos ou de incêndios. As taxas de segurança são classificadas de acordo
com o tempo que um ladrão profissional levaria para abrir o cofre. Com tempo suficiente,
um ladrão profissional sempre consegue entrar. Uma vez que o ladrão profissional está com
o arquivo, tendo tempo suficiente, ele obterá os dados. Contudo, quem já viu algum
programa de televisão sobre criminosos reais sabe que existem muitos que não podem ser
considerados profissionais e que não irão muito longe se forem adotadas algumas camadas
de segurança básica.
Um exemplo que gostaria de mencionar é o “fator armadilha”. Se eu deixei uma nota de
R$ 100 presa à porta do meu escritório durante o final de semana, presumo que ela tenha
sido roubada e, embora desapontado, não ficaria surpreso com isso e não esperaria a
solidariedade de meus colegas. Contudo, se eu tivesse colocado a mesma nota de R$ 100
Escolhendo entre o SQL Server 2005 Compact Edition e o SQL Server 2005 Express Edition
19
em um envelope na gaveta trancada de minha mesa, meus colegas me apoiariam e
certamente a segurança do edifício se envolveria.
A melhor maneira de proteger seus dados é nunca permitir que alguém os acesse e ponto
final. Com qualquer outra diretiva “segura”, a realidade é diferente. A segunda melhor coisa
para limitar sua exposição é restringir a quantidade de dados que o inimigo poderia acessar.
O seguro de bancos e caixas eletrônicos se baseia no valor máximo de dinheiro que mantêm
no local, o que pode minimizar a exposição. O valor do dinheiro necessário para manter
seus negócios é calculado. Se você limitar a quantidade de dados de que seus usuários
precisam para serem mais produtivos, você minimizará a exposição ao risco. Os usuários
precisam dos números de cartão de crédito de todos os seus clientes? Contudo, da mesma
maneira que um caixa eletrônico deve ter uma quantidade apropriada de dinheiro para ser
lucrativo, você não pode restringir os usuários, ou verá que eles serão menos produtivos e
menos rentáveis para seus negócios. As empresas lucrativas funcionam melhor quando seu
pessoal possui os recursos necessários.
Aproveitando os recursos de segurança do Windows
Depois de encontrar a parcela correta de dados para cara cliente, é necessário proteger
esses dados localmente. Existem duas categorias de exibição de dados. Uma é por meio das
lentes de seu aplicativo; a outra é exibindo os dados brutos diretamente. O SQL Server
Compact Edition possui uma pequena vantagem aqui, pois você pode proteger o banco de
dados por senha e criptografar o arquivo. Os dados do SQL Server Express Edition podem
ignorar as senhas colocadas no banco de dados, anexando o banco de dados com o recurso
de Instância do Usuário.
Contudo, da mesma forma que com os cofres, a proteção do banco de dados por senha não
assegura que o inimigo não consiga obter os dados, ela apenas o retarda.
É nesse ponto que se pode aproveitar os recursos de segurança do Windows. A primeira
coisa a fazer é implementar uma diretiva de senha forte. Contudo, se os usuários não
bloquearem seus laptops, o inimigo precisará simplesmente pegá-lo e poderá ver os
mesmos dados que você. É fácil esquecer de bloquear o computador ao se afastar dele, mas
o Windows oferece duas maneiras de bloquear um computador automaticamente. Usando
as Propriedades de Opções de Energia no Painel de Controle para solicitar uma senha ao
continuar o laptop do modo de espera, como mostrado na Figura 2.
Figura 2: Configurando as Propriedades de Opções de Energia.
O segundo recurso de segurança do Windows aproveita as Propriedades da Proteção de Tela
para bloquear o laptop depois da ativação da proteção de tela. A definição de um limiar de
espera baixo pode ser inconveniente, pois o usuário precisaria digitar sua senha
constantemente. Vários laptops novos têm incorporado um leitor de digitais que, apesar de
Escolhendo entre o SQL Server 2005 Compact Edition e o SQL Server 2005 Express Edition
20
não ser à prova de falhas, equilibra a segurança com a facilidade de uso, retardando seus
inimigos de uma maneira mais fácil para seus usuários. Essa opção é mostrada na Figura 3.
Figura 3: Configurando as Propriedades da Proteção de Tela.
Sistema de arquivos criptografados do Windows (EFS)
O último recurso de segurança que vale a pena mencionar é o Sistema de arquivos
criptografados (EFS) do Windows, que permite que seus arquivos de dados sejam
criptografados no nível do sistema operacional. O SQL Server Express e o SQL Server
Compact Edition podem tirar vantagem do EFS.
Ao selecionar as propriedades do seu arquivo de dados, você pode escolher os recursos
avançados e verificar a opção de criptografar o arquivo no nível do sistema operacional.
Os arquivos de dados do SQL Server Compact Edition sempre são abertos em processo com
o aplicativo que os hospeda, que está em execução no contexto do usuário atual; então, o
EFS está sempre disponível. O SQL Server Express Edition pode usar o EFS somente quando
o arquivo de dados é usado em conjunto com as Instâncias do Usuário. Os arquivos do
banco de dados anexados às principais instâncias do SQL Server Express Edition não podem
usar o EFS porque o arquivo está sendo aberto pela conta de serviço do SQL Server Express
Edition e não pelo usuário atual.
Ao usar o EFS, um usuário não pode copiar o arquivo sem confirmar que está sendo perdida
a capacidade de criptografar o arquivo de dados. O Windows EFS também impede que os
usuários abram e copiem arquivos que foram criptografados por outros usuários e evita a
montagem de discos rígidos ou o acesso por uma pastas compartilhada incidental exposta
por meio da placa de rede sem fio. A Figura 4 mostra como configurar o EFS e os avisos que
aparecem.
Escolhendo entre o SQL Server 2005 Compact Edition e o SQL Server 2005 Express Edition
21
Figura 4: Configurando o EFS
A combinação dos recursos de segurança do SQL Server Express ou do SQL Server Compact
Edition com os recursos de segurança do Windows fornece um nível mais alto de segurança
que qualquer dos mecanismos sozinho. A segurança aumentada permite que você aproveite
a maior produtividade disponível quando os dados são armazenados localmente e não é
necessário que os usuários estejam conectados à rede para o acesso a todos os dados.
Medindo o desempenho
Normalmente, quando alguém pergunta sobre o desempenho de um banco de dados, se
começa a analisar as métricas de transações por segundo. Quantas consultas, inserções,
atualizações e exclusões simultâneas podem ser executadas no intervalo de um segundo?
Ao pensar em um armazenamento de dados local, é importante retornar os resultados
rapidamente, mas um usuário não pode digitar tão rápido. Mesmo ao usar um leitor de
código de barras, existe um limite prático da quantidade de dados que podem ser inseridos.
Da mesma maneira, quantas perguntas um único usuário pode fazer para o armazenamento
de dados local?
Os armazenamentos de dados locais são componentes de um aplicativo geral: um aplicativo
que compartilha os mesmos recursos que o banco de dados. Os usuários realizam diversas
tarefas executando vários aplicativos ao mesmo tempo. Um usuário normal deve ter o
Outlook aberto para monitorar seus emails e seu calendário. O usuário pode estar editando
uma apresentação do PowerPoint, usando o Microsoft Word para rastrear suas anotações. O
programa de mensagens instantâneas e/ou o Office Communicator é executado minimizado,
aguardando os números de vendas mais atualizados. O Internet Explorer atualiza
continuamente as condições atuais de tráfego, enquanto você ouve suas músicas favoritas
no Windows Media Player. O Outlook o lembra de uma reunião com seu parceiro no café
perto do escritório. Ao chegar ao café, você vai querer mostrar rapidamente o progresso
que fez na apresentação, então você fecha o laptop, entrando no modo de espera ou
hibernação sem encerrar nenhum dos aplicativos em execução. No caminho, você percebe
que esqueceu o endereço do café, então, ao parar no semáforo, abre o laptop para
continuar os aplicativos e exibir o calendário.
Você pode imaginar a reação do DBA ao pedir que ele ajustasse o banco de dados para esse
ambiente? Em um ambiente cliente, o desempenho é medido pela produtividade geral do
usuário. Normalmente, os serviços de dados são hospedados em servidores dedicados e são
ajustados para executar milhares de operações por segundo. Eles são otimizados para
aproveitar todo e qualquer recurso disponível. De maneira semelhante, os caminhões
podem transportar cargas enormes pelo país. Eles levam um pouco mais de tempo para
iniciar e parar mas, quando estão andando, são imensamente poderosos. Por outro lado,
uma motocicleta pode iniciar e parar rapidamente. Ela pode contornar o tráfego pela cidade,
estacionando nas menores vagas, entregando mensagens em minutos. Um caminhão 53
Escolhendo entre o SQL Server 2005 Compact Edition e o SQL Server 2005 Express Edition
22
pode não ser a melhor opção para a entrega de mensagens na cidade, mas pode
transportar muito mais material em viagens longas, em comparação com a motocicleta.
O SQL Server Compact Edition é executado em processo com o aplicativo. Criado para
dispositivos, é muito eficiente com recursos e não forçará a paginação de aplicativos em
disco quando você iniciar a execução de consultas. Como a Compact Edition não é
executada como um serviço, não consome recursos enquanto não está sendo usada, o que
afeta diretamente o tempo de inicialização, desligamento, suspensão e continuação.
O SQL Server Express Edition diminui sua velocidade quando não é usado por vários
minutos. Em comparação com seus semelhantes, é muito mais eficiente na redução da
memória ativa a um conjunto de trabalho surpreendentemente pequeno. Contudo, como o
SQL Server Express Edition foi criado em torno de um ambiente baseado em servidor, ele
executa a recuperação em cada banco de dados anexado quando continua da hibernação.
Ao aumentar a velocidade, ele consome mais memória, pois está preparado para processar
milhares de transações e vários clientes ao mesmo tempo. Quando você entra no modo de
hibernação, ele precisa paginar toda essa memória em disco, mesmo que nenhum aplicativo
a estivesse usando no momento.
Escolhendo entre o SQL Server 2005 Compact Edition e o SQL Server 2005 Express Edition
23
Conclusão
O tamanho único não se ajusta a todos. Selecionar a ferramenta correta para o trabalho é
importante ao escolher um mecanismo de armazenamento de dados local. O SQL Server
2005 Express Edition e o SQL Server 2005 Compact Edition estão disponíveis
gratuitamente. O SQL Server Compact Edition, criado como armazenamento de dados local
padrão para aplicativos cliente, destinado a telefones, PDAs, Tablet PCs e desktops, fornece
recursos exclusivos para a implantação e segurança de clientes. O SQL Server Express
Edition, criado como um serviço de dados para aplicativos, fornece um modelo de
programação consistente enquanto sua família de serviços de dados fornece uma
sobreposição de cenários para o armazenamento local. A intenção deste documento é
descrever os desafios do armazenamento de dados local, os benefícios funcionais de cada
modelo de mecanismo de banco de dados e identificar as vantagens e desvantagens que
você precisará considerar ao escolher um armazenamento de dados local.
Usando a plataforma da Microsoft, as empresas e desenvolvedores estão capacitados a criar
aplicativos prontos para uso que utilizam seus dados comerciais a qualquer momento, em
qualquer lugar.
Para obter mais informações, consulte
http://www.microsoft.com/sql/
As informações contidas neste documento representam a visão atual da Microsoft Corporation sobre os assuntos discutidos desde a data da
publicação. Como a Microsoft deve reagir às mudanças do mercado, as informações aqui prestadas não devem ser interpretadas como um
compromisso por parte da Microsoft, e a Microsoft não pode garantir a precisão das informações aqui apresentadas após a data de publicação deste
documento. (Este documento também contém links para páginas em inglês.)
Este documento tem finalidade apenas informativa. A MICROSOFT NÃO OFERECE NENHUMA GARANTIA, EXPLÍCITA OU IMPLÍCITA, NESTE
DOCUMENTO.
A conformidade com todas as leis de direitos autorais aplicáveis é de responsabilidade do usuário. Sem limitação aos direitos dos direitos autorais,
nenhuma parte do presente documento poderá ser reproduzida, armazenada ou incluída em sistema recuperável, ou transmitida por qualquer
maneira ou meios (eletrônico, mecânico, fotocópia, gravação, entre outros) ou para qualquer finalidade, sem a expressa autorização por escrito da
Microsoft Corporation.
A Microsoft pode ter patentes, solicitações de patente, marcas comerciais, direitos autorais e outros direitos de propriedade intelectual abrangendo o
assunto tratado neste documento. Exceto conforme expressamente fornecido em um contrato de licença por escrito por parte da Microsoft, o
fornecimento deste documento não dá direito à licença dessas patentes, marcas comerciais, dos direitos autorais ou de qualquer outra propriedade
intelectual.
© 2005 Microsoft Corporation. Todos os direitos reservados.
Empresas, organizações, produtos, nomes de domínios, endereços de e-mail, logotipos, pessoas, lugares e eventos de exemplo descritos neste
documento são fictícios. Nenhuma associação a qualquer empresa, organização, produto, nome de domínio, endereço de email, logotipo, pessoa,
lugar ou evento real é intencional ou deve ser inferida.
Microsoft, Visual Basic, Visual Studio, Win32, Windows e Windows Server, SQL Server são marcas registradas ou comercias da Microsoft Corporation
nos Estados Unidos e/ou em outros países.
Todas as outras marcas comerciais pertencem a seus respectivos proprietários.
Escolhendo entre o SQL Server 2005 Compact Edition e o SQL Server 2005 Express Edition
24
Download