需求:有個權限樹,資源掛在樹的節點上面。父節點的權限能夠訪問全部子節點的資源。mysql
更具體點,一個公司有一個部門,這個部門是棵樹(權限樹)。每發佈一個課程,都須要設置屬於哪一個部門的權限。每一個人屬於部門。這樣,來一我的,他能夠看到該部門全部子部門的全部資料。sql
方案1:基於數據庫的實現數據庫
這是一棵權限樹。子節點的值爲父節點copy+一個遞增的數字。搜索引擎
資源的表有個字段存儲節點的數字。spa
當用戶權限在某個節點的時候,使用mysql like 'X%' 就能夠找到下面的全部的資源。3d
方案2:xml
使用搜索引擎實現。blog
資源a掛在1上,a的標籤是[1];資源b掛在2上,標籤是[1,2] 索引
用戶權限是1,能夠找到a,b的資源。若是用戶權限是2,用2搜索,能夠找到b的資源資源
標籤:就是從根到當前節點的路徑。中間用,或者空格分割,這樣es就能夠分詞。
方案1跟2各有千秋。方案1 在多表join的時候,比較方便。實際業務場景除了權限作過濾,還有其餘的搜索條件。