Como exportar e importar entidades

Nesta página, descrevemos como exportar e importar as entidades do Firestore em modo Datastore usando o serviço de exportação e importação gerenciado. O serviço de exportação e importação gerenciadas está disponível por meio do Console do Cloud, da ferramenta de linha de comando gcloud e da API Datastore Admin (REST, RPC).

Com o serviço de exportação e importação gerenciado, é possível recuperar exclusões acidentais de dados e exportá-los para o processamento off-line. Você pode exportar todas as entidades ou apenas tipos específicos delas. Da mesma maneira, você pode importar todos os dados de uma exportação ou apenas tipos específicos. Leve em consideração estes fatores à medida que usa o serviço de exportação e importação gerenciado:

  • O serviço de exportação usa leituras com consistência eventual. Não presuma que uma exportação acontece em um único momento. A exportação pode incluir entidades gravadas após a exportação e excluir entidades gravadas antes de a exportação começar.

  • Uma exportação não contém nenhum índice. Quando você importa dados, os índices necessários são recriados automaticamente usando as definições de índice atuais do banco de dados. As configurações de índice com valor da propriedade por entidade são exportadas e seguidas durante a importação.

  • As importações não atribuem novos IDs às entidades. As importações usam os IDs que existiam no momento da exportação e substituem qualquer entidade atual com o mesmo ID. Durante uma importação, os IDs são reservados enquanto as entidades estão sendo importadas. Esse recurso evita conflitos de IDs com novas entidades se as gravações estiverem ativadas enquanto uma importação é executada.

  • Quando uma entidade no banco de dados não for afetada por uma importação, ela permanecerá lá após esse processo.

  • Os dados exportados de um banco de dados do modo Datastore podem ser importados para outro banco de dados do modo Datastore, mesmo que ele esteja em outro projeto.

  • O serviço de exportação e importação gerenciado limita o número de exportações e importações simultâneas a 50 e permite um máximo de 20 solicitações de exportação e importação por minuto para um projeto. Para cada solicitação, o serviço limita o número de combinações de filtros de entidade a 100.

  • A saída de uma exportação gerenciada usa o formato de registro LevelDB.

  • Para importar apenas um subconjunto de entidades ou importar dados para o BigQuery, especifique um filtro de entidade na exportação.

Antes de começar

Antes de usar o serviço de exportação e importação gerenciado, você precisa completar as tarefas a seguir.

  1. Ative o faturamento para seu projeto do Google Cloud. Só é permitido que projetos do Google Cloud com faturamento ativado usem a funcionalidade de exportação e importação.

  2. Crie um bucket do Cloud Storage no mesmo local que seu banco de dados do Firestore em modo Datastore. Não é possível usar um bucket de pagamentos do solicitante para operações de exportação e importação.

  3. Atribua um papel de IAM à sua conta de usuário que conceda a permissão datastore.databases.export, se você estiver exportando dados, ou a permissão datastore.databases.import, se estiver importando dados. O papel Datastore Import Export Admin, por exemplo, concede as duas permissões.

  4. Se o bucket do Cloud Storage estiver em outro projeto, permita que a conta de serviços padrão do projeto acesse o bucket.

Configurar gcloud para seu projeto

Se você planeja usar gcloud para iniciar suas operações de importação e exportação, configure gcloud e conecte-se a seu projeto de uma das seguintes maneiras:

Como iniciar operações de exportação e importação gerenciadas

Nesta seção, descrevemos como iniciar uma operação de exportação ou importação gerenciada.

Como exportar todas as entidades

Console

  1. Acesse a página Importação/exportação do Datastore no Console do Google Cloud.

    Acessar a página "Importar/Exportar"

  2. Clique em Exportar.

  3. Defina o campo Namespace como All Namespaces e defina o campo Tipo como All Kinds.

  4. Abaixo de Destino, insira o nome do seu bucket do Cloud Storage.

  5. Clique em Exportar.

O console retorna à página Importar/Exportar. Um alerta informa o sucesso ou a falha de sua solicitação de exportação gerenciada.

gcloud

Use o comando gcloud datastore export para exportar todas as entidades em seu banco de dados.

 gcloud datastore export gs://bucket-name --async

