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