参数配置表设计,key-value 里存多条记录好,还是 value 存 json 好?

存参数配置表是 key-value 键值对的多条记录好,还是就一条,value 存json 字符串比较好呢?比如会接入多家短信提供商,每个账号有多个字段

阅读 2.8k
3 个回答

这个问题意义不大。除非你的配置表数据量很大

怎么存都行,说白了就是个持久化的问题。

而且在读取时,肯定要加缓存的呀,总不能一直读库吧。加完缓存后,如何存储的话,还有那么重要吗?


本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。

根据查询需要。如果你每次获取的是提供商的全部配置,那么设计为 key, value 两个字段就好,value 字段存为 JSON 格式;如果配置项非常庞杂,而且需要对细节进行查询,那么建议对这些细节独立建模和建表。

系统配置一般都是加载到内存使用的,也不会存在太多的并发读写处理,所以这部分配置放在哪里都可以,常见的有放在应用目录下、系统特定位置(比如 Windows 注册表,Linux etc 目录等),也可以放数据库。

放目录下,就是文件存储的情况,多数时候是用 JSON 或 XML。
放数据库的情况,可能是应用数据库,也可能是单独的 SQLite。在配置项特别多的情况下,可能放数据库比较好打理,然后在设计上也有好多种方式

如果只是系统配置,不分级(比如用户级)的,按 key-value 存就行。如果是分级的,可以加 level/user 字段来区分,也可以直接就以 level/user 为键来存大文本(JSON/XML)。

需要频繁读/写的情况存数据库可能会好一些,这处情况配置已经可以看作是业务数据了。

就是普通情况下的系统配置,使哪种方式在实际使用上并没有太大的区别。

Java 用得不多,但是在 C#/.NET 里基本上都是用的 JSON 文件来保存的配置。如果有写需求,保存 JSON 文件也不是很难的事情。实际上 .NET 的 Configuration 兼容多种存储方式,只不过最常用的也就是命令行参数 + appsettings.json(可以根据环境配 appsettings.Develop.json 和 appsettings.Production.json,还可以自己扩展 appsettings.Local.json 等)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题