IBM Cloudant Replica
IBM® Cloudant® for IBM Cloud® la replica è il processo che sincronizza lo stato di due database.
Qualsiasi modifica eseguita nel database di origine viene riprodotta nel database di destinazione. È possibile creare repliche tra un numero qualsiasi di database, sia in modo continuo che come operazione "una tantum".
A seconda dei requisiti dell'applicazione, si utilizza la replica per condividere e aggregare lo stato e il contenuto.
La replicazione avviene in una sola direzione. Per mantenere due database sincronizzati tra loro, è necessario replicare in entrambe le direzioni. Completate questo processo replicando da database1 a database2, e separatamente
da database2 a database1.
Innanzitutto, al termine della replica, tutti i documenti attivi nel database di origine sono presenti anche nel database di destinazione o "target". In secondo luogo, i documenti eliminati dal database di origine vengono rimossi anche dal database di destinazione (se esistono).
Operazione di replica
La replicazione ha due forme: push o pull:
- Replica push- in cui l'origine è un database locale e la destinazione è un database remoto.
- Replica di tipo pull- in cui l'origine è un'istanza di database remota e la destinazione è il database locale.
La replica pull è utile se il database di origine ha un indirizzo IP permanente, e il database di destinazione è locale e ha un indirizzo IP assegnato dinamicamente, ad esempio, ottenuto tramite DHCP. La replica pull è appropriata se si sta replicando su un dispositivo mobile o di altro tipo da un server centrale.
In tutti i casi, i database richiesti nelle specifiche di origine e di destinazione devono esistere. Se non lo fanno, viene restituito un errore nell'oggetto JSON.
Si veda il seguente esempio di richiesta di replica tra un database sul server di origine example.com e un database di destinazione su IBM Cloudant.
POST /_replicate
Content-Type: application/json
Accept: application/json
{
"source" : "https://$USERNAME1:$PASSWORD1@example.com/db",
"target" : "https://$USERNAME2:$PASSWORD2@$ACCOUNT2.cloudant.com/db",
}
Vedere il seguente esempio di risposta all'errore se uno dei database richiesti per una replica non esiste.
{
"error" : "db_not_found",
"reason" : "could not open https://example.com/db/"
}
Replica continua
Per impostazione predefinita, la sincronizzazione di un database durante la replica avviene una sola volta quando viene effettuata la richiesta di replica. Per garantire che la replica dal database di origine a quello di destinazione avvenga
in modo continuo, impostare il campo continuous dell'oggetto JSON all'interno della richiesta su true.
Con la replica continua, le modifiche apportate al database di origine vengono replicate al database di destinazione per sempre finché non si annulla la replica.
Le modifiche sono replicate tra i due database mentre è disponibile una connessione di rete tra le due istanze.
Quando è in funzione, il processo di replica non si arresta al termine dell'elaborazione di tutti gli aggiornamenti correnti. Invece, il processo di replica continua ad attendere ulteriori aggiornamenti del database di origine, e li applica alla destinazione.
La replica continua obbliga a eseguire controlli continui sul database di origine. Questi controlli comportano un numero crescente di accessi al database, anche se il contenuto del database di origine non è stato modificato. Gli accessi al database vengono conteggiati come parte del lavoro svolto all'interno di una configurazione di database multi-tenant.
Il database _replicator
Il database _replicator è un database speciale all'interno del vostro account, dove si possono inserire i documenti di replica PUT o POST per specificare le repliche desiderate.
Prima di avviare una replica, è necessario creare il database _replicator. Per creare un database, inviare una richiesta a PUT:
https://$ACCOUNT.cloudant.com/_replicator
Per ulteriori informazioni, vedere Database.
Per annullare una replica,
DELETE il documento di replica. I campi che vengono forniti nel documento di replica sono descritti nella sezione Creazione o modifica di un'operazione di replica in Informazioni sulla richiesta.
Tutti i documenti di progetto e i documenti _local aggiunti al database /_replicator vengono ignorati.
Note importanti
- Le repliche possono avere un forte impatto sulle prestazioni di un'istanza di IBM Cloudant. I test delle prestazioni aiutano a capire l'impatto sull'ambiente in presenza di un numero crescente di repliche simultanee.
- La replica continua può generare numerose chiamate interne. La richiesta di molte chiamate potrebbe incidere sui costi per gli utenti multi-tenant dei sistemi IBM Cloudant. Per impostazione predefinita, la replica continua non è abilitata.
- Il database di destinazione deve esistere. Non viene creato automaticamente se non esiste. Aggiungere
"create_target":trueal documento JSON che descrive la replica se il database di destinazione non esiste prima della replica. Per ulteriori informazioni, vedere Creazione di un database di destinazione durante la replica. - I database dei replicatori devono essere mantenuti e curati, proprio come qualsiasi altro archivio di dati di valore. Per ulteriori informazioni, vedere Manutenzione del database di replica.
Per motivi di sicurezza, il team di IBM Cloudant consiglia di utilizzare chiavi API IAM o chiavi API di autenticazione legacy IBM Cloudant anziché credenziali a livello di account per i processi di replica. Per ulteriori informazioni, consultare il sito Guida IAM o i documenti legacy Documento API di autenticazione e legacy Documento API di autorizzazione.