Huge archiving database plus fast adhoc reports
I am designing a database that will store log events. I'm estimating about 300,000 per/min.
The events will be related but may have dynamic ranges of values.
I want to be able to run adhoc reports against this, where a timeframe, criteria, and output is selected. For example, I want 5/17-5/19, anything with user="Joe", and presented as a Top 25. Or I want all of last month, anything of type="B", and presented as a Top 10 by User.
I have read articles/docs going back and forth between denormalized and very normalized. Since a year's worth of events will be ~157,784,400,000 rows in a single table, I do need to normalize this some.
Recommendations?