使用数据库表替代文件配置文件

8.13. 动态配置表

很多时候我们需要使用数据库存储配置项,由于各种原因我们无法使用配置文件来完成,例如在一个有很多节点集群环境中使用文件配置文件时非常不方便。

DROP TABLE IF EXISTS `config`;
CREATE TABLE IF NOT EXISTS `config` (
  `key` varchar(50) NOT NULL,
  `value` varchar(50) NOT NULL,
  `operator` varchar(50) NOT NULL DEFAULT 'dba',
  `mtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='网站动态配置文件';

INSERT INTO `config` (`key`, `value`, `operator`, `mtime`) VALUES
	('cache.apc', 'ON', 'dba', '2013-07-18 16:17:13'),
	('cache.file.path', '/tmp', 'dba', '2013-07-18 16:17:57'),
	('cache.redis', 'YES', 'dba', '2013-07-18 16:17:22'),
	('payment.alipay.status', 'Enabled', 'dba', '2013-07-18 16:15:15'),
	('payment.alipay.url', 'http://xx.comx.com', 'dba', '2013-07-18 16:16:38'),
	('payment.yeepay.status', 'Enabled', 'dba', '2013-07-18 16:15:17'),
	('payment.99bill.status', 'Enabled', 'dba', '2013-07-18 16:15:10'),
	('payment.zqpay.status', 'Disabled', 'dba', '2013-07-18 16:15:20');

配置项key的写法很讲究

单个配置
database.host=localhost
database.user=user
database.pass=pass

多个配置
database.1.host=localhost
database.1.user=user
database.1.pass=pass
database.1.status=1

database.2.host=localhost
database.2.user=user
database.2.pass=pass
database.2.status=1

优化配置项,例如:payment.alipay.status 可以这样优化
payment.status.alipay
payment.status.yeepay

这样做的目的是为了更好的使用like进行查询

select `key`,`value` from config where `key` like 'payment.status.%';
select `key`,`value` from config where `key` like 'database.?.status';

 

延伸阅读:http://netkiller.github.io/architect/index.html

时间: 2024-12-01 00:38:25

使用数据库表替代文件配置文件的相关文章

使用MiddleGen 产生hibernate的数据库表映射文件

数据|数据库 1:下载Middlegen-Hibernate-r5地址:URL http://voxel.dl.sourceforge.net/sourceforge/hibernate/Middlegen-Hibernate-r5.zip2:解压缩将下载的解压缩,如 D:\Middlegen-Hibernate-r53:配置数据库文件进入D:\Middlegen-Hibernate-r5 目录下的\config\database 子目录,选择你要得数据库文件,我使用的是mysql.将原来的<p

数据库表存放文件的设计

问题描述 数据库表存放文件的设计 想做一个java web的网站,可以用来上传下载文件, 请问我数据库的表该怎么写呢? 列名需要哪些?uuid?文件位置?初次做这个 希望有人能给我一些建议. 解决方案 主键id,文件名,文件路径,这三个是必须的,其他的比如文件大小,文件目录,文件属性,文件备注都可选.主键id的话uuid可以的,反正又不用记住id,搜索的时候用文件名搜索就可以了. 解决方案二: 数据库表设计设计数据库表 解决方案三: 数据库主要存文件路径就行了,,

导入导出oracle数据库表的dmp文件

  通过导入导出dmp文件,可以把一个或多个数据库表的表结构和表数据同时导入导出.下面来讲述一下如何进行导入导出. 先进入命令行,点击开始,输入cmd: 回车,出现命令行窗口: 导入的命令是:imp 用户名/密码@网络服务名 file=xxx.dmp full=y; 如: 导出的命令是:exp 用户名/密码@网络服务名 file=xxx.dmp tables=(表名); 如: 小贴士:导出多个表时,表名使用逗号隔开如: tables=(table1,table2,table3). 经过这四步,就

myeclipse-MyEclipse反射数据库表生成映射文件 出错

问题描述 MyEclipse反射数据库表生成映射文件 出错 前面几个步骤都没问题,最后一步的时候就会报错 Caused by: java.sql.SQLException: ORA-28000: the account is locked ,麻烦帮忙看一下 解决方案 针对这个问题,网上有相关解决办法,可以参考这个.http://www.cnblogs.com/jianqiang2010/archive/2011/09/01/2162574.html 希望能够帮到你. 解决方案二: 你使用的数据库

表空间 数据文件-oracle数据库表空间中的数据文件自动扩展到32G后不再自动扩展

问题描述 oracle数据库表空间中的数据文件自动扩展到32G后不再自动扩展 CSDN移动问答oracle表空间中的数据文件自动扩展到32G后不再自动扩展,报ora-01653错误,我之后手动加了个数据文件,但是不久之后这个数据文件自动扩展到了32G又报错,请问这是什么原因,难道以后只能手动添加数据文件么????

erwin如果导出数据库表结构为xml格式文件

问题描述 erwin如果导出数据库表结构为xml格式文件 erwin如果导出数据库表结构为xml格式文件,现已经连接oracle数据库 导入表显示模型了,我需要erwin这些表结构用于数据采集 解决方案 http://blog.itpub.net/134308/viewspace-140582/ 解决方案二: 用powerdesigner可以搞 解决方案三: 谢谢 我已经导出来文件啦 erwin里面有save as 点击可以保存为xml格式的文件 供大家分享

C# 将xml文件导入sql数据库表中

问题描述 xml文件<class><student><name>张三</name><sex>男</sex><year>11</year></student><student><name>刘三</name><sex>男</sex><year>13</year></student><student>

mysql导出-怎么让MySql数据库表和数据分开导出为sql文件

问题描述 怎么让MySql数据库表和数据分开导出为sql文件 之前用SQLyog把数据库表和数据导出到同一个文件.然后再导入的时候出错了(原因可能是数据里面有几百M的blob吧.不确定).然后看视频好像有将数据库表和数据分别导出到2个文件的方法,请大神教怎么弄!! 解决方案 http://www.cnblogs.com/yuanyouqi/archive/2010/04/28/1722738.html 解决方案二: 已经知道了..自己结贴

用java实现 把一个文件保存到oracle数据库表中

问题描述 如何把一个文件保存到oracle数据库表中 用java实现 解决方案 public class InsertBlobData {Connection con = null;/** * @param args * @throws Exception */public static void main(String[] args) throws Exception {// TODO Auto-generated method stubInsertBlobData data = new In