【问题标题】:Using a database to store configuration rather than a configuration file使用数据库存储配置而不是配置文件
【发布时间】:2010-12-13 23:57:58
【问题描述】:

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

我想我感兴趣的几点是: 1)如何存储数据。像 e107 这样的一个阵列?每个可配置的单独行? 2)如何获取配置数据。全局数组?

【问题讨论】:

  • 应用程序数据!= 配置数据。一个属于数据库,另一个不属于。好吧,用户设置是另一个话题。

标签: php sql mysql database configuration


【解决方案1】:

考虑以下几点:

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

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

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

【讨论】:

    【解决方案2】:

    我要在教堂里发誓,并谦虚地指出,一个人可以两者兼得:)

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

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

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

    【讨论】:

      【解决方案3】:
      1. 每行一行,类似于 EAV。

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

          这样的东西应该适合你:

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

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

          【讨论】:

            猜你喜欢
            • 2021-09-30
            • 2013-11-09
            • 1970-01-01
            • 1970-01-01
            • 2020-12-27
            • 2014-12-08
            • 2018-05-07
            • 2021-08-05
            • 2018-03-17
            相关资源
            最近更新 更多