Avançar para a área de conteúdo

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Todas as informações enviadas são seguras.

  • Fechar [x]

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Todas as informações enviadas são seguras.

  • Fechar [x]

Projetando um banco de dados para multilocação na nuvem

Considerações para fornecedores de SaaS

Raul F Chong, DB2 Program Manager and Technical Evangelist, IBM
Photo of author Raul Chong
Raul F. Chong é gerente de programa senior e trabalha no Centro de Competência de Computação em Nuvem da Information Management. Trabalha na IBM há 14 anos como consultor de banco de dados, especialista de suporte, desenvolvedor de informações e divulgador técnico. As suas principais áreas de conhecimento são computação em nuvem, Big Data e bancos de dados.
(Um autor Contribuidor do IBM developerWorks)

Resumo:  Conheça algumas questões que os fornecedores de software como serviço (SaaS) devem levar em consideração ao desenvolver aplicativos ou modificá-los para a multilocação na nuvem. O artigo trata das questões somente sob o ponto de vista do banco de dados, — especificamente, sob o ponto de vista do IBM® DB2® . São descritos seis casos ou métodos.

Data:  16/Fev/2012
Nível:  Introdutório Também disponível em :   Inglês
Atividade:  746 visualizações
Comentários:  


Introdução

A computação em nuvem está abrindo mercados que não eram contemplados pelas empresas no passado. Agora, algumas empresas de software estão pensando em entregar o software como serviço, em vez de adotar o método usual de desenvolver o software e vendê-lo aos clientes por meio dos métodos de distribuição tradicionais. Para serem fornecedoras de software como serviço (SaaS), as empresas precisam encontrar o equilíbrio correto, no qual os recursos são compartilhados entre os vários arrendatários para reduzir custos e garantir a privacidade das informações do cliente em relação aos outros clientes. Não há problema mais sério do que poder ver as informações privadas de um arrendatário a partir da conta de outro. Além da privacidade das informações dos arrendatários, os fornecedores de SaaS precisam fornecer algum nível de customização para os clientes.

Em um ambiente de multilocação, uma empresa de SaaS pode reduzir custos se compartilhar ou reutilizar mais os seus recursos. Entretanto, quanto mais a empresa compartilha, mais riscos ela enfrenta, porque a indisponibilidade de um recurso compartilhado pode afetar outros clientes. O compartilhamento de mais recursos também aumenta a complexidade da solução.

A Figura 1 foi usada em várias apresentações da IBM para mostrar a visão geral de um ambiente de aplicativos em multilocação.


Figura 1. Um ambiente de aplicativos em multilocação


Neste artigo, trataremos somente da camada de dados mostrada no lado direito da Figura 1 e usaremos o software DB2. As outras camadas podem ser manipuladas por outros softwares IBM, como o WebSphere® Portlet Factory, WebSphere Portal Server, Tivoli® Directory Server, Tivoli Directory Integrator, Tivoli Provisioning Manager, Tivoli Monitoring, Tivoli Usage e Accounting Manager, etc.

A multilocação na camada de dados por meio do DB2 pode ser usada em várias situações, como mostrado nos seis casos a seguir. Também tenha em mente que, se a empresa é pequena e quer reduzir os custos de licenciamento, é possível considerar a possibilidade de usar a versão grátis do DB2: DB2 Express-C. O DB2 Express-C não tem limites de tamanho do banco de dados.


Caso 1: compartilhando tabelas

Neste caso, os seguintes recursos são compartilhados:

  • O servidor de banco de dados
  • A instância do DB2
  • O banco de dados
  • Um espaço de tabela ou mais
  • Uma tabela ou mais

A Figura 2 mostra uma visão geral dos recursos compartilhados neste caso. As tabelas inventory, customers e orders possuem informações dos clientes dos vários arrendatários.


Figura 2. Caso 1: compartilhando tabelas


Esse caso oferece vantagens de custo e armazenamento mais baixos, quantidade mínima de licenciamento do DB2 e número mínimo de instâncias de nuvem necessárias.

A principal desvantagem é que se, por exemplo, uma tabela é corrompida, todos os clientes são afetados. Além disso, é possível aumentar a complexidade dos aplicativos na tentativa de sempre determinar quais registros de um arrendatário devem ser recuperados nas consultas.


Caso 2: compartilhando um banco de dados

