Multilocação

Seus aplicativos podem ser compatíveis com a multilocação fornecendo partições de dados separadas para várias organizações clientes, conhecidas como locatários. Isso permite que você personalize valores de dados para cada locatário, mantendo o mesmo esquema de dados para todos eles. Assim, o provisionamento de novos locatários se torna mais eficiente, já que você não precisa alterar a estrutura de dados ao adicionar um locatário.

Benefícios da multilocação

O Cloud Firestore no modo Datastore permite que um aplicativo multilocatário use silos de dados separados para cada locatário e, ao mesmo tempo, tenha:

  • um único projeto;
  • uma única estrutura lógica para os tipos;
  • um único conjunto de definições de índice, porque os tipos são os mesmos logicamente para cada locatário.

O modo Datastore permite a multilocação fornecendo namespaces. A multilocação também funciona com outras APIs do Google App Engine ativadas para namespace (por exemplo, Go, Java e Python).

Multilocação e dados particionados

O modo Datastore usa partições em dados de silo para cada locatário. A combinação entre um código de projeto e um código de namespace forma um código de partição, que identifica cada uma delas. Uma entidade pertence a uma única partição, e o escopo das consultas é direcionado a uma única partição.

Como especificar um namespace para uma entidade

O namespace é especificado ao criar a entidade. Depois de criá-la, não é possível alterar o namespace. Se você não especificar explicitamente um namespace para uma entidade, é atribuído automaticamente a ela o namespace padrão, que não tem identificador de strings.

Como usar namespaces com entidades mãe

Uma entidade e todos os seus ancestrais pertencem somente um namespace. Isso significa que, ao criar uma entidade com outra entidade designada como mãe, a entidade filha estará no mesmo namespace que a mãe. Não é possível especificar outro namespace.

Amostra de caso de uso

Um dos benefícios principais da multilocação é que o mesmo aplicativo serve a várias organizações cliente. Para ter esse benefício, seu aplicativo deve se comportar da mesma maneira em relação a um determinado tipo independentemente do namespace. Por exemplo, do ponto de vista do aplicativo, uma entidade do tipo Task em um namespace deve logicamente ser o mesmo que uma entidade do tipo Task em todos os outros namespaces. Assim, o aplicativo pode usar um único conjunto de definições de índice para ser compatível com consultas de Task, independentemente de quais namespaces contêm entidades Task.

Por exemplo, pense em um aplicativo de Lista de tarefas que separa os dados em silos por usuário. O aplicativo pode definir namespaces com base no nome de usuário, resultando nas seguintes partições:

Partition ID: project:"my_project_id"/namespace:"Joe"
Partition ID: project:"my_project_id"/namespace:"Alice"
Partition ID: project:"my_project_id"/namespace:"Charlie"

O aplicativo poderia definir uma estrutura lógica para o tipo Task a ser usada em todos os namespaces, da seguinte maneira:

kind: Task
properties:
 - "done", Boolean
 - "created", DateTime
 - "description", String, excluded from index

Quando um usuário cria uma entidade do tipo Task, a entidade é armazenada na própria partição do usuário, resultando em dados agrupados. O aplicativo processa as entidades Task consistentemente entre namespaces, já que somente um esquema é usado para o tipo Task. Um aplicativo com dados agrupados e comportamento consistente é multilocatário.

Se o namespace da estrutura lógica de um tipo Task for diferente, o aplicativo não é multilocatário, porque processa as entidades Task diferentemente entre namespaces. Por exemplo, pense em tipos Task que têm um esquema diferente com base no namespace:

  • Entidades Task no namespace Joe excluem a propriedade description do índice.
  • Entidades Task no índice Alice incluem a propriedade description do índice.

O aplicativo poderia consultar a propriedade description das entidades Task em Alice, mas não a propriedade description das entidades Task em Joe, e, portanto, não seria multilocatário.

Como exibir namespaces no console

Para ver estatísticas de namespaces usados no seu projeto, visite a página Painel do Datastore no Console do Google Cloud Platform. Para determinar programaticamente quais namespaces serão usados no projeto, consulte Consultas de namespace.

Para agrupar dados dentro de um locatário, classifique os dados por tipos. Também é possível organizar dados altamente relacionados com grupos de entidades.

Próximas etapas

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Cloud Datastore