Для большого приложения SAAS (поддерживаемого PostgreSql 9.4) с более чем 300 000 учетными записями (и растущими), каковы преимущества и недостатки использования схемы для каждой учетной записи для разделения данных по сравнению с помещением всех данных в одну схему и использованием внешних ключей для разбить его в запросах?
Я знаю, что в прошлом pg_dump был мучительно медленным при работе со многими схемами, но не уверен, так ли это сегодня. Я также знаю, что любые изменения в структуре базы данных должны быть сделаны на всех схемах. И я знаю, что, с другой стороны, перемещение схемы с одного физического сервера на другой является простым, а также восстановление схемы из резервной копии, не говоря уже о том, что имеет смысл разделять данные таким образом.
Так какие плюсы и минусы мне не хватает?
Ответы:
Очевидно, вы имеете дело с одинаковыми таблицами в каждой пользовательской схеме. Рассматривали ли вы наследство для этого? Это может дать вам лучшее из обоих миров для некоторых случаев использования. Есть также некоторые ограничения . Вы можете иметь отдельную схему для каждого пользователя и при этом выполнять поиск по всем пользовательским таблицам одновременно очень удобно.
Связанные с:
Кроме того, следует упомянуть, по крайней мере, предоставление / отзыв привилегий, что намного проще с отдельными схемами.
источник