我们的应用程序有许多配置指令。诸如“是否启用了多种语言?”之类的东西。或“应该使用哪个 CSS 模板?” 或“每页应显示多少项?” .
我们需要将配置指令存储在 DB 中。目前,我们为配置的每个“区域”都有一个表,并且该表只有一行包含 columns 中的值。这种方法允许我们对值施加约束——让它成为 ENUM、INT、VARCHAR 等。但是当我们需要添加新的配置指令时它是巨大的 PITA——我们需要更新和重新部署 DB 模式。它还污染了许多setup_something
表的表空间。
我的想法是用基于 MySQL 的键值存储替换表(我们使用共享主机,配置选项很少,所以我们不能使用 NoSQL)。某些值可能取决于语言环境或其他变量,但我认为它可以通过诸如回退之类的方法来解决(查找以“lang:fr”开头的键,如果找不到,请尝试以“lang:default”开头的键(这将时刻准备着)。
约束只能在 PHP 中使用具体的设置类进行检查,但不会进行数据库检查。
- 是否有任何现成的解决方案(最好与 Zend Framework 配合使用)。
- 这个解决方案的缺陷是什么(除了显而易见的——我不能一次获取整个“行”或一次获取多行——这不是问题)
- [你使用过|你会使用] 类似的解决方案还是完全不同的解决方案?