大資料單表格儲存體方案

來源:互聯網
上載者:User

標籤:http   os   使用   strong   sp   檔案   資料   on   2014   

背景:

10w+使用者

每個使用者每天會產生有效記錄1000條,記錄組成=使用者ID、時間戳記、欄位1、欄位2、欄位N

每條記錄長度約為1K

每個使用者每天累計產生資料量=1000K,即1M

每月產生資料量為:30M

每年產生的資料量為:360M,記錄數=10003012=36w條

這些資料的特點是:一次寫入,多次讀取,中間不做任何修改!

需求:

每個使用者產生的資料,需要儲存5年以上,能夠支援隨時查詢,每次查詢的時間跨度不超過3天。

問題:

  1. 使用傳統的關係型資料庫(MSSQL、MySQL),如何儲存這些海量資料?並能夠支援快速查詢!

思路1:關係型資料庫儲存

  1. 按年建庫,如2014年,庫名為:User_2014,簡稱年份庫;

  2. 每個年份庫中,建立10w資料表,每張表代表一個使用者的全年記錄(至少在36w條左右,單表大小約360M+);

優點:

  1. 技術實現簡單,無難度;

缺點:

  1. 就我個人對MSSQL與MySQL的瞭解,任何一個庫中有10w張表,每張表有36w左右條記錄,當涉及到查詢、插入、備份的時候,都不是件容易的事情!

思路2:海量小檔案+關係型資料庫儲存

一、資料生產與寫入

  1. 生產者,將所需入庫的資料(初步以完整SQL語句),提交到隊列中;

  2. 消費者從隊列中擷取要入庫的資料,批量寫入到資料表中(每次寫入100條);

二、資料匯出

  1. 每天淩晨12點以後,啟動定時作業,從資料表中將前一天資料內容匯出到檔案中(按目標編號,分別匯出);

  2. 每個檔案中儲存該目標當天所有的資料記錄,每條記錄以\n\r作為結束符;

三、資料查詢

  1. 根據‘目標編號、時間範圍(最多查詢3天)、複雜查詢條件’,定位到對應的檔案,將其載入到記憶體中;

  2. 程式將記憶體中的資料,按照‘複雜查詢條件’進一步過濾,並將結果輸出;

四、檔案儲存體結構

每100個目標佔用一個目錄,即一個目錄中會有100個子目錄,如下所示:

PS:只所以讓每個目錄中所包括的目錄或檔案個數不超過100,原因是:無論是linux還是windows下,目錄中的子目錄或檔案個數超過100時,會影響OS效率。

優點:

  1. 目錄結構清晰、簡單、容易理解;

  2. 第一階段完成後,改用Hadoop或Hypertable來代替此方案(因為現在對hadoop或hypertable還不熟悉)

缺點:

  1. 批量備份或管理時,需要自己寫些協助工具輔助來操作。如果依賴人工手動操作,太過於麻煩!

各位看完上面的內容,那麼現在問題來了,您感覺哪種方案更可譜呢?還是您有更好的方案或建議,如果能給俺一點指教,俺將感激不盡!

大資料單表格儲存體方案

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.