V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
cgglyle
V2EX  ›  问与答

一个系统有很多的配置项,该怎么存到同一张表中?

  •  
  •   cgglyle · 2023-01-17 16:14:16 +08:00 · 1066 次点击
    这是一个创建于 674 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题详情

    现在有一个系统有很多的配置选项,但是需要灵活变动。现在的想法是存到 Mysql 中的同一张表中。

    因为配置项的类型各不相同,有 boolean, String 等类型,在一张表上就很难编写,提取到 Java 中也不好变成相应的类型。

    有没有什么简单的方式或者更加优雅一点的方式实现这个需求?

    11 条回复    2023-01-18 09:44:45 +08:00
    ila
        1
    ila  
       2023-01-17 16:19:04 +08:00 via Android
    keyname,keyval,keytype
    cgglyle
        2
    cgglyle  
    OP
       2023-01-17 16:25:09 +08:00
    @ila #1 最开始是这样想得,不过要编写类型转换代码有些麻烦
    murmur
        3
    murmur  
       2023-01-17 16:26:04 +08:00
    @cgglyle 不需要搜索的东西存 json 字符串有什么影响呢?
    hefish
        4
    hefish  
       2023-01-17 16:27:49 +08:00
    我觉着搞个配置中心更简单吧。
    murmur
        5
    murmur  
       2023-01-17 16:27:53 +08:00
    java 的设计就没考虑你的类型舒适度,那么多容器类都是 getInteger ,getString ,getBoolean ,要不就是(String)getObject
    cgglyle
        6
    cgglyle  
    OP
       2023-01-17 16:29:27 +08:00
    @murmur #3 需要搜索展示调整,比如系统是否锁定之类的
    simplereasy
        7
    simplereasy  
       2023-01-17 17:37:39 +08:00
    存在 redis 里?
    dengji85
        8
    dengji85  
       2023-01-17 17:49:25 +08:00
    求值引擎,把配置存储为表达式,就不需要转类型了
    R18
        9
    R18  
       2023-01-17 17:50:58 +08:00 via Android
    底层一张 config 表 title jsonValue
    具体读值是通过 Redis 并且做好自动加载
    TravisMtg
        10
    TravisMtg  
       2023-01-18 01:26:23 +08:00 via iPhone
    这感觉就是 nacos 这类配置中心的功能吧,可能有更轻量点的,op 可以往这方向看看
    MaxFang
        11
    MaxFang  
       2023-01-18 09:44:45 +08:00
    简单点的话就统一用 json 存数据库,里面定一些标准字段。即使有搜索需求,单纯的配置信息即使数据库查也还好吧,一般再放 redis 也行呀。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   949 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:30 · PVG 05:30 · LAX 13:30 · JFK 16:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.