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 gerenciadas. 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 gerenciadas, é possível se recuperar de exclusões acidentais de dados e exportá-los para o processamento off-line. É possível exportar todas as entidades ou apenas tipos específicos delas. Da mesma maneira, é possível importar todos os dados de uma exportação ou apenas tipos específicos. Ao usar o serviço de exportação e importação gerenciadas, considere estes fatores:

  • O serviço de exportação usa leituras com consistência posterior. Não presuma que uma exportação acontece em um único momento. A exportação pode incluir entidades gravadas depois que é iniciada e excluí-las antes de ser iniciada.

  • 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 respeitadas 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 evitará conflitos de IDs com novas entidades se as gravações estiverem ativadas enquanto uma importação é executada.

  • Se uma entidade no banco de dados não for afetada por uma importação, ela permanecerá no banco de dados 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 gerenciadas limita a 50 o número de exportações e importações simultâneas e permite um máximo de 20 solicitações de exportação e importação por minuto para um projeto.

  • 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 importação e exportação gerenciadas, é necessário concluir as tarefas a seguir:

  1. Ative o faturamento para seu projeto do Google Cloud. Somente projetos do Google Cloud com faturamento ativado podem usar 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 Requester Pays 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 à 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 Exportação de entidades do Datastore no Console do Google Cloud.

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

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

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

  4. Clique em Exportar.

O console abre a página Entidades e informa o sucesso ou a falha de sua solicitação de exportação gerenciada.

O console também mostra um botão Exibir status. Clique nesse botão para abrir um terminal do Cloud Shell que já foi preenchido com o comando gcloud necessário para ver o status da operação.

Execute este comando sempre que quiser visualizar o status da operação.

gcloud

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

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

bucket-name é o nome do bucket do Cloud Storage e um prefixo opcional, por exemplo, bucket-name/firestore-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 os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o 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, que pode ser verificada se foi concluída.

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.

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. Defina o campo Namespace como All Namespaces ou o nome de um dos seus namespaces.

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

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

  5. Clique em Exportar.

O console abre a página Entidades e informa o sucesso ou a falha de sua solicitação de exportação gerenciada.

O console também mostra um botão Exibir status. Clique nesse botão para abrir um terminal do Cloud Shell que já foi preenchido com o comando gcloud necessário para ver o status da operação.

Execute este comando sempre que quiser visualizar o status da operação.

gcloud

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

bucket-name é o nome do bucket do Cloud Storage e um prefixo opcional, por exemplo, bucket-name/firestore-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 os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o 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, que pode ser verificada se foi concluída.

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. No campo File, clique em Procurar e selecione um arquivo overall_export_metadata.

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

  4. Clique em Importar.

O console abre a página Entidades e informa o sucesso ou a falha de sua solicitação de importação gerenciada.

O console também mostra um botão Exibir status. Clique nesse botão para abrir um terminal do Cloud Shell que já foi preenchido com o comando gcloud necessário para ver o status da operação.

Execute este comando sempre que quiser visualizar o status da operação.

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

bucket-name/file-path/file-name é o caminho para seu 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 os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o 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, que pode ser verificada se foi concluída.

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. No campo File, clique em Procurar e selecione um arquivo overall_export_metadata.

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

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

  5. Clique em Importar.

O console abre a página Entidades e informa o sucesso ou a falha de sua solicitação de importação gerenciada.

O console também mostra um botão Exibir status. Clique nesse botão para abrir um terminal do Cloud Shell que já foi preenchido com o comando gcloud necessário para ver o status da operação.

Execute este comando sempre que quiser visualizar o status da operação.

gcloud

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

bucket-name/file-path/file-name é o caminho para seu 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 os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o 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, que pode ser verificada se foi concluída.

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
    

No entanto, é possível omitir o prefixo ao especificar um nome de operação para os comandos describe, cancel e delete.

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

Para listar operações de longa duração, use o comando gcloud datastore operations list. Esse comando lista as operações contínuas e as concluídas recentemente. As operações são listadas por alguns dias após a conclusão:

gcloud

    gcloud datastore operations list
    

rest

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

  • project-id: o 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"
          }
        }
      ]
    }
    

Descrever uma única operação

Em vez de listar todas as operações de longa duração, é possível listar os detalhes de uma única operação:

gcloud

Use o comando operations describe para mostrar o status de uma operação de exportação ou importação.

    gcloud datastore operations describe operation-name

rest

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

  • project-id: o 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 também 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 entidades que uma operação processará, com base em estatísticas do banco de dados. workCompleted mostra o número de bytes e entidades processados até o momento. Após a conclusão da operação, workCompleted reflete o número total de bytes e entidades 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 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 da operação 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

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

Use o comando operations delete para remover uma operação da saída de operations list. Esse comando 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 são contabilizados no 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.

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 Cloud Identity and Access Management descritas 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 Cloud 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 Cloud IAM concedem as permissões necessárias:

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

Um proprietário de projeto pode conceder um desses papéis seguindo as etapas em 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 o papel 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 Cloud IAM com as seguintes permissões:

  • 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 Cloud IAM com as seguintes permissões:

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

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 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.000 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.000 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.000, 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.000, 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.