使用数据库存储配置而不是配置文件

4

很不幸,对于这种材料的搜索对我来说会产生很多噪音,所以我想知道是否有人知道一个好的资源,供任何希望学习如何使用数据库存储网站配置信息而不是文件的人使用。

我想了解一些方面: 1)如何存储数据。像e107一样的一个数组?每个可配置项单独一行? 2)如何获取配置数据。全局数组?


应用程序数据!=配置数据。其中一个属于数据库,另一个则不是。用户设置属于另一个话题。 - mario
5个回答

9
考虑以下内容:
  • 除非您硬编码,否则某些配置将必须存储在配置文件中,特别是如何连接到数据库
  • 数据库不擅长存储某些类型的配置数据 - 高度结构化的东西或具有不可预测或可变结构的东西 - 您可能会得到一个没有多大意义的模式
  • 将配置文件存储在SCM系统中要容易得多
  • 您可以在升级时简单地替换配置文件,如果需要回退,则可以将其回滚。尝试使用数据库表进行此操作?即使在最理想的情况下,这也更难。

对于小型Web应用程序,我通常会选择配置文件。

一旦涉及到涉及Web和非Web服务器的基础架构,将配置放在可集中访问的位置就成为优势。这不一定是SQL数据库,有些人使用LDAP甚至DNS。


2

我会在教堂里发誓并谦虚地指出,你可以两者兼顾 :)

你可以将配置参数存储在数据库中,然后在保存参数时生成所需的任何配置文件。

这是一种冗余形式,但它也具有以下优点:

  1. 现在您可以将配置参数与普通查询组合使用。
  2. 对于DB中的每个参数,您都可以添加默认值,这意味着您可以轻松“重置”它
  3. 您可以更轻松地处理配置版本(甚至跟踪更改)。
  4. 您甚至可以构建一个Web表单来修改配置(现在您不需要直接访问Web服务器)。
  5. 敏感数据不再在Web服务器文件系统上可见。

0

你可以尝试使用类似这样的代码:

CREATE TABLE `config` (
  `prop` varchar(100) DEFAULT NULL,
  `value` mediumtext,
  UNIQUE KEY `lookup` (`lookup`)
) ENGINE=InnoDB

将你的键放入prop中,配置值放入value中。


0
  1. 每行一个,类似于EAV。

  2. 可以,全局数组或对象听起来不错。


0

对于用户通过 Web 界面更改的设置,您的方法非常常见。

您可以查看 WordPress 在数据库中存储配置的方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接