em que bucket-name é o nome do bucket do Cloud Storage e um prefixo opcional, por exemplo, bucket-name/datastore-exports/export-name. Não é possível reutilizar o mesmo prefixo para outra operação de exportação. Se você não fornecer um prefixo de arquivo, o serviço de exportação gerenciada criará um com base no horário atual.

Use a sinalização --async para evitar que gcloud aguarde a conclusão da operação. Se você omitir a sinalização --async, digite Ctrl+c para não aguardar uma operação. Isso não cancelará a operação.

rest

Antes de usar algum dos dados da solicitação, faça as substituições a seguir:

  • project-id: ID do projeto
  • bucket-name: nome do bucket do Cloud Storage

Método HTTP e URL:

POST https://datastore.googleapis.com/v1/projects/project-id:export

Corpo JSON da solicitação:

{
  "outputUrlPrefix": "gs://bucket-name",
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "projects/project-id/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesMetadata",
    "common": {
      "startTime": "2019-09-18T18:42:26.591949Z",
      "operationType": "EXPORT_ENTITIES",
      "state": "PROCESSING"
    },
    "entityFilter": {},
    "outputUrlPrefix": "gs://bucket-name/2019-09-18T18:42:26_85726"
  }
}
A resposta é uma operação de longa duração, passível de ser verificada para ver se foi completa.

Como exportar tipos ou namespaces específicos

Para exportar um subconjunto específico de tipos e/ou namespaces, forneça um filtro de entidade com valores para tipos e IDs de namespace. Cada solicitação é limitada a 100 combinações de filtros de entidade, em que cada combinação de tipo e namespace filtrado conta como um filtro separado para esse limite.

Console

No console, é possível selecionar todos os tipos ou um tipo específico. Da mesma forma, é possível selecionar todos os namespaces ou um namespace específico.

Para especificar uma lista de namespaces e tipos a serem exportados, use gcloud.

  1. Vá para a página Exportação do Datastore no Console do Google Cloud.

    Acessar a página "Exportação do Datastore"

  2. Clique em Exportar.

  3. Defina o campo Namespace como All Namespaces ou o nome de um dos seus namespaces.

  4. Defina o campo Tipo como All Kinds ou como o nome de um tipo.

  5. Em Destino, insira o nome do bucket do Cloud Storage.

  6. Clique em Exportar.

O console retorna à página Importar/Exportar. Um alerta informa o sucesso ou a falha de sua solicitação de exportação gerenciada.

gcloud

gcloud datastore export --kinds="KIND1,KIND2" --namespaces="(default),NAMESPACE2" gs://bucket-name --async

em que bucket-name é o nome do bucket do Cloud Storage e um prefixo opcional, por exemplo, bucket-name/datastore-exports/export-name. Não é possível reutilizar o mesmo prefixo para outra operação de exportação. Se você não fornecer um prefixo de arquivo, o serviço de exportação gerenciada criará um com base no horário atual.

Use a sinalização --async para evitar que gcloud aguarde a conclusão da operação. Se você omitir a sinalização --async, digite Ctrl+c para não aguardar uma operação. Isso não cancelará a operação.

rest

Antes de usar algum dos dados da solicitação, faça as substituições a seguir:

  • project-id: ID do projeto
  • bucket-name: nome do bucket do Cloud Storage
  • kind: o tipo de entidade
  • namespace: o ID do namespace (use "" para o ID de namespace padrão)

Método HTTP e URL:

POST https://datastore.googleapis.com/v1/projects/project-id:export

Corpo JSON da solicitação:

{
  "outputUrlPrefix": "gs://bucket-name",
  "entityFilter": {
    "kinds": ["kind"],
    "namespaceIds": ["namespace"],
  },
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "projects/project-id/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesMetadata",
    "common": {
      "startTime": "2019-09-18T21:17:36.232704Z",
      "operationType": "EXPORT_ENTITIES",
      "state": "PROCESSING"
    },
    "entityFilter": {
      "kinds": [
        "Task"
      ],
      "namespaceIds": [
        ""
      ]
    },
    "outputUrlPrefix": "gs://bucket-name/2019-09-18T21:17:36_82974"
  }
}
A resposta é uma operação de longa duração, passível de ser verificada para ver se foi completa.

Arquivos de metadados

