I am building a pretty big enterprise application produced in python that on its first version will need network connection.

I have been thinking to keep some user configurations saved around the database, rather than personal files within the customers home folder.

A few of the advantages I have considered are:

  • the consumer can alter computer systems keeping its configurations
  • configurations could be supported together with the relaxation from the systems data (not really a large concern)

An amount be a few of the caveats of the approach?

This really is pretty standard. Go for this.

The caveat is the fact that whenever you go ahead and take database lower for maintenance, no-one can make use of the application as their profile is inaccessible. You may either solve that by looking into making one hundredPercent-on db solution, or, easier, through some type of caching of profiles in your area (an "offline" mode of procedures). That will let your application to operate if the user or even the db are from the network.

One caveat might rely on in which the user is applying the applying from. For instance, when they use two computer systems with various screen resolutions, and 'selected zoom/text size' is among the stuff you connect using the user, may possibly not continually be appropriate. It is dependent what type of configurations you want to permit the user to personalize. My place of work continues to have some customers trapped on small LCD screens having a max res of 800x600, and we must take into account individuals when developing.

Do you want the database to operate any area of the application? If that is the situation you will find no reasons not to keep the config within the DB. You already pointed out the advantages and you will find no disadvantages.

It's perfectly reasonable to help keep user configurations within the database, as lengthy because the configurations have to do with the applying separate from user location. One possible benefit of personal files within the user's home folder is the fact that customers can send configurations to each other. You might obviously regard this being an advantage or perhaps a disadvantage :-)