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

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

640.jpg

许多国内企业在早期使用 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 调用,并且每次查询的时延要求在秒级。

640.png

03 迁移方案

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

在数据层面:

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

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

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

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

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

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

640 (2).png

04 迁移后的能力提升

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

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

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

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

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

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

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
1月前
|
SQL 数据库
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
SQL Server附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库。 SQL Server数据库出现823错误的可能原因有:数据库物理页面损坏、数据库物理页面校验值损坏导致无法识别该页面、断电或者文件系统问题导致页面丢失。
95 12
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
|
10天前
|
Java 数据库
案例一:去掉数据库某列中的所有英文,利用java正则表达式去做,核心:去掉字符串中的英文
这篇文章介绍了如何使用Java正则表达式从数据库某列中去除所有英文字符。
28 15
|
12天前
|
SQL 关系型数据库 MySQL
Go语言项目高效对接SQL数据库:实践技巧与方法
在Go语言项目中,与SQL数据库进行对接是一项基础且重要的任务
28 11
|
11天前
|
存储 NoSQL API
使用Py2neo进行Neo4j图数据库的增删改查操作
使用Py2neo进行Neo4j图数据库的增删改查操作
30 5
|
11天前
|
SQL 存储 关系型数据库
添加数据到数据库的SQL语句详解与实践技巧
在数据库管理中,添加数据是一个基本操作,它涉及到向表中插入新的记录
|
11天前
|
Rust 前端开发 关系型数据库
Tauri 开发实践 — Tauri 集成本地数据库
本文介绍了在 Tauri 框架中集成本地数据库的几种方案,包括直接绑定 SQLite、使用第三方数据库库和使用 tauri-plugin-sql-api 插件。最终选择了 tauri-plugin-sql-api,因为它集成简单、支持多种数据库类型,并且与 Tauri 框架深度整合,提升了开发效率和安全性。文章详细介绍了如何安装和使用该插件,以及如何编写核心代码实现数据库操作。
54 2
|
1月前
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
243 14
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
|
15天前
|
SQL 关系型数据库 数据库
SQL数据库:核心原理与应用实践
随着信息技术的飞速发展,数据库管理系统已成为各类组织和企业中不可或缺的核心组件。在众多数据库管理系统中,SQL(结构化查询语言)数据库以其强大的数据管理能力和灵活性,广泛应用于各类业务场景。本文将深入探讨SQL数据库的基本原理、核心特性以及实际应用。一、SQL数据库概述SQL数据库是一种关系型数据库
20 5
|
14天前
|
SQL 开发框架 .NET
ASP连接SQL数据库:从基础到实践
随着互联网技术的快速发展,数据库与应用程序之间的连接成为了软件开发中的一项关键技术。ASP(ActiveServerPages)是一种在服务器端执行的脚本环境,它能够生成动态的网页内容。而SQL数据库则是一种关系型数据库管理系统,广泛应用于各类网站和应用程序的数据存储和管理。本文将详细介绍如何使用A
30 3
|
1月前
|
Oracle 关系型数据库 数据库
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
打开oracle数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。 数据库没有备份,无法通过备份去恢复数据库。用户方联系北亚企安数据恢复中心并提供Oracle_Home目录中的所有文件,急需恢复zxfg用户下的数据。 出现“system01.dbf需要更多的恢复来保持一致性”这个报错的原因可能是控制文件损坏、数据文件损坏,数据文件与控制文件的SCN不一致等。数据库恢复工程师对数据库文件进一步检测、分析后,发现sysaux01.dbf文件损坏,有坏块。 修复并启动数据库后仍然有许多查询报错,export和data pump工具使用报错。从数据库层面无法修复数据库。
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例