Jabo0113 2023-10-18 18:48 采纳率: 33.3%
浏览 17
已结题

如何实现权限匹配,数据量百万+

  • 有一张信息表分别关联组织、角色、用户(信息可见范围,哪些组织、角色、用户能看到)

  • 现有情景是张三登录后有多个角色以及多个组织,如何能快速的匹配到相应信息表数据。匹配规则张三的某个组织或者角色出现在关系表就显示

  • ps:信息表数据量在百万以上,如果用表连接查询会导致数据量翻倍,也可以不考虑数据库表一对多的方式,看看大家有什么好的解决方案,集思广益,感谢。

img

  • 写回答

7条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2023-10-18 18:48
    关注

    引自强大而免费的微信小程序:皆我百晓生。如有帮助,还望采纳。


    对于数据量百万+的权限匹配问题,可以考虑以下两种解决方案:

    1. 数据库表连接查询:

      • 在组织表、用户表和角色表中分别创建索引以提高查询效率。
      • 根据张三的角色和组织信息,使用多表连接查询将相关的数据表连接起来,获取张三在信息表中可见的数据。
      • 使用分页查询限制返回结果的数量,以提高查询性能。
    2. 冗余以及缓存:

      • 在信息表中可以添加冗余字段,例如组织ID、角色ID、用户ID等。当张三的某个组织或角色出现在关系表中时,将对应的组织ID、角色ID或用户ID存储在信息表的冗余字段中。
      • 当张三登录后,根据其所属的组织和角色,将相关的组织ID和角色ID取出并存储在一个Set或List中,用于快速匹配。
      • 在查询时,通过在信息表中的冗余字段进行匹配,只返回与张三关联的数据。
      • 可以使用缓存技术,如Redis或Memcached,将匹配结果缓存起来,提高查询性能。

    无论是哪种解决方案,为了提高查询效率,可以使用索引、分页查询和缓存等技术手段。具体情况可以根据系统的实际情况进行优化。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月19日
  • 创建了问题 10月18日