我们的应用程序有许多配置指令。诸如“是否启用了多种语言?”或“哪个CSS模板应该使用?” “或”每页应显示多少项目?“。将配置保存到数据库 - 键值存储
我们需要在DB中存储配置指令。目前我们有配置的每个“区域”的表,并且该表只有一行包含列中的值。这种方法允许我们对这些值施加约束 - 让它成为ENUM,INT,VARCHAR等等。但是当我们需要添加新的配置指令时,它是巨大的PITA--我们需要更新和重新部署数据库模式。它也污染了许多表格的setup_something
表空间。
我的想法是用基于MySQL的键值存储替换表(我们使用带有小配置选项的共享主机,所以我们不能使用NoSQL)。其中一些值可能依赖于语言环境或其他变量,但我认为它可以通过类似于后备(类似于“lang:fr”开头的键来解决,如果没有找到,试着用“lang:default”开头(这会总是准备好)。
约束只会用具体的设置类进行检查在PHP,但不会有DB检查。
- 是否对此有任何现成的解决方案(prefferably与运作良好Zend Framework)
- 这个解决方案的秘诀是什么(除非明显 - 我不能一次获取整个“行”或同时获取多行 - 这不是问题)
- [你使用过|你会使用]类似的解决方案还是完全不同的东西?
为什么不使用带有键/值对的一个表?如果是按用户配置,则始终可以使用用户/键/值作为表数据。 – Matt 2012-08-01 14:39:05
如果您不需要从Web应用程序(例如管理界面)写入/更改参数,我会在文本文件中使用某些内容。像yaml或ini风格的配置。现有的解决方案/ PHP库无法解决这个问题。 – bcelary 2012-08-01 14:40:16
这是我的第一个想法。但是我想先将众包体验:)可能会有一些不可预见的陷阱;) – 2012-08-01 14:41:43