Banco de dados para sistema SaaS

Bom dia,

Estou com um dúvida sobre banco de dado em SaaS, deixa eu explicar melhor o cenário:

temos aqui na empresa um sistema Desktop especifico para um segmento de mercado temos perto de 1.000 clientes, estamos desenvolvendo um novo sistema porém esse será WEB e poderá ser fornecido em forma de serviço aos clientes. Acreditamos que no mínimo 10% de nossa base de clientes irá comprar o novo sistema como serviço (SaaS). O sistema para cada cliente será Multi-usuário e Multi-Filiais.

Como desenhar um banco de dados apra um sistema desses (será acessado com ORM, provavelmente Hibernate), pensei nas seguintes opções:

Fiz um levantamento prévio de quais seriam os problemas e as vantagens para cada abordagem
- Um banco de dados para cada cliente:
Vantagens:
— segurança não há risco de misturar os dados entre os clientes caso algum BUG do sistema.
— é mais fácil de efetuar e de voltar backups
— é mais fácil de eu manter por exemplo 5 servidores para os banco de dados e apenas 1 para o servidor de aplicação.
Desvantagens:
— preciso manter diversas SessionFactorys, ou ainda uma unica SessionFactory mas preciso passar a Connection na hora de criar a session.
— É muito dificil eu fazer um relatório administrativos que agrupe dados de diversos clientes.
— Difícil de atualizar o banco de dados quando mudar a versão do sistema.

- Um unico banco de dados para todos os clientes, porém com um Schema para cada cliente.
– Pra falar a verdade nunca trabalhei com Schemas de banco de dados e não sei bem como funciona isso e se serviria para o SaaS

- Um unico banco de dados com uma coluna CLIENTE em todas as tabelas :
Vantagens
— Fácil de atualizar
— Economiza recursos
Desvantagens
— Problemas de segurança, vai que eu esqueço de colocar o cliente no WHERE
— É impossível de voltar um backup por exemplo para um determinado cliente.

Andei lendo sobre o Multi-Tenancy do Hibernate 4 que seria um facilitador para o uso de um único banco de dados, alguém já usou? sabe se é bom?

Alguém aqui fornece sistema SaaS pode me dar umas dicas, ou indicar alguma outra abordagem que pode ser tomada nesse caso?

Muito Obrigado…

Eu não vou prolongar a conversa porquê ainda estou no trampo. A uns 3 anos atrás eu trabalhei em um sistema desse porte. Havia uma tela que erá responsável por cadastro de um novo cliente, nela, a gente digitava todas as configurações do ambiente (ip da máquina, usuário SSH administrativo e bla bla bla), ele ao clicar cadastrar, ele testava tudo, entrava, configurava o ambiente todo e ninguem quase precisava colocar a mão em nada. Neste caso que me lembre, era um SCHEMA por cliente (leve em consideração também um usuário do banco por cliente, que só tem permissão para ver seu schema).

Basicamente era isso que me lembre e funcionava bem. Claro, tem seu prós e contras. Chegando eu do uma editada aqui.

[]'s