Search code examples
rdbmsdatabase-normalizationsap-iq

Normalization in columnar dbs


I am trying to understand the role normalization(if any) should play , in a columnar database (in this case Sybase IQ). For example one of the advantages of normalization in a traditional row based rdbms, is that you don't repeat duplicate data as much. I understand that columnar dB's handles the duplicates problem. So to summarize should you still be using normalization in data modeling for a columnar dB?


Solution

  • This is a huge topic and cannot be answered with the golden answer. But I guess an answer can be short:

    Sybase IQ is really slow on doing JOIN etc compared to performance of just select … where foo=baa. This also applies to small updates/inserts without RLV used. This is caused, as you mentioned, by the way it's storing the data internally.

    In fact, when using Sybase IQ it can make sense to denormalize your data so you can avoid joins etc. But: And this make the answer non 100% clear and put it to the "it depends" level: This applies only for data with a low to mid cardinality and a low number of accessed columns per request e.g. by avoiding select * from "foobar". In such cases it might make also in IQ to do normalization.