300个用户的系统,有若干参数是公共参数,几乎每个用户都会用到的公共参数,如果这些参数保存在数据库中,每个用户都要反复多次访问数据库获取这些参数,这样觉得似乎很浪费资源. 是不是应该保存在配置文件中? 但感觉好像也是差不多的情况, 各位是怎么做的?
|
|
保存在配置文件中,还是要多次去读取配置文件,那样更慢,写数据库吧,就当是外键关联表,多表联合查询,也不慢。
|
5分 |
都行,启动时加到缓存就行。
|
|
访问数据库虽然不慢,但是同一个用户都要反复多次访问数据库,比较浪费资源,我的意思是,就算是同一个用户,每次访问一个功能的时候都会再去访问一次数据库获取这些参数.并且由于这些参数对于所有用户都是共用的相同的,其他用户又要同样的重复访问这些参数,是不是我想的太多了?
|
|
缓存是什么意思?是每个用户访问都要单独缓存吗?还是可以在服务器上缓存所有用户共同调用?
|
5分 |
数据库,清晰的业务逻辑更重要。
|
|
共用缓存。
|
|
数据库,清晰的业务逻辑更重要。
我也倾向于数据库,因为不同的客户的数据都保存在数据库中,这样不用去为不同的客户管理不同的配置文件版本. 但是能不能一次加载所有用户公用呢?
|
5分 |
你可以写一个静态的集合,项目启动初始化就可以了,当项目关掉会自动销毁的!
|
|
你可以写一个静态的集合,项目启动初始化就可以了,当项目关掉会自动销毁的!
但这个是写在源代码中的,这样不方便用户自己修改配置文件. 我们已经有部分参数就是这样做的,这部分参数是不允许用户自己修改的.但现在有些参数是要留给用户自己可以修改的.只能保存在配置文件或者数据库中
|
|
你可以写一个静态的集合,项目启动初始化就可以了,当项目关掉会自动销毁的!
初始化是什么意思?是只缓存吗?
|
5分 |
既然是公共参数,不管是放到配置文件中还是数据库中,都应该放到缓存中,做法是放到某各类的static变量中
如果这些公共参数在系统运行的时候有可能会发生改变,那么放到数据库中是比较好的,这样改了数据库,刷新一下缓存就可以,不用重启应用,如果在运行时不会改变,最好是放到配置文件中,这样一目了然,开发这个系统的人想要查某个参数的值就很容易
|
|
你可以写一个静态的集合,项目启动初始化就可以了,当项目关掉会自动销毁的!
但这个是写在源代码中的,这样不方便用户自己修改配置文件. 我们已经有部分参数就是这样做的,这部分参数是不允许用户自己修改的.但现在有些参数是要留给用户自己可以修改的.只能保存在配置文件或者数据库中
我的这个是针对那些不经常去改变的数据用该方法比较好,如果你的数据会经常修改,建议存入数据库!配置文件这种方法是对那些一直不变的数据,配置在里面比较好!
|
|
你可以写一个静态的集合,项目启动初始化就可以了,当项目关掉会自动销毁的!
但这个是写在源代码中的,这样不方便用户自己修改配置文件. 我们已经有部分参数就是这样做的,这部分参数是不允许用户自己修改的.但现在有些参数是要留给用户自己可以修改的.只能保存在配置文件或者数据库中
我的这个是针对那些不经常去改变的数据用该方法比较好,如果你的数据会经常修改,建议存入数据库!配置文件这种方法是对那些一直不变的数据,配置在里面比较好!
我说的这些参数不需要经常改变.只是软件给不同的客户,他们自己需要修改配置,通常只是一次性修改配置.
|
|
你可以写一个静态的集合,项目启动初始化就可以了,当项目关掉会自动销毁的!
但这个是写在源代码中的,这样不方便用户自己修改配置文件. 我们已经有部分参数就是这样做的,这部分参数是不允许用户自己修改的.但现在有些参数是要留给用户自己可以修改的.只能保存在配置文件或者数据库中
我的这个是针对那些不经常去改变的数据用该方法比较好,如果你的数据会经常修改,建议存入数据库!配置文件这种方法是对那些一直不变的数据,配置在里面比较好!
我说的这些参数不需要经常改变.只是软件给不同的客户,他们自己需要修改配置,通常只是一次性修改配置.
这样的话,只能用数据库,如果你用缓存存的话,当系统在重新启动,用户必须再次重新设置他的配置,
|
|
既然是公共参数,不管是放到配置文件中还是数据库中,都应该放到缓存中,做法是放到某各类的static变量中
如果这些公共参数在系统运行的时候有可能会发生改变,那么放到数据库中是比较好的,这样改了数据库,刷新一下缓存就可以,不用重启应用,如果在运行时不会改变,最好是放到配置文件中,这样一目了然,开发这个系统的人想要查某个参数的值就很容易
OSCache怎么样?你是用哪一个来做缓存的?我需要缓存到内存中
|
|
都行,启动时加到缓存就行。
缓存到内存中,应该用哪个? OSCache 是最常用的吗?
|
|
EhCache 据说是最常用的,是吗?
|
5分 |
EhCache 据说是最常用的,是吗?
分布式的可以用memcached,单台机器就到内存。
|
10分 |
数据库,清晰的业务逻辑更重要。
我也倾向于数据库,因为不同的客户的数据都保存在数据库中,这样不用去为不同的客户管理不同的配置文件版本. 但是能不能一次加载所有用户公用呢?
为了提速一般用缓存解决。
通用解决方案redis,memcached。
简单的就自己写一个静态单例,线程安全的类管理,把数据放在Map中,在应用启动时初始化。
|
|
EhCache 据说是最常用的,是吗?
EhCache确实挺好用的,具体如何使用,你可以参考这篇文章,写的比较详细 http://www.cnblogs.com/hoojo/archive/2012/07/12/2587556.html#undefined
|
5分 |
如果是公共的参数,我感觉还是配在文件里面,然后可以静态注入到每个用户,这样会好一点,没必要放数据库
|