Questa pagina descrive il percorso di upgrade da Cloud Datastore legacy a Firestore in modalità Datastore.
Firestore può funzionare in modalità Datastore, rendendolo compatibile con le versioni precedenti di Cloud Datastore legacy. Con Firestore in modalità Datastore, puoi accedere al livello di archiviazione migliorato di Firestore mantenendo il comportamento del sistema Datastore. Firestore in modalità Datastore rimuove le seguenti limitazioni di Cloud Datastore legacy:
- Le query non sono più coerenti. Sono altamente coerenti a meno che tu non richieda esplicitamente la coerenza finale.
- Le query nelle transazioni non sono più richieste come query predecessori1.
- Le transazioni non sono più limitate a 25 gruppi di entità1.
- Le scritture a un gruppo di entità non sono più limitate a 1 al secondo1.
Per maggiori informazioni sulla modalità Datastore, consulta la pagina Firestore in modalità Datastore.
A partire da giugno 2021, sono iniziate le migrazioni da Cloud Datastore legacy a Firestore in modalità Datastore. Le migrazioni inizieranno da database a traffico molto basso e nei prossimi mesi si espanderanno in database a traffico più elevato.
1 I database di cui viene eseguita la migrazione alla modalità di contemporaneità Optimistic With Entity Groups sono ancora soggetti al limite di 25 gruppi di transazioni del gruppo di entità, oltre al limite di 1 scrittura al secondo in Firestore in modalità Datastore. Le query nelle transazioni devono essere query predecessori. Per ulteriori informazioni, consulta la sezione "Ottimizza con la modalità contemporaneità" dei gruppi di entità.
Upgrade automatico a Firestore in modalità Datastore
Se gestisci un'applicazione che utilizza la versione precedente di Cloud Datastore, non dovrai aggiornare il codice dell'applicazione. Ti invieremo una notifica sulla pianificazione dell'upgrade della tua applicazione a Firestore in modalità Datastore. L'upgrade non richiede il tempo di inattività.
Per ulteriori domande sulla procedura di upgrade automatico, contatta uno dei nostri canali di assistenza.
Visualizzare il tipo di database
Puoi usare il comando gcloud alpha firestore databases describe
per visualizzare il tipo di database. Cerca la presenza del campo type
nell'output:
type: DATASTORE_MODE
Il tipo di database è Firestore in modalità Datastore. Non richiede un upgrade o non è già stato completato.
type
non presente nell'outputIl tipo di database è Cloud Datastore legacy. Verrà eseguito l'upgrade del database a Firestore in modalità Datastore.
type: FIRESTORE_NATIVE
Il tipo di database è Firestore in modalità Native.
Fasi di upgrade
A livello generale, seguiamo questa procedura per eseguire l'upgrade del tuo database Cloud Datastore legacy a Firestore in modalità Datastore. Questo processo non richiede il tempo di inattività dell'applicazione:
Aggiungi una nuova replica dei dati Firestore in modalità Datastore al tuo database Cloud Datastore legacy esistente. Operazioni di scrittura delle entità duplicate in modo asincrono in Firestore in modalità Datastore.
Copia i dati e le voci di indice esistenti da Cloud Datastore legacy a Firestore in modalità Datastore. Dopo la copia, verifica i dati.
L'entità di reindirizzamento legge direttamente su Firestore in modalità Datastore. Le letture prima alla fine sono coerenti e poi le letture a elevata coerenza.
Reindirizza le scritture delle entità e le letture transazionali direttamente a Firestore in modalità Datastore.
La procedura prevede le seguenti fasi.
1. Applica scritture in modo sincrono
Durante questa fase, le scritture vengono applicate in modo sincrono a Cloud Datastore legacy: le scritture non segnaleranno l'esito positivo finché tutte le modifiche alle entità e agli indici non sono state applicate ad almeno una replica. Simula il comportamento di Firestore in modalità Datastore che applica anche le scritture in modo sincrono (e differisce dal comportamento predefinito di Cloud Datastore legacy, in cui le scritture vengono applicate in modo asincrono dopo il commit).
Questa fase è destinata a segnalare l'impatto della latenza sincrona in Firestore in modalità Datastore prima dell'upgrade. L'applicazione sincrona delle scritture continua durante e dopo la migrazione.
I database con un'attività molto ridotta salteranno questa fase. Per determinare se questa fase è stata inclusa nell'upgrade del tuo database, ispeziona [logs] per la fase APPLY_WRITES_SYNCHRONOUSLY
.
2. Copia e verifica
Questa fase rappresenta l'inizio della migrazione. Presenta una replica Firestore in modalità Datastore ed esegue i seguenti passaggi:
Diario
Le operazioni di scrittura delle entità nella versione precedente di Cloud Datastore iniziano anche a passare attraverso un canale laterale verso la replica di Firestore in modalità Datastore. Questo avviene come parte del sistema di replica esistente di Cloud Datastore legacy. Queste operazioni di scrittura non influiscono sulla latenza di scrittura. La replica Firestore in modalità Datastore inserisce nel buffer queste operazioni di scrittura per applicarle dopo il passaggio di copia.
Copia
Nella replica Firestore in modalità Datastore, crea una copia offline dei dati e delle voci di indice esistenti. Il passaggio di copia non interessa le operazioni di Cloud Datastore legacy. Questo passaggio potrebbe durare diversi giorni.
Diario di scarico
Applica le scritture dal passaggio del journal sopra i dati dalla copia offline.
Verifica i dati
Verifica di nuovo i dati in Firestore in modalità Datastore confrontandoli con i dati in Cloud Datastore legacy.
3. Reindirizzamenti a coerenza finale di reindirizzamenti
Fornisci letture coerenti alla fine (query senza filtro predecessore) da Firestore in modalità Datastore. La semantica Cloud Datastore precedente per le letture è ancora valida a questo punto:
- Le query predecessore sono a elevata coerenza.
- Le query precedenti sono coerenti.
- Le ricerche sono a elevata coerenza (tranne quelle configurate esplicitamente per la coerenza finale).
Firestore in modalità Datastore continua a fungere da replica dei tuoi dati Cloud Datastore legacy.
4. Reindirizzamenti a lettura costante
Pubblica letture a elevata coerenza (non transazionali) da Firestore in modalità Datastore. Tieni presente che viene ancora applicata la semantica Cloud Datastore precedente per le letture. Anche se le letture ora provengono direttamente da Firestore, Firestore si basa ancora su Cloud Datastore legacy per garantire che sia aggiornato per letture molto coerenti.
5. Scritture di reindirizzamento
Scritture di entità di reindirizzamento e letture transazionali in Firestore in modalità Datastore. Le modifiche simultanee alla stessa entità continuano a causare interruzioni delle transazioni. Le modifiche simultanee a entità diverse all'interno dello stesso gruppo non comportano più l'interruzione delle transazioni.
All'inizio di questa fase, Firestore in modalità Datastore si basa ancora su Cloud Datastore legacy per garantire che sia aggiornato prima di ogni scrittura. Dopo un pass finale che garantisce l'applicazione di tutte le scritture precedenti, Firestore in modalità Datastore smette di consultare la versione precedente di Cloud Datastore.
6. Migrazione completata
Ora viene applicata la semantica Firestore in modalità Datastore per le operazioni di lettura: tutte le query sono a elevata coerenza.
I prezzi rimangono invariati, ma la fatturazione ora elenca gli SKU Firestore. La pagina Quote di App Engine inizia a mostrare l'utilizzo di Firestore anziché l'utilizzo della versione precedente di Cloud Datastore.
Transazioni
Firestore in modalità Datastore supporta tre modalità di contemporaneità:
Ottimista
La maggior parte dei database Cloud Datastore legacy utilizza la contemporaneità ottimistica per le transazioni in Firestore in modalità Datastore. La contemporaneità ottimale ottimizza i comportamenti esistenti delle transazioni in Cloud Datastore legacy.
Ottimizzato con gruppi di entità
I database che dipendono dalla semantica transazionale del gruppo di entità verranno migrati a questa modalità di contemporaneità. Per ulteriori informazioni, consulta la sezione Modalità di ottimizzazione della concorrenza con i gruppi di entità.
Pessimista
Per alcuni database migrati in precedenza con un'attività molto ridotta sono stati sottoposti a migrazione con blocchi pessimistici per le transazioni in Firestore in modalità Datastore.
La modalità di contemporaneità è accessibile tramite la risorsa REST di projects.databases Firestore:
curl -X GET -H "Authorization: Bearer "$(gcloud auth print-access-token) \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases"
La modalità di contemporaneità è disponibile anche controllando i log per la fase PREPARE
.
Ottimizzato con modalità di contemporaneità dei gruppi di entità
Per rimuovere le limitazioni di query, transazioni e velocità effettiva di scrittura di Optimistic With Entity Groups, imposta la modalità di contemporaneità del progetto su Ottistica. Per assicurarti che questa modifica sia compatibile con il tuo progetto:
Crea un progetto di test in Firestore in modalità Datastore.
Cambia la modalità di contemporaneità del progetto di test in
OPTIMISTIC
. Emetti una richiesta HTTP PATCH, come mostrato di seguito.Esegui test sul progetto di test per assicurarti che il carico di lavoro venga eseguito come previsto senza gruppi di entità.
Cambia la modalità di contemporaneità del progetto principale da
OPTIMISTIC_WITH_ENTITY_GROUPS
aOPTIMISTIC
.
Richiesta HTTP PATCH
per modificare la modalità di contemporaneità del database:
curl --request PATCH \
--header "Authorization: Bearer "$(gcloud auth print-access-token) \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"concurrencyMode":"OPTIMISTIC"}' \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/(default)?updateMask=concurrencyMode"
Notifiche di logging e avanzamento
Il processo di upgrade utilizza Cloud Logging per pubblicare gli aggiornamenti di avanzamento. Per visualizzare i log, utilizza Esplora log, l'API Cloud Logging o Google Cloud CLI.
Gli aggiornamenti vengono pubblicati in due log con il nome del servizio di logging di datastore.googleapis.com
:
Nome log | Risorsa monitorata | Payload |
---|---|---|
migrazione_stato | datastore_database | type.googleapis.com/google.datastore.admin.v1.MigrationStateEvent |
migration_progress [avanzamento_migrazione] | datastore_database | type.googleapis.com/google.datastore.admin.v1.MigrationProgressEvent |
Il log migration_state viene aggiornato quando cambia lo stato generale dell'upgrade (RUNNING
e COMPLETE
).
Il log migration_progress viene aggiornato ogni volta che l'upgrade passa a una nuova fase (PREPARE
, START
, APPLY_WRITES_SYNCHRONOUSLY
, COPY_AND_VERIFY
, REDIRECT_EVENTUALLY_CONSISTENT_READS
, REDIRECT_STRONGLY_CONSISTENT_READS
e REDIRECT_WRITES
).
Per ricevere notifiche man mano che l'upgrade procede, puoi creare metriche basate su log basate sui due log e creare avvisi basati su queste metriche.
Banner della migrazione in Google Cloud Console
Mentre il database Cloud Datastore precedente è in fase di migrazione, nella pagina Entità Datastore della console Google Cloud verrà visualizzato un banner informativo. Questo banner include un link per aprire Cloud Logging e filtrare per gli aggiornamenti della migrazione.
Visualizzazione dello stato attuale in un'interfaccia a riga di comando
Per visualizzare rapidamente lo stato attuale di una migrazione, utilizza il comando
gcloud
riportato di seguito:
gcloud datastore operations describe datastore-firestore-migration
Messa in pausa della migrazione
Le migrazioni di grandi dimensioni dei database sono idonee per essere messe in pausa e ripristinate. Una messa in pausa di una migrazione ne impedisce il passaggio alla fase successiva fino a quando non viene ripresa. Mettere in pausa una migrazione può aiutarti a determinare se un cambiamento osservato nel comportamento o nelle prestazioni è il risultato del processo di migrazione o da un fattore non correlato.
Dopo aver ricevuto la notifica via email relativa alla migrazione del database, puoi verificare se è possibile metterlo in pausa e ripristinarlo eseguendo il comando di pausa qui sotto. Se la migrazione non è idonea, verrà restituito un errore che indica che la funzionalità non è disponibile.
Se la migrazione del tuo database è idonea a essere messa in pausa e ripresa, i comandi riportati di seguito inizieranno a funzionare una volta raggiunta la fase START
.
Per mettere in pausa una migrazione:
curl --request POST \
--header "Authorization: Bearer "$(gcloud auth print-access-token) \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{}' \
"https://datastore.googleapis.com/v1/projects/PROJECT_ID:pauseMigration"
Per riprendere una migrazione:
curl --request POST \
--header "Authorization: Bearer "$(gcloud auth print-access-token) \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{}' \
"https://datastore.googleapis.com/v1/projects/PROJECT_ID:resumeMigration"
Questi comandi non funzioneranno al termine della migrazione.
Se devi mantenere la migrazione in pausa per più di una settimana, contatta un canale di assistenza. Dopo due settimane, la migrazione potrebbe essere ripresa automaticamente.
Metriche di Cloud Monitoring
Le metriche di Cloud Monitoring disponibili per il tuo database Datastore rimangono le stesse durante il processo di upgrade. Vedi le metriche di Datastore disponibili.