Neste caso, os seguintes recursos são compartilhados:

  • O servidor de banco de dados
  • A instância do DB2
  • O banco de dados

A Figura 3 mostra a visão geral dos recursos compartilhados neste caso.


Figura 3. Caso 2: compartilhando um banco de dados


Neste caso, os benefícios do compartilhamento de um banco de dados ainda representam um custo relativamente baixo em relação ao uso de uma licença de DB2 e uma instância de nuvem. O isolamento de dados é bom porque é usado um conjunto diferente de tabelas. A customização do ponto de vista dos dados é mais fácil, porque cada arrendatário tem o seu próprio conjunto de tabelas.

A desvantagem é a necessidade de mais armazenamento, já que é necessário criar um conjunto das mesmas tabelas por arrendatário. Em comparação com o caso 1, seria usado x vezes mais de armazenamento, onde x é o número de arrendatários. A complexidade do aplicativo também aumenta e não tem a mesma flexibilidade, já que agora é necessário customizar o aplicativo para manipular nomes de tabela diferentes e uma estrutura de tabela possivelmente diferente caso algum arrendatário tenha uma customização específica.


Caso 3: compartilhando um banco de dados e usando um nome de esquema diferente

Neste caso, os seguintes recursos são compartilhados:

  • O servidor de banco de dados
  • A instância do DB2
  • O banco de dados

A Figura 4 mostra a visão geral dos recursos compartilhados neste caso.


Figura 4. Caso 3: compartilhando um banco de dados e usando um nome de esquema diferente


Neste caso, os benefícios são o custo ainda baixo, quase igual ao do caso 2. Também é necessário possuir uma licença do DB2 e uma instância de nuvem. O isolamento de dados é bom porque é usado um conjunto de tabelas separado. Compare com o caso 2: a complexidade do aplicativo é menor porque as instruções SQL usadas podem ser exatamente iguais. O redirecionamento de uma consulta para um determinado conjunto de tabelas é realizado ao mudar o nome do esquema usando o comando SET SCHEMA . As customizações de uma determinada tabela evidentemente aumentam a complexidade do seu aplicativo.

A desvantagem, como no caso 2, é que ainda é necessário usar mais armazenamento, porque seria criado um conjunto de tabelas por arrendatário.


Caso 4: compartilhando uma instância

Neste caso, os seguintes recursos são compartilhados:

  • O servidor de banco de dados
  • A instância do DB2

A Figura 5 mostra a visão geral dos recursos compartilhados neste caso.


Figura 5. Caso 4: compartilhando uma instância


Neste caso, os benefícios são o custo ainda baixo, quase igual ao do caso 2. Também é necessário possuir uma licença do DB2 e uma instância de nuvem. O isolamento de dados é muito bom porque cada arrendatário tem o seu próprio banco de dados, que no DB2 é uma unidade independente. Cada banco de dados pode ser configurado e mantido de forma independente, oferecendo mais flexibilidade. O aplicativo é menos complexo do que no caso 1. A estrutura da maioria das tabelas será igual em todos os bancos de dados. Se um arrendatário requer customização, é possível alterar a definição de tabela, mas isso aumenta a complexidade do aplicativo.

A desvantagem é que será necessário mais armazenamento. Cada banco de dados no DB2 cria o seu próprio catálogo, que em outros produtos de banco de dados é conhecido como dicionário, portanto, há necessidade de criar mais tabelas, visualizações e outros objetos de banco de dados do sistema. Além disso, no caso do DB2, há um limite de 256 bancos de dados ativos por instância, portanto, nesse cenário, somente 256 arrendatários poderiam trabalhar simultaneamente. Outra desvantagem é o aumento do consumo de memória, que pode ser problemático em duas frentes:

  • É possível atingir o limite de memória da edição do DB2 em uso e seria necessário comprar uma edição mais cara do DB2.
  • É possível atingir o limite de memória na instância de nuvem. Nesse caso, seria necessário escolher uma instância de nuvem mais cara.

Caso 5: compartilhando um servidor de banco de dados

Neste caso, somente o recurso do servidor de banco de dados é compartilhado. A Figura 6 mostra a visão geral dos recursos compartilhados neste caso.


Figura 6. Caso 5: compartilhando um servidor de banco de dados


