使用PostgreSQL在单个表中使用模式和表与user-id

时间:2010-05-03 10:03:44

标签: database-design postgresql

我正在开发一个网络应用程序,我在数据库结构方面遇到了问题,我不知道要采取哪个方向。我有一个包含用户信息的数据库,我可以设计两种方式之一。第一种是为每个用户创建一个模式和一组表(为每个用户复制结构),第二种是根据user-id创建一组表和查询信息。假设有100000个用户。

  1. 考虑安全性,性能,可扩展性和管理,每个选择在哪里?
  2. 答案会改为1000000还是10000?
  3. 是否有一组最佳实践可以导致一种选择?
  4. 在我看来,多个模式更安全,因为限制用户权限是微不足道的,但性能和可伸缩性呢?管理似乎是一种冲洗,因为倾倒(和恢复)许多模式并不比倾倒一些模式更难。

1 个答案:

答案 0 :(得分:1)

单独的模式将为您提供更多隔离和更安全的安全性,因为您可以为每个sschema分配一个单独的数据库角色,并确保一个客户的访问权限不能访问另一个客户。

如果您有100,000个用户,则单独的模式实际上不起作用 - 如果这意味着您有100,000个模式。好吧,它会工作,但系统不是为处理那么多架构而设计的,而且你可能会遇到性能问题。因此,如果您拥有那么多用户,那么您需要以其他方式实现这一目标。