A method of performing a granular restore operation from a partial backup of a database, the method comprising: detecting a request to restore a database; identifying a full backup (280, 660) of the database, wherein the full backup corresponds to a state of the database at a first point in time; identifying a partial backup (270, 640) of the database, wherein the partial backup corresponds to a state of the database at a second point in time after the first point in time; presenting at least a portion of a synthetic full backup view of the database based upon the full backup and the partial backup, wherein said synthetic full backup view presents a view of a full backup as it would appear had it been performed at the second point in time; detecting a selection by a user in the synthetic full backup view of a plurality of objects to be restored; for each respective object of the selected plurality of objects, determining if the object is stored in the partial backup or in the full backup by reading a bitmask file, wherein if the object is in the partial backup then the object may be retrieved from a partial backup file, if the object is not in the partial backup file, then the object may be retrieved from a full backup file; and restoring the objects to the database, wherein prior to detecting the request to perform the restore operation the method comprises: performing a full backup of the database and storing data received from the full backup; and performing a partial backup of the database, wherein performing a partial backup comprises: detecting a request to perform a partial backup of the database; storing data received from the partial backup; building the bitmask file including indicators that specify which objects in the database have been modified subsequent to the full backup and are stored as part of the partial backup; and storing the bitmask file. detecting a request to restore a database; identifying a full backup (280, 660) of the database, wherein the full backup corresponds to a state of the database at a first point in time; identifying a partial backup (270, 640) of the database, wherein the partial backup corresponds to a state of the database at a second point in time after the first point in time; presenting at least a portion of a synthetic full backup view of the database based upon the full backup and the partial backup, wherein said synthetic full backup view presents a view of a full backup as it would appear had it been performed at the second point in time; detecting a selection by a user in the synthetic full backup view of a plurality of objects to be restored; for each respective object of the selected plurality of objects, determining if the object is stored in the partial backup or in the full backup by reading a bitmask file, wherein if the object is in the partial backup then the object may be retrieved from a partial backup file, if the object is not in the partial backup file, then the object may be retrieved from a full backup file; and restoring the objects to the database, wherein prior to detecting the request to perform the restore operation the method comprises: performing a full backup of the database and storing data received from the full backup; and performing a partial backup of the database, wherein performing a partial backup comprises: detecting a request to perform a partial backup of the database; storing data received from the partial backup; building the bitmask file including indicators that specify which objects in the database have been modified subsequent to the full backup and are stored as part of the partial backup; and detecting a request to perform a partial backup of the database; storing data received from the partial backup; building the bitmask file including indicators that specify which objects in the database have been modified subsequent to the full backup and are stored as part of the partial backup; and storing the bitmask file.