在DB中实现软件的配置功能的建议方案

来源:互联网 发布:pat端口地址转换 编辑:程序博客网 时间:2024/06/03 23:42
需求:
软件常有一些配置数据需要存储到数据库当中比如:系统使用的发件箱、软件的字体、大小、颜色等...。
数据要求存储到数据库中,便于修改。

设计:
因为配置类信息,通常是property value 形式的值对,可以设计一张表,每一个字段对应一个property存储到一个库表里。但这个表比较特殊,因为他要么为空,要么就只有一条记录。在多用户的场景下,要保证功能的正确行为要按如下方式处理:

存储配置信息的操作过程如下:

    transaction begin 
      1.删除配置表所有数据
      2.插入新的配置数据,并且指定固定主键(比如:1)
   transaction commit

通过这样的代码一方面比较简单,另一方面解决了库表只存储一行记录的问题。这里隐含解决了两个问题:

   1.在删记录时由于事务没有结束,而在事务结束时新的配置数据已经插入。配置数据的使用模块不会遇到配置数据不存在的情况。
   2.如果同时有多个用户在同时进行配置。只有第一个提交事务的会成功,其他的由于主键冲突都会失败。

......
0 0