关于树形结构的数据控制

来源:12-1 角色权限树结构接口开发-1

alexnest3882392

2019-04-19

老师,最近我在做一个门禁管理的项目。门禁的所属区域树形结构大概长以下这样子:
+广东省
++++广州市
++++++++XXX区
++++++++++++AAA派出所
++++++++++++++++XXXX街道
++++++++++++++++++++YYYY栋
++++++++++++++++++++++++101
++++++++BBB派出所
++++深圳市

层级很多且很深,目前区域数据大概有3W个,层级最多的是10级深度。现在客户有个需求是想让管理员看到自己所管理的区域,例如给一个管理员分配了“AAA派出所”和“深圳市”两个区域,那这个管理员就可以看到“AAA派出所”下的所有层级和“深圳市”下的所有层级。想请教下针对这种需求有什么好的解决思路?如果按照课程树形菜单加载方式的话好像比较吃内存,因为比较多管理员。

写回答

1回答

Jimin

2019-04-19

你好,这个问题可以有多种选择
第一种,其实几万的数据量并不算大,可以都加载到内存中,直接中内存中筛选,这种的需要注意要定时同步数据库数据的更新
第二种,你可以先查出他管理的几个节点,然后基于那几个节点做类似level那种前缀匹配,获取多颗树的内容,之后将多颗树组成一棵树对外展示。这种操作需要注意管理的节点的上级节点可能会没获取,因此需要关注一下上级节点数据的获取,同时,需要注意合并对数据库的请求,注意别不停地查询数据库,尽量使用批量查询
第三种,这种数据理论上变化不会特别频繁,可以选择性的使用缓存,可以根据人的维度(如果使用的人不是特别多)做一段时间缓存、或者考虑将全量存入缓存以方便处理,也可以考虑基于每个节点把上层节点进行缓存。
提供这些想法,希望对你有所帮助。

0
0

Java开发企业级权限管理系统

源于企业真实Java项目,涉及大量高级技巧,覆盖权限管理开发技术

2260 学习 · 1347 问题

查看课程