Existing main memory data processing systems employ a variety of storage organizations and make a number of storage-related design choices. This paper is on systematically evaluating a number of these key storage design choices for main memory analytical (i.e. read-optimized) database settings. The authors' evaluation produces a number of key insights: first, it is always beneficial to organize data into self-contained memory blocks rather than large files. Second, both column-stores and row-stores display performance advantages for different types of queries, and for high performance both should be implemented as options for the tuple-storage layout. Third, cache-sensitive B+-tree indices can play a major role in accelerating query performance, especially when used in a block-oriented organization.