O modelo de eliminação em massa do Firestore é um pipeline que lê entidades do Firestore com uma determinada consulta GQL e, em seguida, elimina todas as entidades correspondentes no projeto de destino selecionado. O pipeline pode, opcionalmente, transmitir as entidades do Firestore codificadas em JSON para a UDF de JavaScript, que pode usar para filtrar entidades devolvendo valores nulos.
Requisitos do pipeline
- O Firestore tem de ser configurado no projeto antes de executar o modelo.
- Se estiver a ler e a eliminar a partir de instâncias separadas do Firestore, a conta de serviço do trabalhador do Dataflow tem de ter autorização para ler a partir de uma instância e eliminar a partir da outra.
- As escritas na base de dados têm de estar ativadas na instância do Firestore.
Parâmetros de modelos
Parâmetro | Descrição |
---|---|
firestoreReadGqlQuery |
Consulta GQL que especifica as entidades a corresponder para eliminação. A utilização de uma consulta apenas com chaves pode melhorar o desempenho. Por exemplo: "SELECT __key__ FROM MyKind". |
firestoreReadProjectId |
ID do projeto da instância do Firestore a partir da qual quer ler entidades (através da sua consulta GQL) que são usadas para a correspondência. |
firestoreDeleteProjectId |
ID do projeto da instância do Firestore a partir da qual eliminar as entidades correspondentes. Pode ser igual a firestoreReadProjectId se quiser ler e eliminar na mesma instância do Firestore. |
firestoreReadNamespace |
(Opcional) Espaço de nomes das entidades pedidas. Defina como "" para o espaço de nomes predefinido. |
firestoreHintNumWorkers |
(Opcional) Sugestão para o número esperado de trabalhadores no passo de limitação do aumento gradual do Firestore. A predefinição é 500 . |
javascriptTextTransformGcsPath |
(Opcional)
O URI do Cloud Storage do ficheiro .js que define a função definida pelo utilizador (FDU) JavaScript que quer usar. Por exemplo, gs://my-bucket/my-udfs/my_file.js .
|
javascriptTextTransformFunctionName |
(Opcional)
O nome da função definida pelo utilizador (FDU) do JavaScript que quer usar.
Por exemplo, se o código da função JavaScript for
myTransform(inJson) { /*...do stuff...*/ } , o nome da função é
myTransform . Para ver exemplos de UDFs JavaScript, consulte os exemplos de UDFs.
Se esta função devolver um valor indefinido ou nulo para
uma determinada entidade do Firestore, essa entidade não é eliminada. |
Função definida pelo utilizador
Opcionalmente, pode estender este modelo escrevendo uma função definida pelo utilizador (FDU). O modelo chama a FDU para cada elemento de entrada. Os payloads dos elementos são serializados como strings JSON. Para mais informações, consulte o artigo Crie funções definidas pelo utilizador para modelos do Dataflow.
Especificação da função
A FDU tem a seguinte especificação:
- Entrada: uma entidade do Firestore, serializada como uma string JSON.
- Output: se quiser manter a entidade e não a eliminar,
devolva
null
ouundefined
. Caso contrário, devolva a entidade original para eliminação.
Execute o modelo
Consola
- Aceda à página do fluxo de dados Criar tarefa a partir de um modelo. Aceda a Criar tarefa a partir de modelo
- No campo Nome da tarefa, introduza um nome exclusivo para a tarefa.
- Opcional: para Ponto final regional, selecione um valor no menu pendente. A região
predefinida é
us-central1
.Para ver uma lista das regiões onde pode executar uma tarefa do Dataflow, consulte as localizações do Dataflow.
- No menu pendente Modelo do fluxo de dados, selecione the Bulk Delete Entities in Firestore template.
- Nos campos de parâmetros fornecidos, introduza os valores dos parâmetros.
- Clique em Executar tarefa.
gcloud
Na 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 o seguinte:
JOB_NAME
: um nome de tarefa exclusivo à sua escolhaREGION_NAME
: a região onde quer implementar a tarefa do Dataflow, por exemplo,us-central1
VERSION
: a versão do modelo que quer usarPode usar os seguintes valores:
latest
para usar a versão mais recente do modelo, que está disponível na pasta principal sem data no contentor: 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 pasta principal com a data correspondente no contentor: gs://dataflow-templates-REGION_NAME/
GQL_QUERY
: a consulta que vai usar para fazer corresponder entidades para eliminaçãoFIRESTORE_READ_AND_DELETE_PROJECT_ID
: o ID do projeto da instância do Firestore. Este exemplo lê e elimina a partir da mesma instância do Firestore.
API
Para executar o modelo através da API REST, envie um pedido HTTP POST. Para mais informações sobre a API e os respetivos âmbitos 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 o seguinte:
PROJECT_ID
: o ID do projeto onde quer executar a tarefa do Dataflow Google CloudJOB_NAME
: um nome de tarefa exclusivo à sua escolhaLOCATION
: a região onde quer implementar a tarefa do Dataflow, por exemplo,us-central1
VERSION
: a versão do modelo que quer usarPode usar os seguintes valores:
latest
para usar a versão mais recente do modelo, que está disponível na pasta principal sem data no contentor: 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 pasta principal com a data correspondente no contentor: gs://dataflow-templates-REGION_NAME/
GQL_QUERY
: a consulta que vai usar para fazer corresponder entidades para eliminaçãoFIRESTORE_READ_AND_DELETE_PROJECT_ID
: o ID do projeto da instância do Firestore. Este exemplo lê e elimina a partir da mesma instância do Firestore.
O que se segue?
- Saiba mais sobre os modelos do Dataflow.
- Consulte a lista de modelos fornecidos pela Google.