Neste cenário, cada arrendatário tem a sua própria instância de DB2. O primeiro benefício é o bom controle de acesso. A complexidade do aplicativo é semelhante à do caso 4. Entretanto, talvez o administrador do sistema tenha que configurar os parâmetros de conectividade corretamente em todas as instâncias, o que pode dar mais trabalho. A estrutura da maioria das tabelas é igual e, como no caso 4, para um determinado arrendatário, é possível customizar algumas tabelas, mas há necessidade de mudanças no aplicativo. Outro benefício é o fato de que cada instância e banco de dados pode ser mantido de forma independente. Se você derruba uma instância, isso afeta somente um arrendatário.

Em relação às desvantagens, há mais necessidade de armazenamento que nos outros casos e, além disso, pode haver problemas de memória. Embora o número de instâncias no DB2 seja limitado pelos limites do sistema operacional, e o início de uma instância não consuma muita memória, o fato de haver muitas instâncias iniciadas com vários bancos de dados ativos ao mesmo tempo pode causar problemas de memória. Consequentemente, talvez você seja obrigado a passar a usar uma edição mais cara do DB2 ou utilizar uma instância de nuvem maior e mais cara. Além dessas desvantagens, a complexidade da administração também aumenta, o que pode fazer com que a empresa contrate mais recursos, afetando os custos diretamente.


Caso 6: compartilhando um servidor de banco de dados com várias cópias do DB2

Neste caso, somente o recurso do servidor de banco de dados é compartilhado. A Figura 7 mostra a visão geral dos recursos compartilhados neste caso.


Figura 7. Caso 6: compartilhando um servidor de banco de dados com várias cópias do DB2


Para o propósito de um SaaS, o uso dessa abordagem não traz nenhum benefício. Em termos de desvantagens, existem várias:

  • É necessário armazenar mais cópias do DB2 na sua instância de nuvem, ocupando espaço.
  • É necessário instalar e configurar o DB2 para cada cópia instalada, portanto, o tempo de configuração da administração é maior.
  • O aplicativo é mais complexo, e esse tipo de ambiente pode confundir os desenvolvedores, que ficam sem saber a qual banco de dados devem se conectar em cada instância da cópia do DB2.
  • Há problemas semelhantes aos do caso 5 em termos de consumo de memória e armazenamento.

Em poucas palavras, esse caso não traz nenhum benefício real, mas foi acrescentado neste artigo para que ele ficasse completo.


Customização na camada de dados

Como já foi dito, a customização para um determinado arrendatário pode aumentar a complexidade do aplicativo e da administração. Essa seção mostra como se pode lidar com a customização usando o XML — , especificamente, a tecnologia pureXML do DB2® , que fornece mais flexibilidade. A Figura 8 mostra um exemplo.


Figura 8. Trabalhando com customizações para clientes separados de arrendatários separados


A figura mostra que um arrendatário tem muitos clientes, e cada cliente tem um perfil diferente. A coluna do ID de arrendatário (TID) nas duas tabelas é usada para identificar o arrendatário. As linhas 1 e 3 da tabela à esquerda pertencem ao arrendatário que tem o TID 1. As linhas 2, 4 e 5 pertencem a outro arrendatário com o TID 2.

Suponha que o arrendatário No. 2 (TID = 2) possua uma regra de negócios que indica que os clientes não podem inserir informações de telefone, portanto, armazenar informações sobre números de telefone não seria aplicável a esse arrendatário. Entretanto, em um ambiente de multilocação no qual as tabelas são compartilhadas (caso 1), a empresa de SaaS precisa levar em conta que outros arrendatários querem incluir informações de telefone. Usando um banco de dados SQL tradicional (tabela à esquerda), o fornecedor de SaaS pode criar uma tabela de coluna fixa, que inclui colunas para todos os casos possíveis de números de telefone (telefone celular, telefone residencial). A coluna é incluída mesmo se o arrendatário No. 2 não permitir números de telefone nos perfis dos clientes. Portanto, haverá muitos "buracos" e dados dispersos, destacados pelos círculos na Figura 8.

Além disso, suponha que o arrendatário No. 1 (TID = 1) queira alterar os seus requisitos para armazenar não só números de celular e telefone residencial, mas também números de telefone profissional. Nessa situação, talvez seja necessário alterar a tabela. No entanto, se as regras de normalização para o design do banco de dados forem seguidas, na verdade, será necessário criar uma tabela PHONE separada. Em seguida, seria necessário mover os dados e alterar os aplicativos para que as consultas SQL apontem para a nova tabela PHONE e usem as operações de junção . Esse método não é flexível.

