Multiusuario

Puedes admitir multiusuarios en tu aplicación si les proporcionas particiones de datos por separado para organizaciones de varios clientes, conocidas como instancias. Esto te permite personalizar los valores de datos de cada instancia, al tiempo que mantiene el mismo esquema de datos para todas las instancias. Esto permite que el aprovisionamiento de nuevas instancias sea más eficiente, ya que no es necesario que cambies la estructura de datos cuando agregas una instancia.

Beneficios del multiusuario

Google Cloud Datastore le permite a una aplicación multiusuario utilizar sistemas aislados de datos separados para cada instancia, al tiempo que sigue utilizando:

  • un único proyecto;
  • una única estructura lógica para las categorías;
  • un conjunto único de definiciones de índice, ya que las categorías son las mismas lógicamente para cada instancia.

Cloud Datastore permite multiusuarios mediante el aprovisionamiento de espacios de nombres. Los multiusuarios también trabajan con otras API de Google App Engine que están habilitadas para el espacio de nombres (Go, Java, Python).

Datos de multiusuario y de partición

Cloud Datastore utiliza particiones para almacenar los datos de cada instancia. La combinación del ID de un proyecto y un ID de espacios de nombres forma un ID de partición, que identifica cada partición. Una entidad pertenece a una partición única y las consultas alcanzan a una sola partición.

Especifica un espacio de nombres para una entidad

Puedes especificar el espacio de nombres cuando creas la entidad: después de crear una entidad, no puedes cambiar el espacio de nombres. Si no especificas de manera explícita un espacio de nombres para una entidad, se asigna automáticamente al espacio de nombres predeterminado, que no tiene un identificador de string.

Usa espacios de nombres con entidades principales

Una entidad y todos sus principales pertenecen a un único espacio de nombres. Esto significa que cuando creas una entidad con otra entidad designada como principal, la entidad secundaria se encuentra en el mismo espacio de nombres que su principal: no puedes especificar otro espacio de nombres.

Caso práctico de muestra

Un beneficio clave del multiusuario es que la misma aplicación se entregue a varias organizaciones de clientes. A fin de lograr este beneficio, para una categoría determinada, tu aplicación debe comportarse del mismo modo sin importar cuál sea el espacio de nombres. Por ejemplo, desde la perspectiva de la aplicación, una entidad de categoría Task en un espacio de nombres, por lógica, debe ser lo mismo que una entidad de categoría Task en todos los otros espacios de nombres. Tu aplicación podría utilizar un solo conjunto de definiciones de índice para admitir consultas Task, sin importar los espacios de nombres que contengan las entidades Task.

Por ejemplo, considera una aplicación de listas de tareas que almacene los datos por cada uno de los usuarios. La aplicación podría definir los espacios de nombres según el nombre de usuario, lo que genera las siguientes particiones:

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

La aplicación puede definir una estructura lógica de una categoría Task de la siguiente manera, para utilizar en todos los espacios de nombres:

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

Cuando un usuario crea una entidad de categoría Task, la entidad se almacena en la partición propia del usuario, lo que genera el almacenamiento de datos. La aplicación procesa las entidades Task de manera constante en los espacios de nombres porque se utiliza solo un esquema para la categoría Task. Una aplicación con datos almacenados y de comportamiento constante sería multiusuario.

Si la estructura lógica de una categoría Task difiere en el espacio de nombres, la aplicación no sería multiusuario, ya que procesa las entidades Task de forma diferente entre los espacios de nombres. Por ejemplo, considera las categorías Task que tienen un esquema diferente según el espacio de nombres:

  • Las entidades Task en el espacio de nombres Joe excluyen la propiedad description del índice
  • Las entidades Task en el índice Alice incluyen la propiedad description del índice

La aplicación puede consultar en la propiedad description las entidades Task de Alice, pero no puede consultar en la propiedad description para las entidades Task de Joe, por lo que la aplicación no sería multiusuario.

Ve los espacios de los nombres en la consola

Para ver las estadísticas de los espacios de nombres utilizados en tu proyecto, visita la página del panel de Datastore en Google Cloud Platform Console. Para determinar de manera programática qué espacios de nombres se utilizan en tu proyecto, consulta Consultas de espacios de nombres.

Si necesitas agrupar los datos dentro de una instancia, puedes clasificar tus datos por categorías y también puedes organizar los datos altamente relacionados con grupos de entidades.

¿Qué sigue?

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Documentación de Cloud Datastore