常用参数应保存在配置文件中还是数据库中?

J2EE 码拜 10年前 (2015-05-10) 2391次浏览 0个评论
 

300个用户的系统,有若干参数是公共参数,几乎每个用户都会用到的公共参数,如果这些参数保存在数据库中,每个用户都要反复多次访问数据库获取这些参数,这样觉得似乎很浪费资源. 是不是应该保存在配置文件中? 但感觉好像也是差不多的情况, 各位是怎么做的?

保存在配置文件中,还是要多次去读取配置文件,那样更慢,写数据库吧,就当是外键关联表,多表联合查询,也不慢。
5分
都行,启动时加到缓存就行。
引用 楼主 gzronald70 的回复:

300个用户的系统,有若干参数是公共参数,几乎每个用户都会用到的公共参数,如果这些参数保存在数据库中,每个用户都要反复多次访问数据库获取这些参数,这样觉得似乎很浪费资源. 是不是应该保存在配置文件中? 但感觉好像也是差不多的情况, 各位是怎么做的?

访问数据库虽然不慢,但是同一个用户都要反复多次访问数据库,比较浪费资源,我的意思是,就算是同一个用户,每次访问一个功能的时候都会再去访问一次数据库获取这些参数.并且由于这些参数对于所有用户都是共用的相同的,其他用户又要同样的重复访问这些参数,是不是我想的太多了?

引用 2 楼 liangtu33 的回复:

都行,启动时加到缓存就行。

缓存是什么意思?是每个用户访问都要单独缓存吗?还是可以在服务器上缓存所有用户共同调用?

5分
数据库,清晰的业务逻辑更重要。
引用 4 楼 gzronald70 的回复:
Quote: 引用 2 楼 liangtu33 的回复:

都行,启动时加到缓存就行。

缓存是什么意思?是每个用户访问都要单独缓存吗?还是可以在服务器上缓存所有用户共同调用?

共用缓存。

引用 5 楼 t_jl1979 的回复:

数据库,清晰的业务逻辑更重要。

我也倾向于数据库,因为不同的客户的数据都保存在数据库中,这样不用去为不同的客户管理不同的配置文件版本. 但是能不能一次加载所有用户公用呢?

5分
你可以写一个静态的集合,项目启动初始化就可以了,当项目关掉会自动销毁的!
引用 8 楼 huiwenjie168 的回复:

你可以写一个静态的集合,项目启动初始化就可以了,当项目关掉会自动销毁的!

但这个是写在源代码中的,这样不方便用户自己修改配置文件. 我们已经有部分参数就是这样做的,这部分参数是不允许用户自己修改的.但现在有些参数是要留给用户自己可以修改的.只能保存在配置文件或者数据库中

引用 8 楼 huiwenjie168 的回复:

你可以写一个静态的集合,项目启动初始化就可以了,当项目关掉会自动销毁的!

初始化是什么意思?是只缓存吗?

5分
既然是公共参数,不管是放到配置文件中还是数据库中,都应该放到缓存中,做法是放到某各类的static变量中
如果这些公共参数在系统运行的时候有可能会发生改变,那么放到数据库中是比较好的,这样改了数据库,刷新一下缓存就可以,不用重启应用,如果在运行时不会改变,最好是放到配置文件中,这样一目了然,开发这个系统的人想要查某个参数的值就很容易
引用 9 楼 gzronald70 的回复:
Quote: 引用 8 楼 huiwenjie168 的回复:

你可以写一个静态的集合,项目启动初始化就可以了,当项目关掉会自动销毁的!

但这个是写在源代码中的,这样不方便用户自己修改配置文件. 我们已经有部分参数就是这样做的,这部分参数是不允许用户自己修改的.但现在有些参数是要留给用户自己可以修改的.只能保存在配置文件或者数据库中

我的这个是针对那些不经常去改变的数据用该方法比较好,如果你的数据会经常修改,建议存入数据库!配置文件这种方法是对那些一直不变的数据,配置在里面比较好!

