Re: [SQL ] 大量LOG记录架构选择

楼主: popcorny (毕业了..@@")   2015-05-09 23:23:19
※ 引述《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
作者: chen1025 (小陈)   2015-05-16 11:36:00
专业推 不过我好奇原po依照什么条件查询这已经有机会变成论文题目

Links booklink

Contact Us: admin [ a t ] ucptt.com