How to store site wide settings in a database?

前端 未结 9 2905
时光说笑
时光说笑 2021-02-19 10:08

I\'m debating three different approaches to to storing sitewide settings for a web application.

A key/value pair lookup table, each key represents a setting.

    <
相关标签:
9条回答
  • 2021-02-19 10:47

    Since your question is tagged with database/sql I presume you'd have no problem accessing an sql table for both lookup and management of settings... Guessing here, but I'd start with a table like:

    settingName  value   can_be_null   minvalue maxvalue  description
    TheAnswer      42       no            1       100     this setting does...
    ...
    

    If you think about managing a large number of settings, there's more information you need about each one of them than just their current value.

    0 讨论(0)
  • 2021-02-19 10:50

    If I had to choose, I'd go with the first option. It is easy to add/remove rows as you need. Whereas the single row could end up being a nightmare, and is probably a lot less scalable. And for option 3: It's possible you will regret hard coding your settings in the future, so you definitely don't want to box yourself in.

    Although you didn't list is as an option, is XML available? It is easy to set up, and gives you slightly more options, as you can nest settings within settings.

    0 讨论(0)
  • 2021-02-19 10:53

    I've used a key/value pair lookup table much in the way you describe with good results.


    As an added bonus the table had a "configuration name" column which provided a simple way to choose/activate a specific set of configuration settings. That meant that prod, dev, and test could all live in the same table, though it was up to the application to choose which set to use. In our case a JVM argument made sense. It might make sense to store different "sets" of config settings in the same DB table; then again, it might not.


    If you are thinking about file-based configuration, I like INI or YAML. You could still store it in a database, though you probably won't find an INI or YAML column type (as you might for XML).

    0 讨论(0)
提交回复
热议问题