Uma operação de exportação cria um arquivo de metadados para cada par namespace-tipo especificado. Os arquivos de metadados geralmente são denominados NAMESPACE_NAME_KIND_NAME.export_metadata. No entanto, se um namespace ou tipo criar um nome de objeto do Cloud Storage inválido, o arquivo será nomeado como export[NUM].export_metadata.

Os arquivos de metadados são buffers de protocolo e podem ser decodificados com o compilador de protocolo protoc. Por exemplo, é possível decodificar um arquivo de metadados para determinar o namespace e os tipos que os arquivos de exportação contêm:

protoc --decode_raw < export0.export_metadata

Como importar todas as entidades

Console

  1. Vá para a página Importação do Datastore no Console do Google Cloud.

    Acessar a página "Importação do Datastore"

  2. Clique em Importar.

  3. No campo File, clique em Procurar e selecione um arquivo overall_export_metadata.

  4. Defina o campo Namespace como All Namespaces e defina o campo Tipo como All Kinds.

  5. Clique em Importar.

O console retorna à página Importar/Exportar. Um alerta informa o sucesso ou a falha de sua solicitação de importação gerenciada.

gcloud

Use o comando gcloud datastore import para importar todas as entidades que foram exportadas anteriormente com o serviço de exportação gerenciada.

gcloud datastore import gs://bucket-name/file-path/file-name.overall_export_metadata --async

em que bucket-name/file-path/file-name é o caminho para o arquivo overall_export_metadata no bucket do Cloud Storage.

Use a sinalização --async para evitar que gcloud aguarde a conclusão da operação. Se você omitir a sinalização --async, digite Ctrl+c para não aguardar uma operação. Isso não cancelará a operação.

rest

Antes de usar algum dos dados da solicitação, faça as substituições a seguir:

  • project-id: ID do projeto
  • bucket-name: nome do bucket do Cloud Storage
  • object-name: nome do objeto do Cloud Storage (exemplo: 2017-05-25T23:54:39_76544/2017-05-25T23:54:39_76544.overall_export_metadata

Método HTTP e URL:

POST https://datastore.googleapis.com/v1/projects/project-id:import

Corpo JSON da solicitação:

{
  "inputUrl": "gs://bucket-name/object-name",
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "projects/project-id/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.datastore.admin.v1.ImportEntitiesMetadata",
    "common": {
      "startTime": "2019-09-18T21:25:02.863621Z",
      "operationType": "IMPORT_ENTITIES",
      "state": "PROCESSING"
    },
    "entityFilter": {},
    "inputUrl": "gs://bucket-name/2019-09-18T18:42:26_85726/2019-09-18T18:42:26_85726.overall_export_metadata"
  }
}
A resposta é uma operação de longa duração, passível de ser verificada para ver se foi completa.

Como localizar seu arquivo overall_export_metadata

É possível determinar o valor a ser usado para o local de importação usando o navegador do Cloud Storage no Console do Google Cloud:

Abrir o navegador do Cloud Storage

Também é possível listar e descrever as operações concluídas. O campo outputURL mostra o nome do arquivo overall_export_metadata:

"outputUrl": "gs://bucket-name/2017-05-25T23:54:39_76544/2017-05-25T23:54:39_76544.overall_export_metadata",

Como importar tipos ou namespaces específicos

Para importar um subconjunto específico de tipos e/ou namespaces, forneça um filtro de entidade com valores para tipos e IDs de namespace.

Você só poderá especificar tipos e namespaces se os arquivos de exportação tiverem sido criados com o uso de um filtro de entidade. Não é possível importar um subconjunto de tipos e namespaces de uma exportação de todas as entidades.

Console

No console, é possível selecionar todos os tipos ou um tipo específico. Da mesma forma, é possível selecionar todos os namespaces ou um namespace específico.

Para especificar uma lista de namespaces e tipos a serem importados, use gcloud.

  1. Vá para a página Importação do Datastore no Console do Google Cloud.

    Acessar a página "Importação do Datastore"

  2. Clique em Importar.

  3. No campo File, clique em Procurar e selecione um arquivo overall_export_metadata.

  4. Defina o campo Namespace como All Namespaces ou como um namespace específico.

  5. Defina o campo Tipo como All Kinds ou como um tipo específico.

  6. Clique em Importar.

