• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            那誰的技術博客

            感興趣領域:高性能服務器編程,存儲,算法,Linux內核
            隨筆 - 210, 文章 - 0, 評論 - 1183, 引用 - 0
            數據加載中……

            [算法]如何根據數據的多種屬性來查找數據

            今天下午,使用新浪微博的查找好友功能查找好友時,突然想起這樣的一個功能,應該說這個問題我之前也考慮過,但是一直沒有很好的答案,這里做一個描述.

            其實問題說白了也很簡單,查找好友的時候,可以根據用戶的一個或者多個屬性來定位數據.比如一個用戶有用戶名,性別,地址三個屬性,如何做到可以根據其中的一個或者多個屬性來定位用戶呢?

            首先來看存儲端的設計,我個人認為這個功能雖然可能用的次數不多,但是不應該是直接去訪問查找數據庫的,否則量如果大了起來響應會很慢.好了,如果不是直接查找數據庫的話,那么擋在數據庫前面應該有cache服務器了.第二個問題來了,cache總是有限的,不能緩存所有的數據,那么在這里查找就可能會丟失一些數據,這個問題又怎么解決呢?嗯,我個人的猜測是,這里有一個平衡點的問題,即有一個準則,比如說經常登錄的活躍用戶信息才會留在cache中,不常訪問的用戶,找不到也不打緊了.

            接下來,如果數據真的在cache中,即使如此,那么要實現這里提到的可以根據多個屬性來查找數據也不是很容易實現的.

            現在大部分的cache系統,比如memcached,還有我之前寫的ccache,本質上都是key-value形式的cache,也就是僅能針對一個key值進行搜索查找.

            考慮如下的兩種實現:
            1) 緩存中數據key是用戶名,而value是用戶的其它信息如性別,城市,主頁等,那么這里就存在一個key值不唯一的問題.好了,如果把所有相同key值的數據組織在一起,比如用一個鏈表串起來,如果找到這個用戶名,再遍歷這個鏈表根據其余的參數來定位數據.但是,如果用戶不是根據用戶名也就是key值來查找數據的,如何是好呢?難道說,要建立一個多key的數據結構用于查找,就我現在對cache設計的了解,還沒有這種多key設計的cache,基本上都是單key的cache.

            2) 緩存中數據key不僅包括用戶名,還包括了其它可以定位到用戶的屬性,也就是,與前面的實現不同的是,這個實現把多個屬性都放在key里面了.但是,如果這樣組織數據,又如何定位數據呢?假設key里面有三個屬性,某次使用了其中的一個屬性來查找,下一次使用其中的兩個屬性來查找....這種設計實現起來還是很難的.

            以上幾個問題,我今天考慮了一下,沒有太好的思路,這也越發激起我去研究數據庫實現的想法.疑問未除,做個紀念.


            =========== 分割線 ==================
            這個問題似乎我想的復雜了,問了一下朋友,說是應該直接搜索數據庫,因為一般這樣的搜索量不會很多.




            posted on 2009-10-23 20:11 那誰 閱讀(5101) 評論(4)  編輯 收藏 引用 所屬分類: 算法與數據結構服務器設計

            評論

            # re: [算法]如何根據數據的多種屬性來查找數據  回復  更多評論   

            按照數據庫實現,應該是數據存儲起來,然后分別建立不同的索引吧.索引做的復雜了,就是搜索引擎了 :)
            2009-10-23 22:00 | dogstar

            # re: [算法]如何根據數據的多種屬性來查找數據  回復  更多評論   

            一般都會按照 ID和用戶名做key的

            你那個需求 直接查找數據庫好點
            2009-10-27 15:12 | wangfan1985@gmail.com

            # re: [算法]如何根據數據的多種屬性來查找數據  回復  更多評論   

            分層索引呢 相當于key值查找key值,最后查找到數據
            2012-06-07 15:37 | hai

            # re: [算法]如何根據數據的多種屬性來查找數據  回復  更多評論   

            這個可以用多叉樹
            2013-10-21 17:49 | xiaolong
            中文字幕亚洲综合久久菠萝蜜| 国产精品久久久久jk制服| 欧美一区二区精品久久| 国产精品久久自在自线观看| 91精品观看91久久久久久| 精品久久久久久无码国产| 久久人人爽人人爽人人片AV麻烦 | 国产一区二区三区久久| 国产视频久久| 精品无码久久久久国产| 久久久久国产成人精品亚洲午夜| 久久中文字幕人妻熟av女| 77777亚洲午夜久久多喷| 免费精品久久久久久中文字幕| 久久久久久国产精品免费无码| 免费精品久久久久久中文字幕| 97久久精品无码一区二区天美| 亚洲欧美一区二区三区久久| 国产成人综合久久精品尤物| 久久夜色精品国产欧美乱| 亚洲国产成人精品无码久久久久久综合 | 成人综合伊人五月婷久久| 2021国产精品久久精品| 国产精品九九久久免费视频| 国产精品久久久久9999| 国产69精品久久久久久人妻精品| 欧美日韩中文字幕久久久不卡 | 伊人久久无码中文字幕| 久久伊人精品青青草原日本| 伊人久久大香线焦综合四虎| 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 久久人人爽人人澡人人高潮AV| 亚洲国产成人久久综合碰碰动漫3d| 亚洲精品乱码久久久久久按摩| 狠狠色丁香久久婷婷综合图片| 日韩精品无码久久一区二区三| 草草久久久无码国产专区| 亚洲乱亚洲乱淫久久| 久久久久亚洲AV成人网人人网站| 久久精品国产亚洲精品| 欧美久久一区二区三区|