感謝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