O modelo Exclusão em massa do Firestore é um pipeline que lê entidades do Firestore com uma determinada consulta GQL e depois exclui todas as entidades correspondentes no projeto de destino selecionado. Como opção, o pipeline pode passar as entidades do Firestore codificadas por JSON para sua UDF do JavaScript. Use-a para filtrar as entidades retornando valores nulos.
Requisitos de pipeline
- O Firestore precisa ser configurado no projeto antes de executar o modelo.
- Em caso de leitura e exclusão de instâncias do Firestore separadas, a Conta de serviço do worker do Dataflow precisa ter permissão para ler de uma instância e excluir da outra.
- As gravações de banco de dados precisam estar ativadas na instância do Firestore.
Parâmetros do modelo
Parâmetro | Descrição |
---|---|
firestoreReadGqlQuery |
Consulta GQL que especifica quais entidades devem corresponder para exclusão. Usar uma consulta apenas de chaves pode melhorar o desempenho. Por exemplo: "SELECT __key__ FROM MyKind". |
firestoreReadProjectId |
O ID do projeto da instância do Firestore a partir da qual você quer ler entidades (usando sua consulta GQL) que são usadas para correspondência. |
firestoreDeleteProjectId |
O ID do projeto da instância do Firestore a partir da qual as entidades correspondentes serão excluídas. Isso pode ser o mesmo que firestoreReadProjectId se você quiser ler e excluir na mesma instância do Firestore. |
firestoreReadNamespace |
Opcional: namespace das entidades solicitadas. Defina como "" para o namespace padrão. |
firestoreHintNumWorkers |
(Opcional) Dica para o número esperado de workers na etapa de limitação de aumento do Firestore. O padrão é 500 . |
javascriptTextTransformGcsPath |
Opcional:
O URI do Cloud Storage do arquivo .js que define a função definida pelo usuário (UDF) do JavaScript que você quer usar. Por exemplo, gs://my-bucket/my-udfs/my_file.js .
|
javascriptTextTransformFunctionName |
(Opcional)
O nome da função definida pelo usuário (UDF) do JavaScript que você quer usar.
Por exemplo, se o código de função do JavaScript for
myTransform(inJson) { /*...do stuff...*/ } , o nome da função será
myTransform . Para amostras de UDFs do JavaScript, consulte os
exemplos de UDF.
Se essa função retornar um valor indefinido ou nulo para
uma determinada entidade do Firestore, a entidade não será excluída. |
Função definida pelo usuário
Também é possível estender esse modelo escrevendo uma função definida pelo usuário (UDF). O modelo chama a UDF para cada elemento de entrada. Os payloads dos elementos são serializados como strings JSON. Para mais informações, consulte Criar funções definidas pelo usuário para modelos do Dataflow.
Especificação da função
A UDF tem a seguinte especificação:
- Entrada: uma entidade do Firestore, serializada como uma string JSON.
- Saída: se você quiser manter a entidade e não excluí-la, retorne
null
ouundefined
. Caso contrário, retorne a entidade original para exclusão.
Executar o modelo
Console
- Acesse a página Criar job usando um modelo do Dataflow. Acesse Criar job usando um modelo
- No campo Nome do job, insira um nome exclusivo.
- Opcional: em Endpoint regional, selecione um valor no menu suspenso. A região padrão é
us-central1
.Para ver uma lista de regiões em que é possível executar um job do Dataflow, consulte Locais do Dataflow.
- No menu suspenso Modelo do Dataflow, selecione the Bulk Delete Entities in Firestore template.
- Nos campos de parâmetro fornecidos, insira os valores de parâmetro.
- Cliquem em Executar job.
gcloud
No shell ou no terminal, execute o modelo:
gcloud dataflow jobs run JOB_NAME \ --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/Firestore_to_Firestore_Delete \ --region REGION_NAME \ --parameters \ firestoreReadGqlQuery="GQL_QUERY",\ firestoreReadProjectId=FIRESTORE_READ_AND_DELETE_PROJECT_ID,\ firestoreDeleteProjectId=FIRESTORE_READ_AND_DELETE_PROJECT_ID
Substitua:
JOB_NAME
: um nome de job de sua escolhaREGION_NAME
: a região onde você quer implantar o job do Dataflow, por exemplo,us-central1
VERSION
: a versão do modelo que você quer usarUse estes valores:
latest
para usar a versão mais recente do modelo, disponível na pasta mãe não datada no bucket: gs://dataflow-templates-REGION_NAME/latest/- o nome da versão, como
2023-09-12-00_RC00
, para usar uma versão específica do modelo, que pode ser encontrada aninhada na respectiva pasta mãe datada no bucket: gs://dataflow-templates-REGION_NAME/
GQL_QUERY
: a consulta que você usará para corresponder entidades para exclusãoFIRESTORE_READ_AND_DELETE_PROJECT_ID
: o ID do projeto da instância do Firestore. Este exemplo lê e exclui da mesma instância do Firestore.
API
Para executar o modelo usando a API REST, envie uma solicitação HTTP POST. Para mais informações sobre a
API e os respectivos escopos de autorização, consulte
projects.templates.launch
.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://dataflow-templates-LOCATION/VERSION/Firestore_to_Firestore_Delete { "jobName": "JOB_NAME", "parameters": { "firestoreReadGqlQuery": "GQL_QUERY", "firestoreReadProjectId": "FIRESTORE_READ_AND_DELETE_PROJECT_ID", "firestoreDeleteProjectId": "FIRESTORE_READ_AND_DELETE_PROJECT_ID" }, "environment": { "zone": "us-central1-f" } }
Substitua:
PROJECT_ID
: o ID do projeto do Google Cloud em que você quer executar o job do DataflowJOB_NAME
: um nome de job de sua escolhaLOCATION
: a região onde você quer implantar o job do Dataflow, por exemplo,us-central1
VERSION
: a versão do modelo que você quer usarUse estes valores:
latest
para usar a versão mais recente do modelo, disponível na pasta mãe não datada no bucket: gs://dataflow-templates-REGION_NAME/latest/- o nome da versão, como
2023-09-12-00_RC00
, para usar uma versão específica do modelo, que pode ser encontrada aninhada na respectiva pasta mãe datada no bucket: gs://dataflow-templates-REGION_NAME/
GQL_QUERY
: a consulta que você usará para corresponder entidades para exclusãoFIRESTORE_READ_AND_DELETE_PROJECT_ID
: o ID do projeto da instância do Firestore. Este exemplo lê e exclui da mesma instância do Firestore.
A seguir
- Saiba mais sobre os modelos do Dataflow.
- Confira a lista de modelos fornecidos pelo Google.