O console retorna à página Importar/Exportar. Um alerta informa o sucesso ou a falha de sua solicitação de importação gerenciada.

gcloud

gcloud datastore import --kinds="KIND1,KIND2" --namespaces="(default),NAMESPACE2" gs://bucket-name/file-path/file-name.overall_export_metadata --async

em que bucket-name/file-path/file-name é o caminho para o arquivo overall_export_metadata no bucket do Cloud Storage.

Use a sinalização --async para evitar que gcloud aguarde a conclusão da operação. Se você omitir a sinalização --async, digite Ctrl+c para não aguardar uma operação. Isso não cancelará a operação.

rest

Antes de usar algum dos dados da solicitação, faça as substituições a seguir:

  • project-id: ID do projeto
  • bucket-name: nome do bucket do Cloud Storage
  • object-name: nome do objeto do Cloud Storage (exemplo: 2017-05-25T23:54:39_76544/2017-05-25T23:54:39_76544.overall_export_metadata
  • kind: o tipo de entidade
  • namespace: o ID do namespace (use "" para o ID de namespace padrão)

Método HTTP e URL:

POST https://datastore.googleapis.com/v1/projects/project-id:import

Corpo JSON da solicitação:

{
  "inputUrl": "gs://bucket-name/object-name",
  "entityFilter": {
    "kinds": ["kind"],
    "namespaceIds": ["namespace"],
  },
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "projects/project-id/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.datastore.admin.v1.ImportEntitiesMetadata",
    "common": {
      "startTime": "2019-09-18T21:51:02.830608Z",
      "operationType": "IMPORT_ENTITIES",
      "state": "PROCESSING"
    },
    "entityFilter": {
      "kinds": [
        "Task"
      ],
      "namespaceIds": [
        ""
      ]
    },
    "inputUrl": "gs://bucket-name/2019-09-18T21:49:25_96833/2019-09-18T21:49:25_96833.overall_export_metadata"
  }
}
A resposta é uma operação de longa duração, passível de ser verificada para ver se foi completa.

Importar transformações

Ao importar entidades de outro projeto, lembre-se de que as chaves de entidade incluem o ID do projeto. Uma operação de importação atualiza chaves de entidade e propriedades de referência de chave nos dados de importação com o código do projeto de destino. Se essa atualização aumentar seus tamanhos de entidade, é possível que se causem erros de "entidade muito grande" ou "entradas de índice muito grandes" para operações de importação.

Para evitar erros, importe para um projeto de destino com um ID de projeto mais curto. Isso não afeta operações de importação com dados do mesmo projeto.

Como gerenciar operações de longa duração

As operações de importação e exportação gerenciadas são operações de longa duração. Essas chamadas de método podem levar um tempo significativo para serem concluídas.

Depois de iniciar uma operação de exportação ou importação, o modo Datastore atribui à operação um nome exclusivo. Use esse nome para excluir, cancelar ou verificar a operação.

Os nomes das operações são prefixados com projects/[PROJECT_ID]/databases/(default)/operations/, por exemplo:

projects/project-id/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

Você pode omitir o prefixo ao especificar um nome de operação para os comandos gcloud.

Como listar todas as operações de longa duração

É possível visualizar as operações contínuas e as concluídas recentemente das seguintes maneiras. As operações são listadas por alguns dias após a conclusão:

Console

É possível visualizar uma lista das operações de exportação e importação mais recentes na página Importação/exportação do modo Datastore do Console do Google Cloud.

Acessar a página "Importar/Exportar"

gcloud

Para listar operações de longa duração, use o comando gcloud datastore operations list.

gcloud datastore operations list

Por exemplo, uma operação de exportação concluída recentemente mostra as seguintes informações:

{
  "operations": [
    {
      "name": "projects/project-id/operations/ASAyMDAwOTEzBxp0bHVhZmVkBxJsYXJ0bmVjc3Utc2Jvai1uaW1kYRQKKhI",
      "metadata": {
        "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesMetadata",
        "common": {
          "startTime": "2017-12-05T23:01:39.583780Z",
          "endTime": "2017-12-05T23:54:58.474750Z",
          "operationType": "EXPORT_ENTITIES"
        },
        "progressEntities": {
          "workCompleted": "21933027",
          "workEstimated": "21898182"
        },
        "progressBytes": {
          "workCompleted": "12421451292",
          "workEstimated": "9759724245"
        },
        "entityFilter": {
          "namespaceIds": [
            ""
          ]
        },
        "outputUrlPrefix": "gs://bucket-name"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesResponse",
        "outputUrl": "gs://bucket-name/2017-05-25T23:54:39_76544/2017-05-25T23:54:39_76544.overall_export_metadata"
      }
    }
  ]
}

