【发布时间】:2010-05-17 23:03:47
【问题描述】:
我有一个 Web 应用程序,它在很多方面都可以被视为多租户环境。我的意思是应用程序的每个用户都有自己的“自定义”环境,这些用户之间绝对没有交互。
到目前为止,我已将 Web 应用程序构建为“单用户”环境。换句话说,我实际上并没有做任何事情来支持多用户,而只是处理了我想要从应用程序中获得的功能。这是我的问题...构建多用户环境的最佳方法是什么:
- 所有用户都指向同一个“核心”后端。换句话说,我构建了通过适当的 SQL 查询(例如 select * from table where user='123' and attribute='456')来分隔用户的逻辑。
- 每个用户都指向一个唯一的表空间,该表空间是在他们加入系统时单独构建的。在这种情况下,我将简单地为每个用户生成所有相关的 SQL 表,并为用户添加某种后缀。 (例如,现在查询看起来像 'select * from table_ where attribute ='456')。
简而言之,"select * from table where USER=" 和 "select * from table_USER" 是有区别的。
【问题讨论】:
-
我理解每个用户都有自己的数据库表吗?这样做的目的是什么?
-
采用“从 USER=.. 的表中选择 *”的方式。我还建议使用 OR/M 而不是直接编写 SQL,这应该清楚为什么这种方法更好(即 1 个用户类,多个用户对象 :))
标签: asp.net sql database-design