O lado direito da Figura 8 mostra o método sugerido para manipular as customizações. Nesse caso, a tabela só possui duas colunas. A segunda é definida com o tipo de dados XML. Com o XML, adquire-se muito mais flexibilidade para lidar com mudanças no esquema do banco de dados. Além disso, com a tecnologia pureXML do DB2, o desempenho melhora bastante. O DB2 9.7 também permite a evolução do esquema, portanto, as mudanças futuras em um determinado esquema XML podem ser aplicadas com facilidade. Além disso, o DB2 permite vários esquemas XML por coluna, assim, cada arrendatário pode usar esquemas XML diferentes.


Resumo

Neste artigo, abordamos as questões que os novos fornecedores de SaaS devem levar em conta ao desenvolver novos aplicativos ou modificar os aplicativos já existentes. O artigo trata das questões ou casos somente sob o ponto de vista do banco de dados, — especificamente, sob o ponto de vista do DB2. Foram descritos seis casos ou métodos. Como acontece em muitas situações na área de TI, é necessário encontrar o equilíbrio entre os custos e os requisitos ao escolher um determinado método. Os métodos nos quais você compartilha mais permitem um uso melhor dos recursos a um custo menor. Entretanto, se não for corretamente projetado, pode haver muitos problemas, já que a falha de um recurso pode afetar muitos arrendatários. Por outro lado, o uso dos métodos em que você compartilha menos recursos pode aumentar os custos, embora o risco para os outros arrendatários seja menor.

Como fornecedor de SaaS, é provável que você tenha que escolher os métodos nos quais os recursos são compartilhados. Se tomar os cuidados necessários, como usar o HADR e outros controles de alta disponibilidade e redundância do DB2, será possível reduzir ou evitar problemas em um ambiente de multilocação. Alguns desses controles de resiliência de dados estão integrados à nuvem.


Recursos

Aprender

Obter produtos e tecnologias

  • Crie seu próximo projeto de desenvolvimento com a Versão de teste do software IBM, disponível para download diretamente do developerWorks.

  • Agora é possível usar o DB2 gratuitamente. Faça o download do DB2 Express-C, uma versão gratuita do DB2 Express Edition para a comunidade que oferece os mesmos recursos de dados centrais que o DB2 Express Edition e fornece uma base sólida para desenvolver e implementar aplicativos.

Discutir

Sobre o autor

Photo of author Raul Chong nível de autor Contribuidor do developerWorks

Raul F. Chong é gerente de programa senior e trabalha no Centro de Competência de Computação em Nuvem da Information Management. Trabalha na IBM há 14 anos como consultor de banco de dados, especialista de suporte, desenvolvedor de informações e divulgador técnico. As suas principais áreas de conhecimento são computação em nuvem, Big Data e bancos de dados.

Ajuda para Relatar Abuso

Relatar abuso

Obrigado. Esta entrada foi sinalizada para atenção do moderador.


Ajuda para Relatar Abuso

Relatar abuso

Falha no envio do Relatório de abuso. Tente novamente mais tarde.


developerWorks: Registre-se


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Selecione seu nome de exibição

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

(Deve possuir de 3 a 31 caracteres.)


Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Classificar este artigo

Comentários

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Information Management, Cloud computing
ArticleID=792290
ArticleTitle=Projetando um banco de dados para multilocação na nuvem
publish-date=02162012

Conheça a IBM da sua cidade

Virtual Branch Office Brasil

A IBM está mais perto do que você imagina!


Tags

Help
Use o campo de pesquisa para encontrar todos os tipos de conteúdo no My developerWorks com essa tag.

Use a barra de rolagem para ver mais ou menos tags.

Tags populares mostra as principais tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Minhas tags mostra suas tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Use o campo de pesquisa para localizar todos os tipos de conteúdo no Meu developerWorks com essa tag. Tags populares mostra as tags principais para essa zona de conteúdo particular (por exemplo, tecnologia Java, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere). Minhas tags mostra as suas tags para essa zona de conteúdo em particular (por exemplo, tecnologia Java, Linux, WebSphere).