【问题标题】:Document disappears in destination after ETL in RavenDB在 RavenDB 中的 ETL 之后,文档在目的地消失
【发布时间】:2021-11-24 12:00:25
【问题描述】:

我必须在两个 RavenDB 实例之间迁移和转换一些数据。基本上,同一个应用程序有两个版本,客户想要迁移到新版本,但要保留旧版本的数据。我成功定义了转换脚本并在数据库级别上进行了测试。现在我正在 QA 环境中进行测试,其中包含应用程序用户信息(这是我要移动的集合的一部分)的特定文档在任务完成后消失。

为了从小处着手,我在 ETL 中设置了一个仅迁移特定文档的条件。此文档已正确移动,并且转换按预期工作,但应用程序由于缺少当前用户数据而崩溃。当我手动放入时,它又可以工作了。

您有什么想法可能导致该问题吗?

这是我的转换脚本示例:

if (this.MDMId == "dac50220-7c14-eb11-a813-000d3aacb01f"){
    this.CompanySectorCode = "";
    this.CompanySubSectorCode = "";
...
    
    loadToProfiles(this);
}

因此,我预计唯一修改过的文档将是条件评估为 true 的文档,并且我确认正在消失的文档具有不同的 MDMId。

感谢任何撕裂, 谢谢!

【问题讨论】:

    标签: ravendb ravendb5


    【解决方案1】:

    RavenDB 使用 delete 和 put 来处理文档修改。 您可以通过定义deleteDocumentsOf<CollectionName>Behavior 来更改删除行为。 https://ravendb.net/docs/article-page/4.2/csharp/server/ongoing-tasks/etl/raven#deletions

    请注意,如果您 ETL 到同一个集合(例如从 usersusers),或者您 ETL 到不同的集合(例如从 userpeople),则存在一些差异。 对于同一个集合,RavenDB 使用相同的 id,并针对这个特定的 id 执行删除命令。 对于不同的集合,源使用 id 作为前缀,并在目标上生成实际 id,以便通过前缀执行删除。

    此外,RavenDB 假定它是目标数据库的唯一写入者。

    【讨论】:

    • 感谢您的回答!我试过了,但不幸的是它没有帮助:(无论如何我们正在与支持团队联系,所以如果我们找到解决方案,我会在这里更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    相关资源
    最近更新 更多