Questa pagina descrive il percorso di upgrade da Cloud Datastore precedente a Firestore in modalità Datastore.
Firestore può funzionare in modalità Datastore, pertanto è compatibile con le versioni precedenti con la versione precedente di Cloud Datastore. Con Firestore In modalità Datastore, puoi accedere al livello di archiviazione migliorato di Firestore mantenendo il comportamento del sistema Datastore. Firestore in modalità Datastorerimuove le seguenti limitazioni precedenti di Cloud Datastore:
- Le query non sono più coerenti alla fine. Sono invece a elevata coerenza, a meno che non richieda esplicitamente la coerenza finale.
- Le query nelle transazioni non devono più essere query antenate1.
- 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 secondo.1
Per saperne di più sulla modalità Datastore, consulta Firestore in modalità Datastore.
A partire da giugno 2021, le migrazioni dalla versione precedente di Cloud Datastore a Firestore in modalità Datastore a iniziare. Le migrazioni partono da database con traffico molto basso e verranno estese ai database con traffico più elevato nei prossimi mesi.
1 Database che migrano al modello Optimistic With La modalità di contemporaneità dei gruppi di entità è ancora soggetta al gruppo di 25 entità di transazioni e il limite di 1 scrittura al secondo in Firestore in modalità Datastore. Le query nelle transazioni devono essere query di primo livello. Vedi il modello ottimista Con la modalità di contemporaneità dei gruppi di entità per ulteriori informazioni.
Upgrade automatico a Firestore in modalità Datastore
Se gestisci un'applicazione che utilizza Cloud Datastore precedente, non dovrai aggiornare il codice dell'applicazione. Ti informeremo sulla pianificazione dell'upgrade della tua applicazione a Firestore in modalità Datastore. L'upgrade non richiede o un tempo di inattività.
Per ulteriori domande sull'upgrade automatico, contatta uno dei nostri canali di assistenza.
Visualizza il tipo di database
Puoi utilizzare lo
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 l'upgrade è già stato completato.
type
non presente nell'outputIl tipo di database è la versione precedente di Cloud Datastore. Verrà eseguito l'upgrade del database a Firestore in modalità Datastore.
type: FIRESTORE_NATIVE
Il tipo di database è Firestore in modalità Native.
Fasi dell'upgrade
A grandi linee, seguiamo questa procedura per eseguire l'upgrade del tuo database Cloud Datastore precedente a Firestore in modalità Datastore. Questo processo non richiedono tempi di inattività dell'applicazione:
Aggiungi una nuova replica dei dati di Firestore in modalità Datastore al tuo database Cloud Datastore precedente esistente. Operazioni di scrittura di entità duplicate in modo asincrono in Firestore in modalità Datastore.
Copia le voci di dati e indice esistenti dalla versione precedente di Cloud Datastore in Firestore in modalità Datastore. Dopo la copia, verifica i dati.
Reindirizza le letture delle entità direttamente a Firestore in modalità Datastore. Il primo reindirizzamento a letture coerenti e poi un reindirizzamento con operazioni coerenti.
Reindirizza le scritture delle entità e le letture transazionali direttamente a Firestore in modalità Datastore.
Questo processo prevede le fasi indicate di seguito.
1. Applica le scritture in modo sincrono
Durante questa fase, le scritture vengono applicate in modo sincrono alla versione precedente di Cloud Datastore: non riporterà l'esito positivo finché non saranno state applicate tutte le modifiche alle entità e agli indici almeno una replica. Questo simula il comportamento di Firestore in modalità Datastore, che applica anche le scritture in modo sincrono (e si differenzia dal comportamento predefinito di Cloud Datastore precedente, in cui le scritture vengono applicate in modo asincrono dopo essere state committate).
Lo scopo di questa fase è evidenziare l'impatto della latenza delle applicazioni sincrone in Firestore in modalità Datastore prima dell'upgrade. L'applicazione sincrona delle scritture continuerà durante e dopo la migrazione.
I database con pochissima attività salteranno questa fase. Per determinare se questa fase è stata inclusa nell'upgrade del database, controlla i [log] per la fase APPLY_WRITES_SYNCHRONOUSLY
.
2. Copia e verifica
Questa fase rappresenta l'inizio della migrazione. Introduce una replica di Firestore in modalità Datastore ed esegue i seguenti passaggi:
Diario
Anche le operazioni di scrittura delle entità in Cloud Datastore precedente iniziano a essere inviate tramite un canale laterale alla replica di Firestore in modalità Datastore. Ciò avviene nell'ambito di il sistema di replica esistente di Cloud Datastore. Queste operazioni di scrittura non influiscono sulla latenza di scrittura. Firestore in modalità Datastore esegue il buffering di queste operazioni di scrittura per applicarle dopo il passaggio di copia.
Copia
Nella replica di Firestore in modalità Datastore, crea una copia offline le voci di dati e di indice esistenti. Il passaggio della copia non influisce le operazioni legacy di Cloud Datastore. Questo passaggio potrebbe durare diversi giorni.
Drain Journal
Applica le scritture del passaggio del diario sopra i dati offline copia.
Verifica dati
Verifica di nuovo i dati in Firestore in modalità Datastore confrontandoli con quelli nel Cloud Datastore precedente.
3. Reindirizza le letture a coerenza finale
Offri letture eventualmente coerenti (query senza filtro di antenato) da Firestore in modalità Datastore. A questo punto si applicano ancora le semantiche legacy di Cloud Datastore per le letture:
- Le query predecessore sono a elevata coerenza.
- Le query non relative all'antenato sono a coerenza finale.
- Le ricerche sono a coerenza elevata (tranne quelle configurate esplicitamente per la coerenza finale).
Firestore in modalità Datastore continua a funzionare come replica dei dati legacy di Cloud Datastore.
4. Reindirizza letture a elevata coerenza
Pubblica letture a elevata coerenza (non transazionali) da Firestore in modalità Datastore. Tieni presente che la semantica precedente di Cloud Datastore per le letture si applica ancora. Anche se ora le letture provengono direttamente da Firestore, Firestore si basa ancora sul precedente Cloud Datastore per garantire che sia aggiornato per letture fortemente coerenti.
5. Scritture di reindirizzamento
Reindirizza le scritture di entità e le letture transazionali su Firestore in modalità Datastore. Le modifiche contemporaneamente alla stessa entità continuano a causare l'interruzione delle transazioni. Le modifiche simultanee a entità diverse all'interno dello stesso gruppo di entità non provocano più l'interruzione delle transazioni.
All'inizio di questa fase, Firestore in modalità Datastore si basa ancora su Cloud Datastore precedente per garantire l'aggiornamento prima di ogni scrittura. Dopo un passaggio finale che garantisce che tutte le scritture precedenti applicato, Firestore in modalità Datastore interrompe la consulenza la versione precedente di Cloud Datastore.
6. Migrazione completa
Viene ora applicata la semantica di Firestore in modalità Datastore per le letture: tutte le query sono a elevata coerenza.
Il prezzo rimane lo stesso, ma la fatturazione ora include Firestore SKU. La pagina Quote di App Engine inizia a mostrare l'utilizzo di Firestore rispetto all'utilizzo della versione legacy di Cloud Datastore.
Transazioni
Firestore in modalità Datastore supporta tre modalità di concorrenza:
Ottimistico
La maggior parte dei database Cloud Datastore legacy utilizzerà la contemporaneità ottimistica per le transazioni in Firestore in modalità Datastore. La concorrenza ottimistica preserva i comportamenti esistenti delle transazioni nel precedente Cloud Datastore.
Ottimistico con gruppi di entità
Database che dipendono da un gruppo di entità della semantica transazionale verrà migrata in questa modalità di contemporaneità. Consulta le Modalità di contemporaneità ottimale con gruppi di entità per ulteriori informazioni.
Pessimistic
Per alcuni database di cui è stata eseguita la migrazione in precedenza e che presentano un'attività molto ridotta è stata eseguita la migrazione con blocchi pessimistici per le transazioni in Firestore in modalità Datastore.
La modalità di concorrenza è accessibile tramite la risorsa REST Firestore projects.databases:
curl -X GET -H "Authorization: Bearer "$(gcloud auth print-access-token) \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases"
La modalità di concorrenza è disponibile anche esaminando i log relativi alla fase PREPARE
.
Modalità di contemporaneità ottimistica con gruppi di entità
Per rimuovere le limitazioni di throughput di query, transazioni e scrittura di Optimistic con gruppi di entità, imposta la modalità di concorrenza del progetto su Optimistic. Per assicurarti che questa modifica sia compatibile con il tuo progetto:
Crea un progetto di test in Firestore in modalità Datastore.
Modifica la contemporaneità del progetto di test modalità a
OPTIMISTIC
. Invia un PATCH HTTP dell'applicazione, come illustrato di seguito.Esegui test sul progetto di test per assicurarti che il carico di lavoro funziona come previsto senza gruppi di entità.
Cambia la modalità di contemporaneità del progetto principale da Da
OPTIMISTIC_WITH_ENTITY_GROUPS
aOPTIMISTIC
.
Richiesta HTTP PATCH
per modificare la modalità di concorrenza 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"
Logging e notifiche di avanzamento
Il processo di upgrade utilizza Cloud Logging per pubblicare aggiornamenti di avanzamento. Per visualizzare i log, utilizza Logs Explorer, l'API Cloud Logging o Google Cloud CLI.
Gli aggiornamenti vengono pubblicati in due log sotto il nome del servizio di logging datastore.googleapis.com
:
Nome log | Risorsa monitorata | Payload |
---|---|---|
migration_state | datastore_database | type.googleapis.com/google.datastore.admin.v1.MigrationStateEvent |
migration_progress | 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 in base ai due log e creare avvisi in base a queste metriche.
Banner di migrazione nella console Google Cloud
Mentre il database Cloud Datastore precedente è in fase di migrazione, nella pagina Datastore Studio della console Google Cloud viene visualizzato un banner informativo. Questo banner include un link per aprire Cloud Logging e filtra per gli aggiornamenti della migrazione.
Nella console Google Cloud, vai alla pagina Database.
Seleziona il database richiesto dall'elenco dei database.
Nel menu di navigazione, fai clic su Datastore Studio.
Visualizzazione dello stato attuale in un'interfaccia a riga di comando
Per visualizzare rapidamente lo stato attuale di una migrazione, utilizza quanto segue
Comando gcloud
:
gcloud datastore operations describe datastore-firestore-migration
Mettere in pausa la migrazione
Le migrazioni di database di grandi dimensioni possono essere messe in pausa e riprese. La sospensione di una migrazione ne impedisce il passaggio alla fase successiva finché non viene ripresa. Mettere in pausa una migrazione può aiutarti a determinare se una variazione osservata nel comportamento o nel rendimento è il risultato del processo di migrazione o di un fattore non correlato.
Dopo aver ricevuto la notifica via email relativa alla migrazione del database, puoi controllare se il prodotto è idoneo a essere messo in pausa e ripreso mettendo in pausa di seguito. Se la migrazione non è idonea, verrà restituito un errore che indica che la funzionalità non è disponibile.
Se la migrazione del database è idonea per essere messa in pausa e ripresa, i comandi riportati di seguito inizieranno a funzionare quando la migrazione raggiungerà 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 hai bisogno di mantenere la migrazione in pausa per più di una settimana, contattaci tramite 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 invariate durante tutto il processo di upgrade. Consulta le metriche di Datastore disponibili.