我有一个25TB Titan图形数据库,托管在HBase表上。
该图表包含我的用户数据,例如兴趣,友谊等。 我还将所有数据保存在SQL关系数据库中。
我正在开发一项新功能,要求我更改用户顶点的方案,将其分割为多个较小的顶点和边缘。
我该如何处理这种情况?对Titan数据进行如此巨大变化的最佳做法是什么? 我应该考虑从SQL数据重建图表,还是应该迁移现有数据? (数十亿个顶点和边缘?
答案 0 :(得分:3)
总体而言,这些非常大的架构更改的方法与数据库技术无关。除非您能够在进行更改时使整个系统脱机,否则您需要随时间迁移数据,这意味着您将同时拥有两个版本的数据。如果不查看建议更改的详细信息,很难说出最佳策略是什么。
如果我假设您的计划“只是”将每个用户顶点分割成几个较小的互连顶点,我将假设在这两种情况下您仍然可以在搜索中找到规范的用户顶点,例如:用户5将由一个“大顶点”或一个“连接到其他顶点的小顶点”表示。
创建一个创建每个“大顶点”的“小顶点”副本的过程,同时保持“大顶点”。这需要时间来运行,但最终会完成。对顶点的编辑必须同时更新“大”和“小”。你只搜索“大”的搜索,因为它们仍然存在。
一段时间后,每个“大”顶点都会有一个“小”顶点。然后,您可以部署仅搜索“小”顶点的代码。在证明成功后,您可以退出同时编辑两者的代码,然后运行另一个删除所有“大”顶点的作业。
这很痛苦,但是当您在实时系统中拥有合理数量的数据时,这是您可以采取的唯一方法。