方案更改时迁移现有的 Titan 图形数据

Migrating existing Titan graph data when scheme changes

我有一个 25TB 的 Titan 图数据库,托管在 HBase table。

该图表包含我的用户的数据,例如兴​​趣、友谊等。 我还将所有数据保存在 SQL 关系数据库中。

我正在开发一项新功能,需要我更改用户顶点的方案,将其拆分为多个较小的顶点和边。

遇到这种情况应该怎么处理?泰坦数据发生如此巨大变化的最佳做法是什么? 我应该考虑根据 SQL 数据重新构建图表,还是应该迁移现有数据? (数十亿个顶点和边?

总的来说,用于此类非常大的模式更改的方法与数据库技术无关。除非您有能力在进行更改时让整个系统脱机,否则您将需要随着时间的推移迁移数据,这意味着您将同时拥有两个版本的数据。如果不查看您建议的更改的详细信息,就很难说出您的最佳策略是什么。

如果我假设您的计划是 "just" 获取每个用户顶点并将其拆分为几个较小的互连顶点,我将假设在这两种情况下您仍然有一个可以在搜索中找到的规范用户顶点,例如用户 5 将由一个 "big vertex" 或一个 "small vertex connected to other vertices" 表示。

创建一个进程来创建每个 "big vertex" 的 "small vertex" 副本,但也要保留 "big vertex"。这需要时间 运行,但它最终会完成。对顶点的编辑必须同时更新 "big" 和 "small"。只搜索 "big" 个,因为它们仍然存在。

一段时间后,每个 "big" 个顶点都会有一个 "small" 个顶点。然后您可以部署仅搜索 "small" 顶点的代码。在证明成功之后,您可以退出同时编辑两者的代码,然后当然 运行 另一个删除所有 "big" 顶点的作业。

这很痛苦,但是当您在实时系统中拥有合理数量的数据时,这是您可以采用的唯一方法。