如何在数据库中存储网站范围的设置?

cho*_*hki 13 database postgresql web-applications

我正在讨论三种不同的方法来存储Web应用程序的站点范围设置.

键/值对查找表,每个键代表一个设置.

  • 优点简单实施
  • 缺点对个别设置没有约束

单行设置表.

  • 优点每个设置默认值和约束
  • 缺点 - 很多设置意味着很多列.不确定Postgres是否会遇到问题

只需硬编码,因为设置不会经常改变.

  • 优点易于设置和添加更多设置.
  • 缺点很难改变

关于走哪条路的想法?

Ton*_*ilk 12

因为你的问题是用database/sql标记的,所以我认为你可以访问一个sql表来查找和管理设置没问题...猜猜在这里,但我会从一个表开始:

settingName  value   can_be_null   minvalue maxvalue  description
TheAnswer      42       no            1       100     this setting does...
...
Run Code Online (Sandbox Code Playgroud)

如果您考虑管理大量设置,那么除了它们的当前值之外,您需要的每个信息都需要更多信息.


Mat*_*all 7

我已经按照您描述的方式使用了键/值对查找表,并获得了良好的结果.


作为额外的奖励表中有这提供了一个简单的方法来选择/激活特定的"配置名称"列的配置设置.这意味着prod,devtest可能都住在同一个表,但它是由应用程序选择哪个设置为使用.在我们的例子中,JVM参数是有意义的.在同一个DB表中存储配置设置的不同"集合"可能是有意义的; 然后,它可能不会.


如果您正在考虑基于文件的配置,我喜欢INIYAML.您仍然可以将它存储在数据库中,但您可能找不到INI或YAML列类型(就像您可能对XML一样).

  • +1键/值一直是我第一次使用它的最佳方式。而且重量也很轻。 (2认同)