Designing data intensive applications