Pav*_* K. 25 database configuration file
目前我们正在开发一个应用程序,我们使用数据库表来存储平台设置,如最大文件大小,最大用户数,支持电子邮件等.
这意味着每次我们添加平台设置时,我们都必须在此表中添加一列.
在我之前的项目中,我习惯将这些信息存储在文件中.
什么是更好/更快的方法?
ps,我几乎肯定有人已经有这样的问题,但我似乎无法找到它
Gre*_*ech 38
我们将配置设置存储在键/值类型表中,例如:
CREATE TABLE Configuration.GlobalSettings
(
SectionName VARCHAR(50),
SettingName VARCHAR(50),
SettingValue VARCHAR(1000),
SettingType TINYINT
);
Run Code Online (Sandbox Code Playgroud)
该SectionName&SettingName是主键,我们只是拆起来更容易查询什么是一节,并允许各个部分装载到处理器,而不是一次装载一大堆.这SettingValue是一个字符串,然后SettingType是一个鉴别器,它告诉我们应该如何解释设置值(例如1 = string,2 = bool,3 = decimal等).
这意味着您不必更改新设置的表结构,只需在部署脚本中添加新结构或在您设置这些内容的任何位置.
我们发现配置比文件更好,因为这意味着您可以在需要时通过管理界面轻松地以编程方式更改配置值,这可以强制执行每个设置的逻辑.你不能用文件这么容易地做到这一点(当然,这是可能的).
Jé *_*eue 14
我可以告诉你,当我在许多站点管理一个特别大的应用程序时,保持本地文件的配置是一个彻头彻尾的痛苦.通常情况下,配置被读取和缓存,并且在运行期间无法更改,其他人具有横向扩展系统,其中配置需要反复更改和退回.
如果设计人员只保留数据库中的系统属性,那么在系统环境实现期间,我的生活将会轻松10%.
z5h*_*z5h 10
为什么每次都有新栏目?为什么不只有2列:NAME和VALUE.
我们所做的是在文件中设置默认值,然后在需要时根据部署覆盖数据库中的默认值.
此外,就速度而言,我们缓存配置(能够触发重新加载).每次需要属性时重新读取配置是没有意义的.所以在速度方面,它并不重要.你做了一次.
K2s*_*2so 10
这真的取决于你的应用程序.
将设置存储在数据库中有几个优点:
缺点:
存储文件优势:
缺点:
这意味着每次添加平台设置时我们都要在此表中添加一列 - 具体取决于您使用的数据库,但您可以将整个设置存储为XML(SQL服务器允许这样),这样您就可以了每次添加设置时都不需要改变表模式; 您需要做的就是修改XML,向其添加元素或从中删除元素.
但最终,你必须自己决定,每个人都没有更好或更糟.
公平地说,答案并非如此简洁明了.
上面的答案似乎没有考虑需要在不同环境中部署的应用程序,即:dev,qa,staging,prod.
他们也没有考虑版本配置的重要性,即知道谁改变了什么,何时何地.
所有现代框架都提供了一种获取特定环境的正确配置的方法,通常是通过环境变量.
每个环境都有自己的配置,请考虑symfony布置其配置文件的方式:
your-project/
?? app/
? ?? ...
? ?? config/
? ?? config.yml
? ?? config_dev.yml
? ?? config_prod.yml
? ?? config_test.yml
? ?? parameters.yml
? ?? parameters.yml.dist
? ?? routing.yml
? ?? routing_dev.yml
? ?? security.yml
?? ...
Run Code Online (Sandbox Code Playgroud)
出于这些原因,我当然更喜欢文件中的配置.
我的2美分.