Modelo de eliminação em massa da base de dados [descontinuado]

Este modelo foi descontinuado e vai ser removido no 3.º trimestre de 2023. Migre para o modelo eliminação em massa do Firestore .

O modelo de eliminação em massa do Datastore é um pipeline que lê entidades do Datastore 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 Datastore codificadas em JSON para a UDF Javascript, que pode usar para filtrar entidades devolvendo valores nulos.

Requisitos do pipeline

  • O Datastore 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 Datastore, a conta de serviço do Worker 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 Datastore.

Parâmetros de modelos

Parâmetro Descrição
datastoreReadGqlQuery 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".
datastoreReadProjectId ID do projeto da instância do Datastore a partir da qual quer ler entidades (através da sua consulta GQL) que são usadas para a correspondência.
datastoreDeleteProjectId ID do projeto da instância do Datastore a partir da qual eliminar as entidades correspondentes. Pode ser igual a datastoreReadProjectId se quiser ler e eliminar na mesma instância do Datastore.
datastoreReadNamespace (Opcional) Espaço de nomes das entidades pedidas. Defina como "" para o espaço de nomes predefinido.
datastoreHintNumWorkers (Opcional) Sugestão para o número esperado de trabalhadores no passo de limitação do aumento gradual do Datastore. 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 Datastore, essa entidade não é eliminada.

Execute o modelo

Consola

  1. Aceda à página do fluxo de dados Criar tarefa a partir de um modelo.
  2. Aceda a Criar tarefa a partir de modelo
  3. No campo Nome da tarefa, introduza um nome exclusivo para a tarefa.
  4. 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.

  5. No menu pendente Modelo do fluxo de dados, selecione the Bulk Delete Entities in Datastore template.
  6. Nos campos de parâmetros fornecidos, introduza os valores dos parâmetros.
  7. 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/Datastore_to_Datastore_Delete \
    --region REGION_NAME \
    --parameters \
datastoreReadGqlQuery="GQL_QUERY",\
datastoreReadProjectId=DATASTORE_READ_AND_DELETE_PROJECT_ID,\
datastoreDeleteProjectId=DATASTORE_READ_AND_DELETE_PROJECT_ID

Substitua o seguinte:

  • JOB_NAME: um nome de tarefa exclusivo à sua escolha
  • REGION_NAME: a região onde quer implementar a tarefa do Dataflow, por exemplo, us-central1
  • VERSION: a versão do modelo que quer usar

    Pode usar os seguintes valores:

  • GQL_QUERY: a consulta que vai usar para fazer corresponder entidades para eliminação
  • DATASTORE_READ_AND_DELETE_PROJECT_ID: o ID do projeto da instância do Datastore. Este exemplo lê e elimina a partir da mesma instância do Datastore.

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/Datastore_to_Datastore_Delete
{
   "jobName": "JOB_NAME",
   "parameters": {
       "datastoreReadGqlQuery": "GQL_QUERY",
       "datastoreReadProjectId": "DATASTORE_READ_AND_DELETE_PROJECT_ID",
       "datastoreDeleteProjectId": "DATASTORE_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 Cloud
  • JOB_NAME: um nome de tarefa exclusivo à sua escolha
  • LOCATION: a região onde quer implementar a tarefa do Dataflow, por exemplo, us-central1
  • VERSION: a versão do modelo que quer usar

    Pode usar os seguintes valores:

  • GQL_QUERY: a consulta que vai usar para fazer corresponder entidades para eliminação
  • DATASTORE_READ_AND_DELETE_PROJECT_ID: o ID do projeto da instância do Datastore. Este exemplo lê e elimina a partir da mesma instância do Datastore.

O que se segue?