Я работаю над веб-бизнес-приложением, в котором каждому клиенту необходимо иметь свои собственные данные (например, модель типа basecamphq.com). Для масштабируемости и простоты обновления я бы предпочел иметь одну базу данных где каждый клиент получает отфильтрованную версию данных. Проблема заключается в том, чтобы гарантировать, что они останутся изолированными от своих собственных данных. Попытка применить его в коде кажется катастрофой, ожидающей своего появления. Я знаю, что у Oracle есть способ добавить предложение where к каждому запросу на основе идентификатора входа, но есть ли в Postgresql что-нибудь подобное?
Если нет, могу ли я использовать другой шаблон проектирования (например, создание представления каждой таблицы для каждого клиента, который фильтрует)?
В худшем случае, каковы издержки производительности / памяти при наличии 1000 100M баз данных по сравнению с одной базой данных 1 ТБ? Мне нужно будет предоставить функции резервного копирования / восстановления для каждого клиента, что очень просто для одной базы данных, но немного сложнее, если они делятся базой данных с другими клиентами.