We are buidling reporting application, in which we will be dumping large volumn data on daily basis. Currently we are having two data models one for operational and another reporting.
Few columns in reporting data model present in operational tables. If operational data model gets updated how we can ensure that reporting data model make similar changes, also how much cost of updating will be?
Example:
Report Table -
user_name
organisation_name
event_name
etc 10 more col.
User Table -
id
name
..
Organisation Table -
id
name
Lets consider report table consist 1 Million records, and organization name gets changed, that change needs to be reflected in Report table. Frequency of changing details could be average.
So we have two choices
Normalized database -
Which will save updation on Report table, but query processing will take longer time.
Denormalized database -
Which will help us to direct faster query processing but it will involve complexity to maintain it.
Please advice, which way we should go? Our volume of data is very high, and reporting data is high granular.
The only option really is normalized database. Why?
Pros:
The "slower" querying is not actually really slower. The only con, which is just a piece of cake is, that you will have to code a bit more. But you code once, the database stays forever.