乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      如何解決海量數(shù)據(jù)的處理問(wèn)題

       liang1234_ 2019-04-11

      今年以來(lái),網(wǎng)絡(luò)上時(shí)不時(shí)的就會(huì)傳出“某某公司又裁員了,技術(shù)團(tuán)隊(duì)也被裁了”,其中不乏我們熟悉的一些大廠。

      在這之后,市場(chǎng)上的“技術(shù)勞動(dòng)力”又多了起來(lái),而且這些“勞動(dòng)力”中有相當(dāng)一部分是有大型工程經(jīng)驗(yàn)的,比如海量數(shù)據(jù)處理、高并發(fā)處理等經(jīng)驗(yàn)。

      對(duì)于求職者來(lái)說(shuō),競(jìng)爭(zhēng)更加激烈了,在這個(gè)時(shí)刻,硬實(shí)力更顯得尤為重要。

      面試的時(shí)候,很可能會(huì)被問(wèn)到海量數(shù)據(jù)的處理問(wèn)題:

      訂單數(shù)據(jù)越來(lái)越多(億級(jí)),查詢?cè)絹?lái)越慢,如何處理?

      分庫(kù)分表會(huì)帶來(lái)哪些副作用?可能的解決方式有哪些?

      目前經(jīng)常使用的關(guān)系型數(shù)據(jù)庫(kù)如MySQL、SQL Server等,都是以“行”為單位進(jìn)行存儲(chǔ),為了快速檢索,也都采用了B樹或其他索引技術(shù)。

      從原理上來(lái)講,表中的數(shù)據(jù)越多,索引樹的范圍越大,磁盤讀取也越多,性能也就越低。

      從實(shí)踐角度來(lái)看,一般以百萬(wàn)到千萬(wàn)作為一個(gè)表的存儲(chǔ)量級(jí),超出該范圍之后,性能就會(huì)下降,需要采用其他技術(shù)手段解決。

      首先想到的就是能否將讀和寫分離,主數(shù)據(jù)庫(kù)用于寫入,讀數(shù)據(jù)庫(kù)(多個(gè))用于對(duì)外提供查詢,通過(guò)數(shù)據(jù)復(fù)制的方式將主數(shù)據(jù)庫(kù)的數(shù)據(jù)同步到讀庫(kù)。該架構(gòu)提升了數(shù)據(jù)庫(kù)的讀寫能力,但對(duì)于主數(shù)據(jù)庫(kù)的寫入能力依然沒(méi)法擴(kuò)展。

      其次,依據(jù)數(shù)據(jù)庫(kù)分區(qū)的思路,可以將不同的數(shù)據(jù)分散到不同的庫(kù)中,每個(gè)庫(kù)存儲(chǔ)的數(shù)據(jù)都不同,這樣就可以將單一庫(kù)的壓力分散到多個(gè)庫(kù)中,從而提升整個(gè)數(shù)據(jù)庫(kù)的服務(wù)能力,這就是所說(shuō)的分庫(kù)分表技術(shù)。

      若按照“字段(列)”分區(qū),每個(gè)庫(kù)/表存儲(chǔ)不同的的字段,即schema不同,就是“垂直拆分”;

      若按“數(shù)據(jù)記錄(行)”分區(qū),每個(gè)庫(kù)/表的schema一致,但存儲(chǔ)的數(shù)據(jù)不同,就是“水平拆分”。

      垂直拆分

      水平拆分

      這樣做的好處就是解決了數(shù)據(jù)存儲(chǔ)容量的問(wèn)題,但也帶來(lái)了諸多弊端。這里以“水平拆分”為例來(lái)分析。

      1.如何能做到數(shù)據(jù)的平均拆分,防止某一庫(kù)壓力過(guò)大?

      系統(tǒng)開發(fā)者要結(jié)合業(yè)務(wù)特點(diǎn)來(lái)確定分庫(kù)分表鍵,比如以u(píng)serID為分庫(kù)分表鍵,采用hash取模的方式將數(shù)據(jù)散列到不同的庫(kù)中。

      但并不是所有場(chǎng)景都適合用userID作為分庫(kù)分表鍵的,若存在“大賣家”,則該userID可能有很多條記錄,若簡(jiǎn)單的按照上述方法進(jìn)行拆分,則可能打爆其中一個(gè)數(shù)據(jù)庫(kù)。

      一般來(lái)說(shuō),會(huì)將一段時(shí)間以前的數(shù)據(jù)歸檔(比如某個(gè)userID三個(gè)月之前的數(shù)據(jù)),存放到類似HBase這種非關(guān)系型數(shù)據(jù)庫(kù)中,以此來(lái)解決上述問(wèn)題。

      2.分庫(kù)分表之后就要求每個(gè)查詢的where子句中必須攜帶分庫(kù)分表鍵,但并非每個(gè)查詢都能攜帶分庫(kù)分表鍵的。

      比如訂單庫(kù)按照訂單號(hào)hash取模之后存儲(chǔ),此時(shí)分庫(kù)分表鍵為訂單號(hào),那么想查詢某位買家所有的訂單,查詢時(shí)就沒(méi)有了分庫(kù)分表鍵,就會(huì)出現(xiàn)“全表掃描”的情況。

      一般在實(shí)踐中解決這種問(wèn)題的方法是建立“異構(gòu)索引表”,即采用異步機(jī)制將原表內(nèi)的每次一創(chuàng)建或更新,都換一個(gè)維度保存一份完整的數(shù)據(jù)表或索引表,拿空間換時(shí)間。

      在上面說(shuō)到,訂單庫(kù)按照訂單號(hào)hash取模之后存儲(chǔ),同時(shí)也按照userID維度進(jìn)行hash取模,再存儲(chǔ)一份數(shù)據(jù),那么想要獲取某一userID的全部訂單時(shí),就將userID作為分庫(kù)分表鍵傳進(jìn)去即可,避免了全表掃描。

      上面這些是在海量數(shù)據(jù)處理過(guò)程中出現(xiàn)問(wèn)題的解決思路,工程師的硬實(shí)力不僅體現(xiàn)在解決問(wèn)題的思路上,更在于細(xì)節(jié)問(wèn)題的打磨,因此還需在細(xì)節(jié)上進(jìn)行更深的學(xué)習(xí)和探討。如果你對(duì)這些感興趣,那么以下福利就很適合你:

      福利1 

      《網(wǎng)易云課堂Java進(jìn)階免費(fèi)直播課

      適聽(tīng)人群:Java初、中級(jí)開發(fā)工程師

      1. 4月8日 20:00

      深入淺出線程安全 ~ 從原子性到手寫實(shí)現(xiàn)JAVA鎖

      2. 4月9日 20:00

      Shiro企業(yè)級(jí)安全框架應(yīng)用&原理源碼解讀

      3. 4月10日 20:00

      美團(tuán)技術(shù)團(tuán)隊(duì)-分布式事務(wù)實(shí)踐

      4. 4月11日 20:00

      搜索引擎核心理論思想

      5. 4月12日 20:00

      網(wǎng)易嚴(yán)選后端性能優(yōu)化實(shí)錄

      6. 4月13日 20:00

      spring事務(wù)管理原理源碼解讀

      7. 4月14日 20:00

      網(wǎng)易組件式封裝 - 基于Spring Boot實(shí)現(xiàn)自己的Starter

      福利2  

      Java開發(fā)進(jìn)階資料包

      包含「Java開發(fā)參考書籍」「Java開發(fā)學(xué)習(xí)圖譜」「大數(shù)據(jù)容器數(shù)據(jù)庫(kù)架構(gòu)技術(shù)文檔」等



        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多