rest

Antes de usar algum dos dados da solicitação, faça as substituições a seguir:

  • project-id: ID do projeto

Método HTTP e URL:

GET https://datastore.googleapis.com/v1/projects/project-id/operations

Para enviar a solicitação, expanda uma destas opções:

Veja informações sobre a resposta abaixo.

Por exemplo, uma operação de exportação concluída recentemente mostra as seguintes informações:

{
  "operations": [
    {
      "name": "projects/project-id/operations/ASAyMDAwOTEzBxp0bHVhZmVkBxJsYXJ0bmVjc3Utc2Jvai1uaW1kYRQKKhI",
      "metadata": {
        "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesMetadata",
        "common": {
          "startTime": "2017-12-05T23:01:39.583780Z",
          "endTime": "2017-12-05T23:54:58.474750Z",
          "operationType": "EXPORT_ENTITIES"
        },
        "progressEntities": {
          "workCompleted": "21933027",
          "workEstimated": "21898182"
        },
        "progressBytes": {
          "workCompleted": "12421451292",
          "workEstimated": "9759724245"
        },
        "entityFilter": {
          "namespaceIds": [
            ""
          ]
        },
        "outputUrlPrefix": "gs://bucket-name"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesResponse",
        "outputUrl": "gs://bucket-name/2017-05-25T23:54:39_76544/2017-05-25T23:54:39_76544.overall_export_metadata"
      }
    }
  ]
}

Verificar o status da operação

Para visualizar o status de uma operação de longa duração:

Console

É possível visualizar uma lista das operações de exportação e importação mais recentes na página Importação/exportação do modo Datastore do Console do Google Cloud.

Acessar a página "Importar/Exportar"

gcloud

Use o comando operations describe para mostrar o status de uma operação de longa duração.

gcloud datastore operations describe operation-name

rest

Antes de usar algum dos dados da solicitação, faça as substituições a seguir:

  • project-id: ID do projeto
  • operation-name: o nome da operação

Método HTTP e URL:

GET https://datastore.googleapis.com/v1/projects/project-id/operations/operation-name

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "projects/project-id/operations/ASA3ODAwMzQxNjIyChp0bHVhZmVkBxJsYXJ0bmVjc3Utc2Jvai1uaW1kYRQKLRI",
  "metadata": {
    "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesMetadata",
    "common": {
      "startTime": "2019-10-08T20:07:28.105236Z",
      "endTime": "2019-10-08T20:07:36.310653Z",
      "operationType": "EXPORT_ENTITIES",
      "state": "SUCCESSFUL"
    },
    "progressEntities": {
      "workCompleted": "21",
      "workEstimated": "21"
    },
    "progressBytes": {
      "workCompleted": "2272",
      "workEstimated": "2065"
    },
    "entityFilter": {},
    "outputUrlPrefix": "gs://bucket-name/2019-10-08T20:07:28_28481"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesResponse",
    "outputUrl": "gs://bucket-name/2019-10-08T20:07:28_28481/2019-10-08T20:07:28_28481.overall_export_metadata"
  }
}

Como estimar o tempo de conclusão

Conforme sua operação é executada, consulte o valor do campo state para o status geral da operação.

Uma solicitação para o status de uma operação de longa duração retorna as métricas workEstimated e workCompleted. Cada uma dessas métricas é retornada no número de bytes e no número de entidades:

  • workEstimated mostra o número total estimado de bytes e documentos que uma operação processará.

  • workCompleted mostra o número de bytes e documentos processados até o momento. Após a conclusão da operação, o valor mostrará o número total de bytes e documentos que foram realmente processados, o que pode ser maior do que o valor de workEstimated.

Divida workCompleted por workEstimated para ter uma estimativa aproximada do andamento. A estimativa pode ser imprecisa, porque ela depende da coleção de estatísticas em atraso.

