1. A method for data storage and searching, comprising: utilizing at least one processor to execute computer code configured to perform the steps of: creating column data based on a store of hierarchical data; said creating comprising pre-processing the hierarchical data such that values of a column with respect to different rows are stored together; accepting a data query with respect to the column data; deriving hierarchy information from the store of hierarchical data; using the column data and hierarchy information to create intermediate data; generating a modified query based on the data query and on an input data schema; and executing the modified query using the intermediate data.