从ES到Nebula:图数据库在反欺诈团案系统中重构实战

这篇具有很好参考价值的文章主要介绍了从ES到Nebula:图数据库在反欺诈团案系统中重构实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

从ES到Nebula:图数据库在反欺诈团案系统中重构实战,数据库,elasticsearch,重构,大数据,搜索引擎

最近带领团队重构了公司内部风控团案系统,特此记录一下!

     在金融风控领域,数据的准确性和实时性对于保障业务安全至关重要。随着业务的快速发展,我们面临的挑战是如何优化现有的风控数据存储和处理系统,以适应不断增长的数据量和复杂性。为此,我们团队成功完成了一项系统重构项目,将风控系统(以下简称H系统)的输入项数据迁移到图数据库Nebula,并重构了相关项目架构,为未来的系统扩展和维护奠定了基础。

注: 风控反欺诈团案系统,简称H系统,下同。

一、背景与挑战

  • 数据关系复杂性:H系统的输入项数据全部来源于Elasticsearch(ES),但ES的存储结构难以直观展示数据间的关系,且随着输入项的增多,关系数据呈指数级增长,维护难度大。

  • 实时性要求:风控业务对数据的实时性有很高要求,而现有的ES存储和处理方式在性能上存在瓶颈。

二、目标与方案

  • 迁移到图数据库:将H系统的输入项关联关系迁移到Nebula图数据库,利用图数据库的天然优势来存储和管理复杂的数据关系。

  • 重构项目架构:重构H系统项目,统一技术栈为Java,接入公司统一服务框架,以支持服务水平扩展和监控报警。

三、重构过程

  • 调研与分析:我们首先对现有系统进行了全面的调研,包括接口梳理、核心流程分析、环境配置和触发场景等。

  • 方案选择:经过对比,我们选择了充分利用图数据库特点的方案,每个用户只需关注自己的数据变化,建立图形。

  • 灰度实施:采用双写策略,逐步迁移流量,确保平滑过渡。

  • 数据迁移:全量迁移历史数据,增量同步双写,确保数据一致性。

四、技术亮点

  1. 图数据库的天然优势:Nebula图数据库的引入,使得数据关系更加直观,查询效率大幅提升。图数据库的灵活性允许我们轻松地表示和查询复杂的数据关系,这对于风控业务中的关联分析尤为重要。

  2. 高效的数据迁移策略:我们采用了全量迁移与增量同步相结合的策略,确保了数据的完整性和一致性。通过精心设计的灰度方案,我们能够在不影响现有业务的情况下,逐步完成数据迁移。

  3. 灰度实施的平滑过渡:通过同步双写和流量回放采样对比,我们确保了新旧系统之间的无缝切换。这种策略允许我们在出现问题时迅速回滚,保证了业务连续性和数据安全。

  4. 数据一致性保障:我们开发了实时对比和开发对比脚本,确保了迁移过程中数据的一致性。这种对比机制不仅在数据迁移期间发挥作用,也为未来的数据维护提供了强有力的支持。

  5. 性能提升与可扩展性:新系统在性能上有了显著提升,更好地支持了风控业务的需求。同时,重构后的系统架构更加灵活,为未来的业务发展和系统下线提供了坚实的基础。

五、实际案例

在重构之前,我们面临的一个典型问题是查询具有相同设备号的用户。在ES存储中,我们建立了user_Info_indexuser_relation_index,前者表示用户信息,后者表示关联关系。当数据变更事件触发时,我们需要提前计算好用户A的关联关系,例如用户A与B1、B2、B3有相同设备号,然后将这些关系反转,存入关联关系,导致存储数据呈指数级增长。

重构到Nebula图数据库后,我们只需要建立user_info_v(点)和device_v(设备号),以及device_e(设备号边)。每次写入时,只需存入用户A的设备号和设备关联关系。当需要查询用户A的相同设备号用户时,我们可以使用如下Nebula查询语句:

MATCH (v1:cust_info_v)-[e:device_e]->(v2:device_v)<-[e2:device_e]-(v3:cust_info_v) 
WHERE id(v1)=='${custNo}' AND id(v1) != id(v3) 
RETURN collect(properties(v3).cust_no) AS custNos ;

这条图数据库查询的响应时间在毫秒级,大大减少了写入复杂度,查询性能也有所提升。同时,存储数据减少了大约80%,显著提高了系统的效率和可维护性。

六、成果与展望

  • 性能提升:新系统在性能上有了显著提升,更好地支持了风控业务的需求。

  • 未来可扩展性:重构后的系统架构更加灵活,为未来的业务发展和系统下线提供了坚实的基础。

