При разработке приложения для нескольких клиентов мы планируем использовать разные базы данных для каждого клиента. Но это может быть более 1000 клиентов (приложений).
Сможет ли PostgreSQL справиться с этим без проблем?
Кто-нибудь пробовал что-то подобное?
Примечание: 35 таблиц для каждой, в среднем до 3000 записей для каждой базы данных.
источник
Звучит как грязная вещь с управленческой точки зрения. Как вы планируете делать резервные копии такого количества баз данных? со сценарием, который зацикливается, хотя каждый?
Если у вас нет действительно веской причины, почему бы просто не иметь одну базу данных, в которой структура спроектирована так, что все данные будут связаны с идентификатором клиента. Добавьте индексы / внешний ключ / первичные ключи на основе этого поля, чтобы обеспечить целостность данных.
Тогда вам просто нужно иметь предложение where во всех ваших запросах, чтобы получить доступ только к одному идентификатору клиента. Это будет намного проще в обслуживании и так же просто в разработке (потому что в любом случае вам нужно разрешить идентификацию клиента)
источник
search_path
что это делается для вас.Есть люди, которые делают это, особенно для хостинга на общих серверах.
Размышляя над проблемами здесь нет бесплатного обеда. Возможно, вы могли бы сделать это со схемами прозрачным способом приложения. Однако тогда вы получите тысячи схем и десятки тысяч таблиц, что создаст дополнительные проблемы.
Я думаю, что в целом, подход с использованием нескольких дБ является более разумным, учитывая ваши комментарии.
Управление (как резервное копирование) станет интересным. Также я думаю, что в какой-то момент подключения к БД начнут занимать больше времени. Если вы используете pg_hba.conf для ограничения доступа (что вы и должны делать), это тоже станет головной болью, и вы, вероятно, захотите создать решение для создания этого файла для вас .....
источник
Я надеюсь, что эту ссылку лучше прочитать: 10 000 баз данных в кластере PostgreSQL от Jon Jensen, 2008.
Один отрывок:
источник