我的情况是,我目前正在储存库数据库中的等级,该数据库迅速接近15 000个点(5000个边缘)。 这一等级正在界定我的安全模式,其基础是树中的用户地位,允许使用以下物品。 因此,当用户要求列出所有附担保物品清单时,Im使用CTE在开始显示其年龄(缓慢)的db(并平整所有物品)中重新采购。
The hierarchy is not changing often so I ve attempted to move it into RAM ( redis ). Keeping in mind i have many subsystems that need this for security calls, and UI s to build the tree for CRUD operations.
My first attempt is to store the relationships as a key value pair (this is how its stored in the database )
E / F G / / H I J K mapped to: E - [F, G] F - [H, I] G - [J, K]
因此,当我想要E和所有后代时,我会利用钥匙让孩子和孩子退学,并允许我从任何地点开始退学。 这一解决办法加快了速度,但是有15 000个节点,大约5 000个海滩被点击,以重建我们的代码树(Worse案设想......从E开始,性能从开始点起,导致超级用户看到最差的业绩)。 这仍然很迅速,但似乎在聊天。 我同样认为,在不重建我的整个海滩的情况下,我可以把它从钥匙清单中抹去任何时间的噪音。 这还快速地 light光,以需求为眼光,在国联上 build树。
第二次尝试
我的其他想法是从数据库中汲取等级,建设树木和储存,然后在RAM(再版)中把全部东西从记忆中删除(其大小为2兆吨,序列)。 这使我有一次呼吁(不是作为聊天)重新开树,把整个树木拉开出去,找到用户的母子,并放弃所有的儿童物品。 这些电话频频发,网络层的2兆吨甲基溴似乎大。 这还意味着,如果不砍伐树木、编辑和推回树木,就不易增加/去除和生产。 另外,在通过吉大港山区种植树木时,每次都不得不将2个酋长院赶下,只接收直接儿童(使用第一种解决办法的面积很小)。
因此,你认为,这种解决办法是一种更好的办法(长期而言,随着其继续增长)。 两者都很迅速,并且从数据库中抽取一些负荷。 或者说,他们有更好的方式来完成这项工作,但我还没有想到?
增 编