多用户Web应用程序的数据库结构

时间:2012-06-21 09:48:42

标签: database design-patterns

我正在开展一个有学习目的的项目。由于这个项目对我来说很有吸引力,因为它的主题我想建立良好的基础,也许最终可以实现。

由于我的项目非常复杂,为了解释我的问题,我将使用一个议程应用程序的虚构项目。

此Web应用程序将有一个日历,用户可以在其中添加事件和提醒。举例来说,它将被10,000个用户使用,而这10,000个用户将添加数千个事件和提醒。

我的问题是你建议哪两种方法与数据库结构有关?

  • 我是否应该为每个用户创建一个包含提醒和事件表的单独数据库(在创建用户时),并将数据库与单独数据库中的用户相关联
  • 或者我应该为事件创建一个表,一个用于提醒,一个用于用户,并在一个数据库中将它们相互关联?

到目前为止,我还没有完成任何多用户Web应用程序,而且对于许多用户我并不熟悉数据库结构方法。如果你有任何设计模式,我会很感激分享:)

2 个答案:

答案 0 :(得分:4)

以下是我的意见:

  1. 不,您应该为每个用户创建一个单独的数据库。它无法扩展。这意味着每次添加用户时,都必须创建一个新数据库?从不。
  2. 一个数据库,多个用户 - 这就是关系数据库的诞生地。
  3. 10,000名用户并不是那么大的受众。每个创建数千个事件和提醒都意味着10M事件,10M提醒​​。这不是一个大的关系数据库。

    您可能需要担心分区和清除旧记录。您将采取什么样的政策来保存这些事件和提醒?一年后用户会有什么访问权限? 5年?十年?这些也是值得思考的好主题。

    获取一本关于实体/关系建模的好书并仔细阅读。亚马逊上的任何现代产品都可以。

答案 1 :(得分:1)

我曾经使用过数据库,其中每个用户数据都保存在一个单独的数据库中(您的选项1)并且相信我这是一个噩梦,公司花费了大量资源将所有这些数据库整合到一个数据库中单个数据库,这不是一件容易的事。

正如@duffymo所说,一个数据库/多个用户就是关系数据库的用途。