※ 引述《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