01Row Level Security sobre una colección por tenant
- Decisión
- Mantener todos los tenants en una tabla y dejar que una política de Postgres fuerce el aislamiento en cada sentencia.
- Alternativas
- Una colección vectorial o base separada por tenant, o filtros de tenant escritos a mano en cada consulta.
- Por qué
- El aislamiento pasa a ser una propiedad de la base y no de la disciplina del desarrollador, dar de alta un tenant es un insert en vez de un aprovisionamiento, y los datos relacionales y los vectores comparten una transacción.
- Costo de equivocarse
- Un solo índice grande sirve a todos los tenants, así que un tenant muy grande afecta a los demás; pasado cierto tamaño ese tenant necesita particionado o su propia instancia.