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; generating key-value pairs based on each row of the column data; the key-value pairs being stored, via map-reduce, in a reducer with similar key-value pairs 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; the hierarchical data comprising data organized as a plurality of tree-structures; at least one of the tree-structures including one or more data attributes not relevant to the data query; wherein the intermediate data do not include the at least one tree-structure having one or more data attributes not relevant to the data query.