The shape of direct arrays and tables must be the same in all cells of a column, because each row in a table must have the same length. In case of indirect arrays or tables, the table cells only contain a reference to the array or table. The ordinary kind of table is the so-called filled table. All data in it is mapped to files using a storage manager. Multiple storage managers may exist to support multiple file formats.
All data is stored in a canonical format to allow easy sharing between different machines.
Virtual tables, on the contrary, will perform some kind of mapping between the table data and the possibly underlying files. It only contains references to the appropriate rows and columns in the actual table. A simulated observation can be calculated on the fly. Only its parameters needs to be stored in a file. The application programmer and end user will in principle see no difference between the various kinds of tables.