首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >:在数据仓库之间迁移数据

:在数据仓库之间迁移数据
EN

Stack Overflow用户
提问于 2018-09-18 13:06:42
回答 1查看 168关注 0票数 2

我们目前计划合并两个App项目,并希望将所有数据从欧盟数据存储转移到美国数据存储。

数据将使用谷歌的导出/导入工具(https://cloud.google.com/datastore/docs/export-import-entities)移动。但是,我们不确定现有的数据存储如何处理具有自动生成ID的插入实体。我们能否确保以后存储的任何实体都使用现有的ID,从而覆盖现有的实体?(数据存储接收器中尚未存在所有复制的实体)

文件中说:

“导入不向实体分配新ID。导入使用导出时存在的ID,并覆盖任何具有相同ID的现有实体。在导入期间,在导入实体时保留ID。如果在运行导入时启用了写入,则此功能可防止与新实体的ID冲突。”

“在导入实体时保留ID”是否意味着它们也会被阻塞,以便将来分配新的自动生成的ID?

示例

在Datastore1 (原产地,EU)中,我有一个具有自动生成的长Ids的实体。假设我保存了10,000个这样的实体,然后删除了其中的1,000个实体。我所确定的是,如果我在datastore1中保存一个新实体(即到目前为止还没有设置Id ),那么它将得到以前从未使用过的Id。因此,Id将不同于现有的9,000个实体,也不同于被删除的1,000个实体。

现在,我将所有实体导出到Cloudstorage (gcloud数据存储导出),然后将它们从Cloudstorage导入到另一个数据存储Datastore2 (gcloud数据存储导入)。当然,这将在Datastore2中创建9,000个给定类型的实体(这类实体以前在Datastore2中不存在)。

我现在的问题是:当我在Datastore2中存储1个(或多个)新实体/ies时,它总是会得到一个新的Id,还是会发生冲突?

有两种方式的身份碰撞。

类型A:一个新实体覆盖现有的9,000个复制实体中的一个。类型B:新实体获得的Id等于Datastore1中被删除的1,000个实体中的一个(显然,在Datastore2中,从来没有一个实体具有这些id,但我想知道导出/导入是否也阻止了这些id)

有人知道A型或B型是否会在某一时刻发生吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-19 19:56:21

执行从数据库1到数据库2的导入时,在实体被放入新数据库之前保留所有is (有关保留is的更多信息,请参见REST文件 )。

这意味着数据库2不会分配从数据库1导入的ID (类型A不会发生)。

但是,导入将而不是保留它不知道的实体的ie(即已删除的实体)。这些ID可以在数据库2中重新使用。(B类型将发生)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52387310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档