V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
palexu
V2EX  ›  科技

系统存在大量标签定义分散在代码和数据库中,有什么好的办法进行统一/规范化么?

  •  
  •   palexu · 2021-06-03 17:03:15 +08:00 · 850 次点击
    这是一个创建于 1029 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现状:

    1 、标签存在于常量类或枚举类中,以供业务代码引用:

    后端代码中会引用标签,具体业务场景比如:

    1 ) if 条件判断

    2 )满足某情况 1 时,需要输出(tagA+tagB+tagC);而满足情况 2 时,输出(tagE+tagF+tagB)

    相当于将这些知识以符号定义的形式存储于后端代码当中(可以理解为配置文件)。且此类配置定义量大且偶尔发生变化,且由于人工维护,要求可读性比较强,因此也不考虑放入数据库中。(否则线下、线上环境同步,以及配置变更时的修改问题非常头疼)

    前端代码中会对标签进行一些判断处理,因此也会自己维护一套枚举

    2 、标签也存在于数据库中

    因为标签本身会新增,所以枚举文件和数据库也会发生变动

    标签表与其他数据库表有关联。

    需求:

    对标签进行统一 /规范化, 避免出现数据库和代码定义不一致、前端与后端不一致等情况,同时实现方式尽量优雅

    求解

    我先写下自己的想法,抛砖引玉,希望各位大佬给些建议:

    标签一律在数据库中维护, 同时开发一个工具,解析数据库数据,生成 java 、js 等枚举类代码,发布到公司 maven 仓库等形式,提供其他系统进行引用。

    10 条回复    2021-06-21 17:09:27 +08:00
    WizardMeow
        1
    WizardMeow  
       2021-06-04 00:50:11 +08:00 via Android
    protobuf
    palexu
        2
    palexu  
    OP
       2021-06-04 10:07:34 +08:00
    @WizardMeow 感谢~
    刚去学习了一下:定义 proto 文件,一键生成多语言代码,可以方便其他系统引用。这样就省去造轮子时间了~
    不过“查询数据库结果集,生成 proto 文件” 这一步骤,刚找了下没看到有对应工具,这个就得自己开发了是吧?
    zhangdszq
        3
    zhangdszq  
       2021-06-18 08:01:40 +08:00 via iPhone
    我们会有业务代码引用标签进行判断,比如给用户打标签 “禁止登陆”, 那么登陆时标签存在就禁止登陆,不知道场景是否类似?
    palexu
        4
    palexu  
    OP
       2021-06-18 10:44:48 +08:00
    @zhangdszq 类似。
    不过涉及的系统,会根据数百个标签进行逻辑判断,最后输出一个结果值。
    而这些标签的定义在多个系统都有使用, 因此需要妥善管理起来。
    zhangdszq
        5
    zhangdszq  
       2021-06-19 00:29:01 +08:00 via iPhone
    @palexu 我正在做类似的东西 不如加个 qq 讨论下 ?看看场景适用不? 完善后准备开源
    zhangdszq
        6
    zhangdszq  
       2021-06-21 12:00:02 +08:00
    zhangdszq
        7
    zhangdszq  
       2021-06-21 12:00:19 +08:00
    zhangdszq
        8
    zhangdszq  
       2021-06-21 12:01:24 +08:00
    不知道如何添加图片,你看看这个吧
    https://files.catbox.moe/apawl4.png

    https://files.catbox.moe/ltmmou.png
    palexu
        9
    palexu  
    OP
       2021-06-21 15:33:52 +08:00
    @zhangdszq 谢谢,
    基于你发的图片来看,你的系统侧重于在网页上直接配置 tag,以及 tag 的关系。我理解的话是类似规则引擎的系统。
    我们的侧重点不太一样。我的需求是如何更好的维护 tag 元信息。具体的规则是在项目代码中进行。

    感谢回复~
    zhangdszq
        10
    zhangdszq  
       2021-06-21 17:09:27 +08:00
    @palexu OK
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5395 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:11 · PVG 17:11 · LAX 02:11 · JFK 05:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.