七、结语

通过这次重构,我们不仅解决了现有系统的瓶颈问题,还为团队积累了宝贵的经验。我们相信,随着技术的不断进步,我们的风控系统将更加强大,为业务提供更加坚实的支持。

欢迎点赞、收藏、转发!

也欢迎遇到系统瓶颈,疑难问题,或者需要重构系统解决方案朋友,与我沟通交流!
文章来源地址https://www.toymoban.com/news/detail-773745.html

到了这里,关于从ES到Nebula:图数据库在反欺诈团案系统中重构实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据库➡ES,数据更新同步

            mysql5.7(自己部署),elasticsearch:7.4.2(自己部署),centos7.0(虚拟环境),python3.8(自己部署),pycharm(自己安装);--建议可用docker部署mysql和es         ①、mysql数据,estable表字段(ID--unique,VALUE--str is json format)唯一ID,json格式的字符串,(表中存的为需要更新

    2024年01月17日
    浏览(39)
  • ES数据库入门

    目录 1、ES数据库的简介 2、ES数据库的特点 3、ES的应用场景 4、ES数据库和关系型数据库的比较 5、ES的工作原理 5.1、lucence存储和检索 5.2 、ES写数据 5.3、 ES读数据 5.4、 ES检索 5.5、 ES删数据 常见的五种数据库为:redis、mysql、ES、hbase、hive。其中的es是一种容纳较大规模

    2024年01月18日
    浏览(37)
  • 【数据库】es

    新增一条数据: 编辑一条数据: 分组查询: 更新ElasticSearch: 1)创建别名索引 curl -XPUT “http://172.16.73.33:9200/_template/csmulog_template?pretty” -d @./csmulog_template.json -H ‘Content-Type:application/json’ 2)编辑模板文件json 3)索引表要加上 curl -i -k -H “Content-type:application/json” -X POST “http

    2024年03月18日
    浏览(24)
  • 将数据库的数据导入es中

    2024年02月11日
    浏览(61)
  • es和数据库同步方案

    5.5 课程信息索引同步 5.5.1 技术方案 通过向索引中添加课程信息最终实现了课程的搜索,我们发现课程信息是先保存在关系数据库中,而后再写入索引,这个过程是将关系数据中的数据同步到elasticsearch索引中的过程,可以简单成为索引同步。 通常项目中使用elasticsearch需要完

    2024年02月11日
    浏览(41)
  • linux中安装ES数据库

    jdk安装 Elasticsearch 是一个开源的搜索引擎,建立在全文搜索引擎库 Apache Lucene 基础之上 用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单, 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。 Elasticsearch 不仅仅只是一个

    2023年04月09日
    浏览(40)
  • 【ES数据库】Elasticsearch安装使用

    Elasticsearch 和 MongoDB/Redis 类似,是非关系型数据库,从索引文档到文档能被搜索到只有一个轻微的延迟,是采用Restful API标准的可扩展和高可用的实时数据分析的全文搜索工具 Elastic Search 的实现原理是,利用内置分词器(Analyzer)对数据库文本进行分词,将解析出的和数据

    2024年02月04日
    浏览(38)
  • 如何保证ES和数据库的数据一致性?

    在业务中,我们通常需要把数据库中的数据变更同步到ES中,那么如何保证数据库和ES的一致性呢?通常有以下几种做法: 双写 在代码中,对数据库和ES进行双写,并且先操作本地数据库,后操作ES,而且还需要把两个操作放到一个事务中:  在以上逻辑中,如果写数据库成功

    2024年04月28日
    浏览(50)
  • ES 实现数据库or查询效果

    ES :有两种常用查询           must   必须满足查询条件         should 非必须满足查询条件  如果想实现类似与mysql中的or 查询效果,必须使用should查询。但是shuold 会查询出不满足条件的数据 ,这必须加一个属性 \\\"minimum_should_match\\\": \\\"1\\\" 必须满足should条件中的一个查询

    2024年02月11日
    浏览(37)
  • elasticsearch 安装 (es数据库安装详细)

    以下操作在debian11下,其它linux版本相同 安装的是8.6.2版本(2023.3),可以直接复制使用 以下操作默认在root下进行,如果切换用户会说明 1.下载安装包 注意:如果要安装kibana,版本尽量要一致 主体程序从这里下载 链接: es 2.创建es的用户 3.创建es存储位置 存放在/var/es(根据自

    2024年02月05日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包