看板 Database 關於我們 聯絡資訊
感謝P 大提供建議 log 的項目只是一些機器記錄的參數 (可以想像是Apache LOG 這樣,只是是一個人一秒一筆) 目前想到一個方法就是直接每個人每週或每月開一個文字檔寫入 然後再用LOG PARSER 去處理剩下的事 應該比較能讓架構單純化 機器打算租用標準A2 再定時把log 撈回本地端存放 這樣的預估量應該在初期是夠的 ※ 引述《popcorny (畢業了..@@")》之銘言: : ※ 引述《OpenGoodHate (什麼東西什麼東西)》之銘言: : : 資料庫名稱:MSSQL / MYSQL : : 資料庫版本:2014 / 5.5.22 : : 內容/問題描述: : : 其實還在架構選擇中 : : 就是目前有個需求是要記錄每個USER每秒產生的一筆LOG : : 如果是這樣 : : worst case 就是一個user 一天要產出86400筆記錄 : : 有1000個user 的話不就一天要記錄86400000筆 : : 沒一個月資料表應該就破億筆 : : 想請問如果有log 需求的話通常會怎麼寫 : : 這個log 是要可以隨時被查詢的 : : 若是算保存3個月(或1個月)的話該怎麼處理 : : 因為目前的主機打算租用在Azure,服務環境應該就是ASP.NET : : 所以也有硬碟容量限制 : : 有想過自動分表,但是以月份分表難保不會隨著使用著的成長會有更大量的資料 : : 或是這個情況要考慮NOSQL 的解決方案?? : : 目前是全新案子剛起步,所以要NOSQL 可能也要等目前架構真的爆炸才會換吧 : 不知道你的Log是什麼樣的Log : 使用者行為? : 還有你打算怎麼查詢? : 通常這種Log或是稱為Raw Log : 不太適合放在資料庫太久 : 頂多一週了不起 : 你應該可以把他從Raw Log轉成Aggregated Data : 例如如果你想提供查pageview : 可以根據你想查詢的分類每個小時算個統計 : 例如文章觀看次數 : 你可以把每個小時每篇文章的觀看次數放在一個aggragated table : 然後rawlog就超過七天就把它刪掉 : 當然你馬上刪也可以 但是我通常會讓他有個Time To Live : 讓資料有機會re-aggregate : 如果你真的想要把資料存超過七天 : 建議可以每天的凌晨把前一天的log dump出來 : 存到雲端storage : 你用azure可以用blobstorage : 如果用amazon可以用s3 : 之後可以用其他方法對資料做adhoc query : 當然非資料庫的資料查詢又是另外一個故事了 : 有hive/pig/impala/presto/spark sql等等選擇 XD -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.34.98.175 ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1431401125.A.69A.html
popcorny: 你的這個做法很好,也是常用的做法。 05/12 15:14
popcorny: 也可以參考LogStash或是Fluentd 05/12 15:14
popcorny: 定時把log撈回本地端存放 可以改成放blobstorage 05/12 15:16