如何在用户数据库中保留用户特定数据?

时间:2011-04-21 20:54:04

标签: hibernate database-design

我正处于设计应用程序的计划阶段,该应用程序将涉及用户注册我的网站并存储数据。我决定使用Spring和Hibernate,但我有几个问题需要我得到答案。

我的第一个问题涉及数据分离。当用户向我的网站注册时,他们将能够存储从其他来源导入的数据。每个用户的数据量(行数)将增长得非常快。如果我将所有用户数据存储在一个数据库中,我希望很快就会遇到性能问题。为了解决这个问题,我计划为每个注册的用户创建一个新的数据库。这将通过一些脚本或其他程序化解决方案即时发生。这可行吗?有谁知道解决这个问题的任何设计模式?

我的第二个问题与我的第一个问题有关。如果为每个用户创建一个新数据库是可行的,那么它如何与hibernate一起工作?显然,每次新用户注册时我都不会重新启动我的应用程序。可以动态配置休眠以根据某些条件(当前登录用户)连接到不同的数据库吗?如果我有两个用户同时登录,则预期的行为是每个用户只能访问其数据库中的数据。

感谢。

1 个答案:

答案 0 :(得分:2)

数据库性能问题通常归结为索引不佳,内存不足和/或SQL查询不佳。到目前为止,每个用户只有一个数据库没有解决这个问题,这只是过于复杂。实际上并没有这样的设计模式,只有具有足够内存的可靠硬件和具有良好索引列的良好规范化数据库。放置正确的索引相对简单,通常只需将它放在具有关键约束的列和WHERE子句中涉及的列上就足够了。 Hibernate / JPA反过来生成优化良好的SQL查询,并提供二级缓存可能性。