引用 12 楼 huiwenjie168 的回复:
Quote: 引用 9 楼 gzronald70 的回复:
Quote: 引用 8 楼 huiwenjie168 的回复:

你可以写一个静态的集合,项目启动初始化就可以了,当项目关掉会自动销毁的!

但这个是写在源代码中的,这样不方便用户自己修改配置文件. 我们已经有部分参数就是这样做的,这部分参数是不允许用户自己修改的.但现在有些参数是要留给用户自己可以修改的.只能保存在配置文件或者数据库中

我的这个是针对那些不经常去改变的数据用该方法比较好,如果你的数据会经常修改,建议存入数据库!配置文件这种方法是对那些一直不变的数据,配置在里面比较好!

我说的这些参数不需要经常改变.只是软件给不同的客户,他们自己需要修改配置,通常只是一次性修改配置.

引用 13 楼 gzronald70 的回复:
Quote: 引用 12 楼 huiwenjie168 的回复:
Quote: 引用 9 楼 gzronald70 的回复:
Quote: 引用 8 楼 huiwenjie168 的回复:

你可以写一个静态的集合,项目启动初始化就可以了,当项目关掉会自动销毁的!

但这个是写在源代码中的,这样不方便用户自己修改配置文件. 我们已经有部分参数就是这样做的,这部分参数是不允许用户自己修改的.但现在有些参数是要留给用户自己可以修改的.只能保存在配置文件或者数据库中

我的这个是针对那些不经常去改变的数据用该方法比较好,如果你的数据会经常修改,建议存入数据库!配置文件这种方法是对那些一直不变的数据,配置在里面比较好!

我说的这些参数不需要经常改变.只是软件给不同的客户,他们自己需要修改配置,通常只是一次性修改配置.

这样的话,只能用数据库,如果你用缓存存的话,当系统在重新启动,用户必须再次重新设置他的配置,

引用 11 楼 wangxf_8341 的回复:

既然是公共参数,不管是放到配置文件中还是数据库中,都应该放到缓存中,做法是放到某各类的static变量中
如果这些公共参数在系统运行的时候有可能会发生改变,那么放到数据库中是比较好的,这样改了数据库,刷新一下缓存就可以,不用重启应用,如果在运行时不会改变,最好是放到配置文件中,这样一目了然,开发这个系统的人想要查某个参数的值就很容易

OSCache怎么样?你是用哪一个来做缓存的?我需要缓存到内存中

引用 2 楼 liangtu33 的回复:

都行,启动时加到缓存就行。

缓存到内存中,应该用哪个? OSCache 是最常用的吗?

EhCache 据说是最常用的,是吗?
5分
引用 17 楼 gzronald70 的回复:

EhCache 据说是最常用的,是吗?

分布式的可以用memcached,单台机器就到内存。

10分
引用 7 楼 gzronald70 的回复:
Quote: 引用 5 楼 t_jl1979 的回复:

数据库,清晰的业务逻辑更重要。

我也倾向于数据库,因为不同的客户的数据都保存在数据库中,这样不用去为不同的客户管理不同的配置文件版本. 但是能不能一次加载所有用户公用呢?

为了提速一般用缓存解决。
通用解决方案redis,memcached。
简单的就自己写一个静态单例,线程安全的类管理,把数据放在Map中,在应用启动时初始化。

引用 17 楼 gzronald70 的回复:

EhCache 据说是最常用的,是吗?

EhCache确实挺好用的,具体如何使用,你可以参考这篇文章,写的比较详细 http://www.cnblogs.com/hoojo/archive/2012/07/12/2587556.html#undefined

5分
如果是公共的参数,我感觉还是配在文件里面,然后可以静态注入到每个用户,这样会好一点,没必要放数据库

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明常用参数应保存在配置文件中还是数据库中?
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!