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 mantienes 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

Cloud Firestore en modo Datastore permite que una aplicación multiusuario use entornos aislados independientes de datos para cada instancia mientras mantiene el uso de lo siguiente:

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

El modo Datastore proporciona espacios de nombres a fin de permitir el uso de multiusuarios. Los multiusuarios también funcionan con otras API de Google App Engine que están habilitadas para los espacios de nombres (Go, Java, Python).

Datos de multiusuario y de partición

El modo Datastore usa particiones para almacenar los datos de cada instancia de manera aislada. 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 el alcance de las consultas es de 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 usar un solo conjunto de definiciones de índice para admitir consultas Task, sin importar qué espacios de nombres contienen las entidades Task.

Por ejemplo, considera una aplicación de listas de tareas que almacene los datos de manera aislada 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 usar 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 aislados. La aplicación procesa las entidades Task de manera coherente en los espacios de nombres porque se usa solo un esquema para la categoría Task. Una aplicación con datos almacenados aislados y de comportamiento coherente 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 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 la propiedad description en las entidades Task de Alice, pero no puede consultar la propiedad en las entidades Task de Joe, por lo que la aplicación no sería multiusuario.

Visualiza los espacios de nombres en la consola

Para ver las estadísticas de los espacios de nombres usados en tu proyecto, visita el Panel de Datastore en Google Cloud Platform Console. Para determinar de manera programática qué espacios de nombres se usan en tu proyecto, consulta la página sobre las 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.

Próximos pasos

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

Enviar comentarios sobre…

Documentación de Cloud Datastore