1. A method for creating a virtual database system, the method comprising: receiving, by a storage system, a plurality of point-in-time copies of a source database, the source database comprising a plurality of database blocks, each point-in-time copy comprising one or more database blocks, wherein each database block includes metadata associated with the database block; storing, on the storage system, database blocks for a plurality of point-in-time copies of the source database; receiving, by the storage system, transaction logs from the source database, the transaction logs received independent of the point-in-time copies, wherein the transaction logs represent changes to the source database since a previous point-in-time copy was received; receiving a request to create a virtual database, the request specifying a point in time; identifying a point-in-time copy stored in the storage system, the point-in-time copy obtained before the specified point in time; modifying database blocks of the identified point-in-time copy by applying one or more transaction logs received from the source database after receiving the identified point-in-time copy; creating a virtual database comprising a plurality of database blocks stored in the storage system, the plurality of database blocks comprising at least a modified database block of the identified point-in-time copy and a second database block of another point-in-time copy; and providing access to the virtual database from a server allowing the server to read from and write to the database blocks of the virtual database.