A method and apparatus are provided for transferring a resource from the
cache of one database server to the cache of another database server
without first writing the resource to disk. When a database server
(Requestor) desires to modify a resource, the Requestor asks for the
current version of the resource. The database server that has the current
version (Holder) directly ships the current version to the Requestor. Upon
shipping the version, the Holder loses permission to modify the resource,
but continues to retain the resource in memory. When the retained version
of the resource, or a later version thereof, is written to disk, the
Holder can discard the retained version of the resource. Otherwise, the
Holder does not discard the retained version. Using this technique,
single-server failures are recovered without having to merge the recovery
logs of the various database servers that had access to the resource.
Un metodo e un apparecchio sono forniti per il trasferimento della risorsa dal nascondiglio di un assistente della base di dati al nascondiglio di un altro assistente della base di dati senza prima scrittura la risorsa al disc. Quando un assistente della base di dati (richiedente) vuole modificare una risorsa, il richiedente chiede la versione corrente della risorsa. L'assistente della base di dati che ha direttamente la versione corrente (supporto) spedisce la versione corrente al richiedente. Sulla spedizione della versione, il supporto perde il permesso modificare la risorsa, ma continua a mantenere la risorsa nella memoria. Quando la versione mantenuta della risorsa, o una versione successiva di ciò, è scritta al disc, il supporto può scartare la versione mantenuta della risorsa. Altrimenti, il supporto non scarta la versione mantenuta. Usando questa tecnica, i guasti dell'singolo-assistente sono recuperati senza dovere fondere i ceppi di recupero di vari assistenti della base di dati che hanno avuti accesso alla risorsa.