Por exemplo, veja o status do andamento de uma operação de exportação:

{
  "operations": [
    {
      "name": "projects/project-id/operations/ASAyMDAwOTEzBxp0bHVhZmVkBxJsYXJ0bmVjc3Utc2Jvai1uaW1kYRQKKhI",
      "metadata": {
        "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesMetadata",
        ...
        "progressEntities": {
          "workCompleted": "1",
          "workEstimated": "3"
        },
        "progressBytes": {
          "workCompleted": "85",
          "workEstimated": "257"
        },
        ...

Quando uma operação for concluída, a descrição dela conterá "done": true. Veja o valor do campo state para o resultado da operação. Se o campo done não for definido na resposta, seu valor será false. Não dependa da existência do valor done para operações em andamento.

Cancelar uma operação

Console

É possível cancelar uma operação de exportação ou importação em execução na página Importação/Exportação no modo Datastore do Console do Google Cloud.

Acessar a página "Importar/Exportar"

Na tabela Importações e exportações recentes, as operações em execução incluem o botão Cancelar na coluna Concluído. Clique no botão Cancelar para interromper a operação. O botão muda para uma mensagem Cancelando e para Cancelado quando a operação é completamente interrompida.

gcloud

Use o comando operations cancel para interromper uma operação em andamento:

gcloud datastore operations cancel operation-name

Se você cancelar uma operação em execução, ela não será desfeita. Uma operação de exportação cancelada deixa documentos já exportados no Cloud Storage, e uma operação de importação cancelada deixa implantadas atualizações já feitas em seu banco de dados. Não é possível importar uma exportação parcialmente concluída.

Excluir uma operação

gcloud

Use o comando operations delete para remover uma operação da lista de operações recentes. Ele não excluirá arquivos de exportação do Cloud Storage.

gcloud datastore operations delete operation-name

Faturamento e preços para exportações e importações gerenciadas

É necessário ativar o faturamento para o projeto do Google Cloud antes de você usar o serviço de exportação e importação gerenciadas. As operações de exportação e importação influenciam seus custos do Google Cloud das seguintes maneiras:

Os custos das operações de exportação e importação não contam para o limite de gastos do App Engine. As operações de exportação ou importação só acionarão alertas de orçamento do Google Cloud após a conclusão. Da mesma forma, as leituras e gravações executadas durante uma operação de exportação ou importação são aplicadas na sua cota diária apenas após a conclusão.

Como visualizar os custos de exportação e importação

As operações de exportação e importação aplicam o rótulo goog-firestoremanaged:exportimport às operações faturadas. Na página de relatórios do Cloud Billing, é possível usar esse rótulo para visualizar os custos relacionados às operações de importação e exportação:

Acesse o rótulo goog-firestoremanaged no menu de filtros.

Permissões

Para executar operações de exportação e importação, sua conta de usuário e a conta de serviço padrão do seu projeto exigem as permissões do gerenciamento de identidade e acessodescritas abaixo.

Permissões da conta de usuário

A conta de usuário ou a conta de serviço que iniciou a operação requer as permissões datastore.databases.export e datastore.databases.import do IAM. Se você é o proprietário do projeto, isso significa que sua conta tem as permissões necessárias. Caso contrário, os seguintes papéis do IAM concedem as permissões necessárias:

  • Proprietário do Datastore
  • Administrador de importação e exportação do Datastore

Também é possível atribuir essas permissões com um papel personalizado.

Um proprietário de projeto pode conceder essas funções seguindo as instruções disponíveis na página Como conceder acesso.

Permissões da conta de serviço padrão

Cada projeto do Google Cloud cria automaticamente uma conta de serviço padrão chamada PROJECT_ID@appspot.gserviceaccount.com. As operações de exportação e importação usam essa conta de serviço para autorizar operações do Cloud Storage.

A conta de serviço padrão do seu projeto requer acesso ao bucket do Cloud Storage usado em uma operação de exportação ou importação. Se o bucket do Cloud Storage estiver no mesmo projeto que o banco de dados do modo Datastore, a conta de serviço padrão terá acesso ao bucket por padrão.

Se o bucket do Cloud Storage estiver em outro projeto, será necessário permitir que a conta de serviço padrão acesse o bucket.

Como atribuir papéis à conta de serviço padrão

Use a ferramenta de linha de comando gsutil para atribuir um dos papéis abaixo. Por exemplo, para atribuir a função de administrador do Storage à conta de serviço padrão, execute:

gsutil iam ch serviceAccount:[PROJECT_ID]@appspot.gserviceaccount.com:roles/storage.admin \
    gs://[BUCKET_NAME]

Como alternativa, é possível atribuir este papel usando o Console do Cloud.

Operações de exportação

Para operações de exportação que envolvem um bucket em outro projeto, modifique as permissões do bucket para atribuir um dos seguintes papéis do Cloud Storage à conta de serviço padrão do projeto que contém o banco de dados do modo Datastore:

  • Administrador do Storage
  • Administrador de objetos do Storage
  • Gravador de bucket legado do Storage

Também é possível criar um papel personalizado do IAM com permissões um pouco diferentes daquelas contidas nos papéis listados acima:

  • storage.buckets.get
  • storage.objects.create
  • storage.objects.list

Operações de importação

Para operações de importação que envolvem um bucket em outro projeto, modifique as permissões do bucket para atribuir um dos seguintes papéis do Cloud Storage à conta de serviço padrão do projeto que contém o banco de dados do modo Datastore:

  • Administrador do Storage
  • Leitor de objetos Storage e leitor de bucket legado do Storage

Também é possível criar um papel personalizado do IAM com as seguintes permissões:

  • storage.buckets.get
  • storage.objects.get

Conta de serviço padrão desativada ou excluída

Ao desativar ou excluir sua conta de serviço padrão do App Engine, seu aplicativo do App Engine perderá o acesso ao banco de dados do modo Datastore. Se você desativou sua conta de serviço do App Engine, poderá reativá-la. Consulte este link para ver como fazer isso. Se você excluiu sua conta de serviço do App Engine nos últimos 30 dias, poderá restaurá-la. Consulte Como cancelar a exclusão de uma conta de serviço.

Diferenças entre os backups do Datastore Admin

Se você já usou o Datastore Admin Console para backups, observe as seguintes diferenças:

  • As exportações criadas por uma exportação gerenciada não aparecem no Datastore Admin Console. As exportações e importações gerenciadas são um novo serviço que não compartilha dados com a funcionalidade de backup e restauração do App Engine, que é administrada por meio do Console do Cloud.

  • O serviço de exportação e importação gerenciadas não aceita os mesmos metadados que o backup de administração do Datastore e não armazena o status de andamento no banco de dados. Para informações sobre como verificar o andamento das operações de exportação e importação, consulte Como gerenciar operações de longa duração

  • Não é possível visualizar os registros de serviço de operações de exportação e importação gerenciadas.

  • O serviço de importação gerenciada é compatível com versões anteriores dos arquivos de backup do Datastore Admin. É possível importar um arquivo de backup Datastore Admin usando o serviço de importação gerenciada, mas não é possível importar a saída de uma exportação gerenciada usando o Datastore Admin Console.

Como importar para o BigQuery

Para importar dados de uma exportação gerenciada para o BigQuery, consulte Como carregar dados do serviço de exportação do Datastore.

Não é possível carregar no BigQuery os dados exportados sem a especificação de um filtro de entidade. Para importar dados para o BigQuery, a solicitação de exportação precisa incluir um ou mais nomes de tipo no filtro de entidade.

Limite de colunas do BigQuery

O BigQuery impõe um limite de 10 mil colunas por tabela. As operações de exportação geram um esquema de tabela do BigQuery para cada tipo. Nesse esquema, cada propriedade exclusiva dentro das entidades de um tipo se torna uma coluna de esquema.

Se um esquema de BigQuery de um tipo ultrapassar 10 mil colunas, a operação de exportação tentará permanecer abaixo do limite de coluna tratando entidades incorporadas como blobs. Se essa conversão elevar o número de colunas no esquema para 10 mil, será possível carregar os dados no BigQuery, mas não será possível consultar as propriedades em entidades incorporadas. Se o número de colunas ainda exceder 10 mil, a operação de exportação não gerará um esquema do BigQuery para o tipo e não será possível carregar seus dados no BigQuery.