Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web applications 如何将单用户WebApp扩展到多用户_Web Applications_Resin_Multiple Users - Fatal编程技术网

Web applications 如何将单用户WebApp扩展到多用户

Web applications 如何将单用户WebApp扩展到多用户,web-applications,resin,multiple-users,Web Applications,Resin,Multiple Users,有一个类似的线程没有具体的解决方案,我认为最好开始一个新的 我面临着这样一种情况:我有一个用树脂托管的WebApp(我想就像Tomcat一样)。到目前为止,我一直在使用db4o开发应用程序,因为我是一个人,我需要尽快完成应用程序,我有一个数据库用于用户,另一个数据库用于单个用户(me)的应用程序数据,现在应用程序几乎完成了,我将要转到postgresql,我正在认真考虑每个用户的数据库,即使数据库保存多个应用程序的数据,因为它将处理一些机密数据,我认为拥有单独的数据库将是最好的(安全方面)。现在

有一个类似的线程没有具体的解决方案,我认为最好开始一个新的

我面临着这样一种情况:我有一个用树脂托管的WebApp(我想就像Tomcat一样)。到目前为止,我一直在使用db4o开发应用程序,因为我是一个人,我需要尽快完成应用程序,我有一个数据库用于用户,另一个数据库用于单个用户(me)的应用程序数据,现在应用程序几乎完成了,我将要转到postgresql,我正在认真考虑每个用户的数据库,即使数据库保存多个应用程序的数据,因为它将处理一些机密数据,我认为拥有单独的数据库将是最好的(安全方面)。现在已经有了一个基本的会话管理,它将用户数据像ID一样存储在浏览器中。但我想知道如何将它扩展到多个用户/db

我想扩展保存上下文数据的listener类,以便将正确的db对象传递给应用程序实例,或者为此设置一个过滤器

.更新

我想对我目前的情况有更多的了解

我有:

上下文,其中一个对象连接到数据库并检查用户和密码

表示servlet(HttpServlet)映射到“/”,其登录表单为POST to/login

映射到“/Login”的登录servlet(HttpServlet),它根据上下文中的相应对象检查httpSession用户密码属性,如果存在匹配项,则设置一个httpSession属性,该属性保存用户ID,并将用户重定向到位于/index-debug.html的应用程序本身。如果没有匹配项,则再次使用登录表单创建一个新的html页面

映射到/index-debug.html的授权和身份验证筛选器,用于验证USERID属性的httpServletRequest,并检查用户是否具有访问应用程序的权限

最后是一个dbbean,负责读取和写入webApp用户数据DB。当我在webApp CP2JAVAWS中执行某个方法将该方法与bean中的相应方法相匹配时,问题是这个bean有一个静态数据库,到目前为止,它一次只允许一个用户

我想做的是以某种方式允许这个dbbean为每个用户实例化一次,并根据当前登录的用户读取和存储相应的数据


每个用户一分贝的想法目前已经被放弃,但我不知道该如何实现。

树脂!我已经有很长一段时间没有听说过或使用过树脂了

我看到过这样的想法:在堆栈溢出时,系统的每个用户都有一个数据库。反应大致相同——这不是一个好主意

原因有很多,但我会坚持规模、可维护性和波动性

比例

有些数据库对它们可以拥有的数据库数量有限制。我不知道一个Postgres实例可以有多少个数据库

这个链接()说有人在一个实例上获得了10000个数据库

我想说,随着时间的推移,一个网站获得100万用户(当然不是所有活跃用户)并不罕见。换句话说,我敢打赌你的用户数会在某个时候打破Postgres,每个用户有一个数据库

可维护性

假设您只需要10000个用户,这样就可以创建10000个数据库。如果要更新每个数据库中的表,会发生什么情况?推行这些变革是痛苦的

通常会发生的情况是,您将编写一个脚本来接触每个数据库,即使您对它进行了测试,但在脚本运行到一半时,脚本会死掉,现在您将陷入绝望的几分钟,其中一半的表处于一种状态,另一半处于另一种状态

甚至更糟糕的是,数据库不同步,并且与其他数据库具有不同的模式。现在,您可能有多个“用户”数据库的实时版本

波动性

用户变化无常。他们今天就报名,然后再也不会回来了。他们将注册,两年后再次登录。他们将创建多个帐户,因为他们忘记了密码

这将很快导致孤立的数据库。您需要(或想要)编写一个脚本来定期清理它们

此外,一些更现代的数据库(如MongoDB和Couchbase)实际上在创建数据库时预先分配了大部分磁盘/内存。我不相信PiggRs会这么做,但这是值得考虑的。

安全性


如果有人入侵了你的邮箱,按数据库划分用户对你没有帮助。它们可以在数据库之间移动,就像在表中的记录之间移动一样容易。最好只是很好地锁定数据库机器,然后让用户一起生活在一个表中。它更容易扩展,更容易维护,而且您可以管理波动性。

树脂!我已经有很长一段时间没有听说过或使用过树脂了

我看到过这样的想法:在堆栈溢出时,系统的每个用户都有一个数据库。反应大致相同——这不是一个好主意

原因有很多,但我会坚持规模、可维护性和波动性

比例

有些数据库对它们可以拥有的数据库数量有限制。我不知道一个Postgres实例可以有多少个数据库

这个链接()说有人在一个实例上获得了10000个数据库

我想说,随着时间的推移,一个网站获得100万用户(当然不是所有活跃用户)并不罕见。换句话说,我敢打赌你的用户数会在某个时候打破Postgres,每个用户有一个数据库

可维护性

假设您只需要10000个用户,这样就可以创建10000个数据库。如果要更新每个数据库中的表,会发生什么情况?滚动t是痛苦的