1. A computer memory having instructions executed by a processor to perform a method of a database selection system, the method comprising: identifying an attribute of an input data; determining an optimal database type in which the input data is to be stored based on a match between the optimal database type and the attribute; selecting an ideal database based on the optimal database type from a set of distributed heterogeneous databases; determining if an existing database schema of the ideal database is optimally structured based on the input data; automatically adjusting an ideal database schema based on the input data using the processor and the memory; determining a storage requirement based on the input data; automatically partitioning an elastic storage system based on the storage requirement; associating a partitioned elastic storage system with the ideal database; and dynamically scaling a storage size of the elastic storage system based on an additional input data.