Entretanto, é claro que algumas empresas temem que seus dados sejam comprometidos, por isso estamos avaliando outras soluções.
Isso é lamentável, pois os clientes às vezes sofrem de um equívoco de que apenas o isolamento físico pode oferecer segurança suficiente.
Há um artigo interessante do MSDN, intitulado Arquitetura de dados com vários locatários , que você pode verificar. Foi assim que os autores abordaram o equívoco em relação à abordagem compartilhada:
Um equívoco comum sustenta que apenas o isolamento físico pode fornecer um nível apropriado de segurança. De fato, os dados armazenados usando uma abordagem compartilhada também podem fornecer segurança de dados forte, mas requerem o uso de padrões de design mais sofisticados.
Quanto às considerações técnicas e comerciais, o artigo faz uma breve análise sobre onde uma determinada abordagem pode ser mais apropriada que outra:
O número, a natureza e as necessidades dos inquilinos que você espera atender afetam sua decisão de arquitetura de dados de maneiras diferentes. Algumas das perguntas a seguir podem direcioná-lo para uma abordagem mais isolada, enquanto outras podem direcioná-lo para uma abordagem mais compartilhada.
Quantos inquilinos em potencial você espera atingir? Você pode estar longe de ser capaz de estimar o uso potencial com autoridade, mas pense em termos de ordem de grandeza: você está criando um aplicativo para centenas de inquilinos? Milhares? Dezenas de milhares? Mais? Quanto maior você espera que sua base de locatários, maior a probabilidade de você considerar uma abordagem mais compartilhada.
Quanto espaço de armazenamento você espera que os dados do inquilino médio ocupem? Se você espera que alguns ou todos os inquilinos armazenem quantidades muito grandes de dados, a abordagem de banco de dados separado é provavelmente a melhor. (De fato, os requisitos de armazenamento de dados podem forçar você a adotar um modelo de banco de dados separado de qualquer maneira. Nesse caso, será muito mais fácil projetar o aplicativo dessa maneira desde o início do que passar para uma abordagem de banco de dados separado posteriormente.)
Quantos usuários finais simultâneos você espera que o inquilino médio ofereça suporte? Quanto maior o número, mais apropriada será uma abordagem mais isolada para atender aos requisitos do usuário final.
Você espera oferecer serviços de valor agregado por inquilino, como capacidade de backup e restauração por inquilino? Esses serviços são mais fáceis de oferecer por meio de uma abordagem mais isolada.
UPDATE: Mais para atualizar sobre o número esperado de inquilinos.
Esse número esperado de inquilinos (10k) deve excluir a abordagem de vários bancos de dados, para a maioria, se não todos os cenários. Não acho que você goste da idéia de manter 10.000 instâncias de banco de dados e ter que criar centenas de novas diariamente.
Somente a partir desse parâmetro, parece que a abordagem de esquema único de banco de dados compartilhado é a mais adequada. O fato de você estar armazenando apenas cerca de 50 Mb por inquilino e de que não haverá complementos por inquilino torna essa abordagem ainda mais apropriada.
O artigo MSDN citado acima menciona três padrões de segurança que abordam considerações de segurança para a abordagem de banco de dados compartilhado:
Quando você estiver confiante com as medidas de segurança de dados do seu aplicativo, poderá oferecer a seus clientes um Agregado de Nível de Serviço que fornece fortes garantias de segurança de dados. No seu SLA, além das garantias, você também pode descrever as medidas que você adotaria para garantir que os dados não sejam comprometidos.
ATUALIZAÇÃO 2: Aparentemente, os caras da Microsoft mudaram / criaram um novo artigo sobre esse assunto, o link original desapareceu e este é o novo: Padrões de locação de banco de dados SaaS com vários locatários (parabéns a Shai Kerer)