首页 > 解决方案 > 保存与数据库实体关联的配置文件 - DB 还是 JSON?

问题描述

我遇到了一个对我来说非常简单的情况......在开发过程中非常棘手的情况,因为我以前没有遇到过 - 正在搜索堆栈上的信息,但找不到一个简单而干净的解决方案。假设我有数据库表项目,每个项目可以有 1 个或多个与之关联的设置文件。用户可以使用 Web UI 更新/修改每个项目的设置。设置由 4 个不同的类型参数组成:

 1. param_slider = { name: '', value: float }
 2. param_slider_range = { name: '', minVal: float, maxVal: float }
 3. param_slider_toggle = { name: '', value: float, on: bool }
 4. param_slider_range_toggle = { name: '', minVal: float, maxVal: float, on: bool }

单个设置文件的示例如下所示:https ://gist.github.com/devaale/0dc537f6cdfe0c31c6a0aa87319735db

(项目、设置)的数量没有限制,但实际上不应超过(10、30)

目前我正在考虑这些方法,但是所有这些方法都感觉是错误的方法:

  1. 继续将设置保存为 .json 文件。读取并将它们加载到字典,更新值,写回 json 文件。(虽然最简单的方法不需要任何额外的结构创建,但具有文件 I/O 操作并将对象保存为 .jsons 似乎非常不寻常/“正确”)
  2. 使用isToggle属性创建数据库表: Settings (name, id), Setting , SettingRange , Settings将与SettingSettingRange具有一对多的关系。(虽然更动态的方法,并在未来需要时增加了许多操作和创建数据的可能性,但需要“复杂”的数据结构和简单任务的关系)
  3. 确实没有必要将不同的设置类型作为表格,并且可以使用“范围”和“切换”作为属性,并且设置表格如下所示:
setting = {
  name: '',
  minVal: float,
  maxVal: float,
  isToggle: bool,
  isRange: bool,
  on: bool
}

虽然我们减少了所需的数据结构数量,但数据本身的结构变得不干净,因为并非所有属性都将被每个 DB 条目使用。(例如:设置 isRange=false 会将 minVal 和 maxVal 保持为相同的值,并且在服务器端只有一个属性将被选为“值”)

  1. 创建设置数据库表并将整个结构存储为字符串属性,例如:
settings = {
  name: '',
  config: '{ sliders: [ { id: 1, name: Clipping, value: 20 }, { id: 2, name: Accuracy, val: 1 } ], ...'
}

将配置解析为 JSON 到 dict -> 更新值 -> 转换回字符串。简单的结构,但是将整个配置作为字符串存储到 DB 感觉不正确。

我应该继续将设置保存为 JSON 文件还是应该采用一种数据库方法?任何关于这个问题的建议都将不胜感激,如果有人已经为这样的事情提供了一个很好的解决方案并且我没有偶然发现它,那么抱歉。谢谢 !

标签: pythonjsondatabasestructureconfig

解决方案


推荐阅读