1. A method for database optimization, comprising: detecting a plurality of columns in an unoptimized database that co-appear in queries to the database; compacting the plurality of columns into a single hyper-column using a processor to form an optimized database, wherein each entry in the hyper-column comprises data from a corresponding entry in each of the plurality of columns; and generating an interface for the optimized database that accepts queries according to a schema for the unoptimized database and translates said queries into queries according to a schema for the optimized database.