Схемы и таблицы в сравнении с идентификаторами пользователей в одной таблице с использованием PostgreSQL - PullRequest
1 голос
/ 03 мая 2010

Я занимаюсь разработкой веб-приложения, и я пришел на распутье в отношении структуры базы данных, и я не знаю, в каком направлении идти. У меня есть база данных с пользовательской информацией, которую я могу спроектировать одним из двух способов. Первый - создать схему и набор таблиц для каждого пользователя (дублируя структуру для каждого пользователя), а второй - создать единый набор таблиц и запросить информацию на основе идентификатора пользователя. Предположим, 100000 пользователей.

  1. Учитывая безопасность, производительность, масштабируемость и администрирование, где находится каждый выбор?
  2. Изменится ли ответ на 1000000 или 10000?
  3. Существует ли набор лучших практик, которые приводят к тому или иному выбору?

Мне кажется, что несколько схем более безопасны, поскольку тривиально ограничивать пользовательские привилегии, но как насчет производительности и масштабируемости? Администрирование выглядит как промывка, поскольку сброс (и восстановление) большого количества схем не сложнее, чем сброс нескольких.

1 Ответ

1 голос
/ 03 мая 2010

Отдельные схемы обеспечат вам большую изоляцию и, возможно, упростят безопасность, потому что вы можете назначить отдельную роль БД для каждой схемы и убедиться, что доступ для одного клиента не может получить доступ к нему для другого.

Отдельные схемы на самом деле не будут работать, если у вас 100 000 пользователей - если это будет означать, что у вас будет 100 000 схем. Ну, это бы сработало, но система не предназначена для работы с таким количеством схем, и у вас, скорее всего, будут проблемы с производительностью. Так что если у вас так много пользователей, вам нужно сделать это по-другому, действительно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...