Para una aplicación SAAS grande (respaldada por PostgreSql 9.4), con más de 300,000 cuentas (y en crecimiento), ¿cuáles son los pros y los contras de usar un esquema por cuenta para dividir los datos frente a poner todos los datos en un esquema y usar claves externas para particionarlo en las consultas?
Sé que en el pasado pg_dump era dolorosamente lento cuando trabajaba con muchos esquemas, pero no estoy seguro de si ese es el caso hoy. También sé que cualquier cambio en la estructura de la base de datos tendrá que hacerse en todos los esquemas. Y sé que, en el lado positivo, mover un esquema de un servidor físico a otro es fácil, así como restaurar un esquema desde la copia de seguridad, sin mencionar que tiene sentido particionar los datos de esa manera.
Entonces, ¿cuáles son los pros y los contras que me estoy perdiendo?
Respuestas:
Obviamente, se trata de las mismas tablas en cada esquema de usuario. ¿Has considerado la herencia para esto? Puede darle lo mejor de ambos mundos para algunos casos de uso. También hay algunas limitaciones . Puede tener un esquema separado para cada usuario y aún así buscar todas las tablas de usuarios a la vez de manera muy conveniente.
Relacionado:
Aparte de eso, debe mencionarse al menos otorgar / revocar privilegios, lo cual es mucho más simple con esquemas separados.
fuente