É um banco de dados multilocatário:
- Um servidor de banco de dados que possui um banco de dados / esquema (idêntico) diferente para cada cliente / inquilino ?; ou
- Um servidor de banco de dados que possui um banco de dados / esquema em que clientes / inquilinos compartilham registros dentro das mesmas tabelas?
Por exemplo, na Opção # 1 acima, eu posso ter um servidor MySQL em, digamos mydb01.example.com
, e ele pode ter um customer1
banco de dados dentro dele. Esse customer1
banco de dados pode ter, digamos, 10 tabelas que alimentam meu aplicativo para esse cliente em particular (cliente nº 1). Também pode ter um customer2
banco de dados com exatamente as mesmas 10 tabelas, mas contendo apenas os dados do Cliente 2. Pode ter um customer3
banco de dados, um customer4
banco de dados e assim por diante.
Na Opção nº 2 acima, haveria apenas um único banco de dados / esquema, digamos myapp_db
, novamente com 10 tabelas (as mesmas que acima). Mas aqui, os dados de todos os clientes existem nessas 10 tabelas e, portanto, "compartilham" as tabelas. E na camada do aplicativo, controle lógico e de segurança a que os clientes têm acesso a quais registros nessas 10 tabelas, e é tomado muito cuidado para garantir que o Cliente nº 1 nunca efetue login no aplicativo e veja os dados do Cliente nº 3, etc.
Qual desses paradigmas constitui um banco de dados "multilocatário" tradicional? E se não, alguém pode me fornecer um exemplo (usando os cenários descritos acima) do que é um banco de dados de vários inquilinos?