案例实践:某券商从 Neo4j 迁移至悦数图数据库

案例实践:某券商从 Neo4j 迁移至悦数图数据库_第1张图片

许多国内企业在早期使用 Neo4j 作为图相关业务场景的探索基础设施。然而,随着业务发展和环境变化,原有的图数据库已经逐渐无法满足不断发展的特定业务场景需求。如何将 Neo4j 迁移到一款兼具良好扩展性、性能、专业服务能力的图产品,已成为业界普遍关心的问题。本文将为您呈现华东某大型券商从 Neo4j 迁移至悦数图数据库的选型、迁移和提升能力的完整历程,供广大企业参考。

2018 年,该券商选择了 Neo4j 作为构建企业图谱、产业链图谱等关键场景的图数据库。然而,随着业务的发展,Neo4j 的单机架构和可维护性等问题变得越来越突出,需要寻找一个更符合业务需求的图数据库产品。于是,在 2023 年,该券商选择了业内知名的原生分布式图数据库“悦数图数据库”作为 Neo4j 的替代,成功完成了数据库的迁移。

01 Neo4j 替换选型

当时,该券商企业主要遇到以下问题:

Neo4j 为单机形态,没有弹性扩缩容的能力;

业务复杂性和查询速度要求不断上升,支撑业务所需要的图查询、图计算能力,Neo4j 不能完全满足;

现有产品缺乏足够的企业级支持和服务;

经过多方研究、比对和测试,该券商最终选择了业内知名的原生分布式图数据库“悦数图数据库”作为 Neo4j 的替代,来支撑运营关键场景。

该券商图数据库项目经理表示,在进行图数据库替代选型时,主要考虑了以下几个因素。首先是产品的能力是否满足需求。面对不断变化的业务场景和需求,新的图数据库必须具备弹性扩缩容能力,这是 Neo4j 所无法做到的。同时,我们的业务场景涉及股权穿透、最终受益人等业务相关的算法、全文索引创建等,并且系统需要满足一天一万次 API 调用,每次查询的时延要求在秒级。因此,我们需要选择一个具备一定的图查询、图计算能力和性能的图数据库。在市场上比较后发现,在产品能力的这两个方面,悦数图数据库的表现是比较优异的,能够匹配我们的需求。

其次,产品背后提供的服务和支持也是很重要的。我们了解到,悦数图数据库是基于世界排名前三的开源分布式图数据库 NebulaGraph,针对国内用户需求而打造的,其本身的社区及商业化客户已经超 1,500 家,并且积累了大量的行业实践经验。在产品所属公司杭州悦数,70% 员工为具备图技术专业背景的技术工程师,产品支持能力比较强。这些是国内外其他一些图数据库厂商所不具备的。

此外,金融业是国家重点产业之一,避免被“卡脖子”是行业在选用产品时考虑的因素之一。在选型过程中,我们也在国产、满足信创要求、兼容国产基础设施方面进行了考察。我们了解到,悦数图数据库是国产自主可控的软件产品,对于主流国产 CPU(如鲲鹏、海光、飞腾、龙芯等)及操作系统(如麒麟、统信、欧拉、红旗等)都进行了官方的兼容性适配和相关认证。

综合对比之后,我们选择了悦数图数据库作为 Neo4j 的替代。

02 迁移要求

该券商使用了工商数据、万得数据以及部分自有业务数据作为数据源,并通过全文检索组件提供全文搜索和视图查询服务。对于此次图数据库的迁移,项目关键要求包括了功能和性能的要求。

在功能要求方面,首先是数据导入的效率。在原先使用 Neo4j 时,数据导入先从上 Hive 生成 csv,再转换成 Neo4j csv 格式后进行导入,100GB 的原始数据导入需要耗时 10 多个小时。此次迁移的要求是,同样的数据导入,耗时在分钟级别。

其次是业务查询逻辑。除了普通的 Match 语句之外,自定了一些存储过程 procedure 函数,如股权穿透、最终受益人等业务相关的算法、全文索引创建等等。

在性能要求方面,系统需要满足一天一万次 API 调用,并且每次查询的时延要求在秒级。

案例实践:某券商从 Neo4j 迁移至悦数图数据库_第2张图片

03 迁移方案

与大多数数据库迁移类似,图数据的迁移也涉及数据以及业务逻辑(查询和计算)两个模块。

在数据层面:

基于悦数数据迁移工具(Yueshu Exchange)的能力,悦数图数据库支持根据不同的数据存储源,以两种不同的迁移方式导入:从 Neo4j 导入及从 Hive 表导入。悦数数据迁移工具是一款 Apache Spark 应用,能支持多种不同格式的 rxaa 数据和流式数据的迁移。

案例实践:某券商从 Neo4j 迁移至悦数图数据库_第3张图片

为更好的兼容该券商现有的数据导入业务流程,本次迁移采用了从 Hive 表导入的方式。

在业务层面,本次迁移主要涉及三部分:

首先是数据库接口,迁移项目将原有的 Neo4j 的数据访问层改造成悦数图数据库的数据访问层,在改造底层的数据库连接、会话、执行查询的机制和数据类型的基础上,保证上层的接口不变。该券商采用 Java 作为开发技术栈,悦数图数据库使用了已有的 Java 客户端重新实现了其图数据库访问层的原有逻辑。

其次是视图查询服务,本次迁移使用图数据库接口改写了 QueryByView Service 的实现,生成的 Cypher 查询语句能适配悦数图数据库的语法要求,提供可视化查询服务。

第三是专用资源服务,主要涉及查询语言的优化及改写。悦数图数据库很好地兼容了Cypher 语言的 DQL 部分,因此部分服务无需优化,可以复用原有代码。

案例实践:某券商从 Neo4j 迁移至悦数图数据库_第4张图片

04 迁移后的能力提升

基于上述迁移方案,该券商顺利完成了将图数据库从 Neo4j 到悦数图数据库的迁移,并将原有的企业图谱、产业链图谱等场景迁移到了基于悦数图数据库构建的图平台上。迁移后,该券商的图平台整体能力得到了大幅提升。

悦数图数据库采用存算分离和 Shared-nothing 分布式存储架构,支持海量数据存储及集群的在线扩缩容。相比于原有的 Neo4j 单机形态,基于悦数图数据库的图平台具备出色的弹性扩缩容能力,能够满足业务变化中的各种需求。

同时,悦数图数据库的多副本及一致性协议,保证了集群中数据的高可靠及业务高可用。而备份恢复、集群间数据同步等能力,进一步提升了系统的可用性和可靠性。

其次,基于悦数图数据库强大的图查询和图计算能力,该券商的图平台顺利应用于股权穿透、最终受益人等业务场景,并满足了每天一万次 API 调用和每次查询的秒级时延要求。

总的来说,通过从 Neo4j 迁移至悦数图数据库,该券商的图平台在整体能力、扩展性、稳定性等方面都完成了一次大幅跃升,有效支持了业务发展需求,通过数据关联关系为业务创造更多价值。

如果您想了解该案例的详情,以及对图数据库的选型有任何问题、咨询或讨论,欢迎与我们联系!

你可能感兴趣的:(neo4j,数据库)