1. A method, comprising: defining a multi-tenant data structure including a data table having a plurality of data columns and a plurality of rows, wherein at least two of the rows of the data table are each specific to a different tenant and store data for the specific tenant; for a single one of the data columns: receiving from a first tenant a first definition for the data column, the first definition designating the data column for storing data that is of a first data type, and receiving from a second tenant a second definition for the data column, the second definition designating the data column for storing data that is of a second data type, wherein the second data type is different than the first data type; storing, in a metadata table of the multi-tenant data structure that is separate from the data table, the first definition for the data column and the second definition for the data column by: storing in a first row of the metadata table an identifier of the first tenant, an identifier of the data column, and an identifier of the first data type, and storing in a second row of the metadata table an identifier of the second tenant, the identifier of the data column, and an identifier of the second data type; storing by the first tenant in a first data field of the data column a first data value of the first data type, and storing by the second tenant in a second data field of the data column a second data value of the second data type, such that the single data column includes data values having different data types for different tenants.