图数据库中的 OLTP 与 OLAP 融合实践

news2024/11/13 8:00:51

复杂场景数据处理的 OLTP 与 OLAP 融合实践

在一些图计算的场景下,我们会遇到同时需要处理 OLTP 和 OLAP 的问题。而本文就给了一个 OLTP 与 OLAP 融合实践的指导思路,希望给你带来一点启发。

Dag Controller 介绍

Dag Controller 是 NebulaGraph 企业版的图系统,经过反复测试无误后已经发布,它主要解决的是 OLTP 和 OLAP 的融合问题,以及复杂场景下的图计算问题。

欢迎大家来详细了解下:https://docs.nebula-graph.com.cn/3.2.1/graph-computing/0.deploy-controller-analytics/。

下面,我对 Dag Controller 做个简单分享,欢迎大家留言一起探讨。

相信大家对 OLTP 和 OLAP 都不陌生,我这里再简单介绍下:OLTP 是一种快速响应、实时在线的一种数据处理方式。与之对应的 OLAP,是一种离线的、复杂场景的数据计算方式

对 NebulaGraph 来说,OLTP 有多种多样的查询语句,如:GOMATCH 等。OLAP 有各种各样的图算法,如:PageRank、Louvian、WCC、KCore、Jaccard 等算法。

OLTP 和 OLAP 并不是各自独立存在的,举例来说,我们可以将 MATCH 跑出来的子图喂给 PageRank 算法,PageRank 跑出来的结果可以写入到 NebulaGraph,继续执行 MATCH 语句或其它算法。就像拼积木一样,可以将各种各样的 OLTP 和 OLAP 组装起来,形成一种更加复杂场景的数据处理方式。

Dag Controller 就是处理这种场景的系统,它负责 OLTP、OLAP 的串联和执行

Dag Controller 介绍

架构

Dag Controller 架构

Dag Controller 的职责:

  1. 向外部提供了 http 接口,用于 Job 的提交、停止、删除等操作,以及系统环境的配置等。
  2. DAG 的执行:Dag Controller 在执行 DAG(有向无环图)时,OLAP 部分会调用 NebulaGraph Analytics 系统,OLTP 部分会调用 graphd 完成 nGQL 的执行。

NebulaGraph Analytics 是 NebulaGraph 的图计算系统,支持 PageRank、WCC、Louvain、Jaccard 等图分析算法,支持 HDFS 和 NebulaGraph 数据源。

graphd、metad、storaged 是 NebulaGraph 中的组件,graphd 主要负责 nGQL 的解析,storaged 负责数据的存储,metad 负责元数据的存储。

案例

案例 1

复杂场景数据处理的 OLTP 与 OLAP 融合实践

上图是一个对子图跑 PageRank 算法的 DAG 模型,首先用 nGQL 语句获取一个子图,然后再对这个子图跑 PageRank 算法。

当我们的图规模特别大的情况下,且我们只想对部分图数据跑算法,就可以使用这种方式。

案例 2

复杂场景数据处理的 OLTP 与 OLAP 融合实践

上图是一个对两类顶点计算最短路径的模型。

首先,分别用 nGQL 分别获取两个类别的顶点 ID。然后再把这两类顶点 ID 交给 ShortestPath 算法,ShortestPath 会在全图中计算这两类顶点之间的路径。

每个算法是可以设置基于全图跑算法,也可以基于子图跑算法。

DAG 模型有多种多样,可以根据不用的业务场景搭建不同的 DAG 模型。

技术实现

DAG 模型

DAG 指的是一个没有回路的有向图。DAG 的一个实例看作是一个 Job,一个 Job 有多个 Task。

Dag Controller 中的 Task 可以是一个 nGQL,也可以是一个图算法,如 PageRank、Louvain、SSSP 等。

Job 执行时候需要先对 Task 排序,网上有很多相关的代码,这里不再赘述。

并行执行

为了保障 DAG 的执行效率,多个 DAG 需要做到并行执行。同时,在一个 DAG 的内部,无上下游依赖关系的 Task 也需要并行执行。

如何做到多个 DAG 并行执行以及 Task 的并行执行?简单的说,通过两个线程池分别处理 DAG 和 Task

具体描述如下:

  1. 系统启动时,分配 Job 线程池和 Task 线程池,分别处理 Job 的执行和 Task 的执行。
  2. 定时地从数据库中获取未执行的 Job,交由 Job 线程池运行。
  3. Job 执行时按照上下游的依赖关系对 Task 排序,然后依次判断每个 Task 的所有上游是否执行完成,上游执行完成后将此 Task 交给 Task 线程池执行,如果上游未执行完则等待。
  4. 在 Job 执行过程中,如果 Job 线程池满了之后,定时获取未执行 Job 时需要做等待处理。Task 线程池满了之后,也同样做等待处理。

类型校验

Task 之间的数据输入与输出存在数据类型校验问题,这里需要注意。比如:Task2 是 Task1 的下游,Task2 的输入需要的是 int 类型,而 Task1 输出也必须是 int 类型。

DAG 停止

在停止 Job 的时候,需要对多个并行运行的 Task 进行停止。一个 Task 的有准备阶段、运行阶段,并且运行阶段会存在跨机器、多进程的情况。停止 Job 需要避免孤儿进程的问题。

自定义算法支持

我们支持将客户的算法当作一种 Task,用于 DAG 的搭建。首先,在系统中配置算法相关的参数信息。在执行 Job 时,由系统负责运行与 Task 相对应的算法。


谢谢你读完本文 (///▽///)

要来近距离体验一把图数据库吗?现在可以用用 NebulaGraph Cloud 来搭建自己的图数据系统哟,快来节省大量的部署安装时间来搞定业务吧~ NebulaGraph 阿里云计算巢现 30 天免费使用中,点击链接来用用图数据库吧~

想看源码的小伙伴可以前往 GitHub 阅读、使用、(з)-☆ star 它 -> GitHub;和其他的 NebulaGraph 用户一起交流图数据库技术和应用技能,留下「你的名片」一起玩耍呢~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/358303.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

rabbitMq安装(小短文)--未完成

rabbitMq是在activeMq的基础上创造的,有前者的功能,比前者强,属于后来居上。系统环境:windows10首先下载相关软件Erlang,因为他是这个语言写的。https://www.erlang.org/downloads然后安装,并且弄到环境变量里验证是否…

Robot Framework自动化测试---元素定位

不要误认为Robot framework 只是个web UI测试工具,更正确的理解Robot framework是个测试框架,之所以可以拿来做web UI层的自动化是国为我们加入了selenium2的API。比如笔者所处工作中,更多的是拿Robot framework来做数据库的接口测试&#xf…

Leetcode.2257 统计网格图中没有被保卫的格子数

题目链接 Leetcode.2257 统计网格图中没有被保卫的格子数 Rating : 1709 题目描述 给你两个整数 m和 n表示一个下标从 0开始的 m x n网格图。同时给你两个二维整数数组 guards和 walls,其中 guards[i] [rowi, coli]且 walls[j] [rowj, colj]&#xff…

适合初学者的超详细实用调试技巧(下)

我们日常写代码的时候,常常会遇到bug的情况,这个时候像我这样的初学者就会像无头苍蝇一样这里改改那里删删,调试的重要性也就显现出来,这篇文章接着上文来讲解。 上文地址:(8条消息) 适合初学者的超详细实用调试技巧&…

Tomcat目录介绍,结构目录有哪些?哪些常用?

bin 启动,关闭和其他脚本。这些 .sh文件(对于Unix系统)是这些.bat文件的功能副本(对于Windows系统)。由于Win32命令行缺少某些功能,因此此处包含一些其他文件。 比如说:windows下启动tomcat用的…

3款强大到离谱的电脑软件,个个提效神器,从此远离加班

推荐3款让你偷懒,让你上头的提效电脑软件,个个功能强大,让你远离加班! 很多几个小时才能做好的事情,用上它们,只需要5分钟就行!! 1、JNPF —— 个人最喜欢的低代码软件 它为开发者…

利用OpenCV的函数equalizeHist()对图像作直方图均衡化处理

如果一幅图像的灰度值集中在某个比较窄的区域,则图像的对比度会显得比较小,不便于对图像的分析和处理。 图像的直方图均衡化可以实现将原图像的灰度值范围扩大,这样图像的对比度就得到了提高,从而方便对图像进行后续的分析和处理…

从Docker挂载逃逸原理复现分析到BlueMoon实战

Docker逃逸 什么是Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互…

Elasticsearch:在满意度调查中实现并使用情绪分析器

如果你通过博客或新闻关注 Elastic,你已经知道在最新版本的 Elasticsearch 中已经提供了用于自然语言处理 (NLP) 的资源。事实上,在我之前的博客文章中,我已经推出了很多关于 NLP 的博文。请详细阅读 “Elastic:开发者上手指南” …

【Linux 多线程同步】使用同步和互斥实现生产消费模型

目录 1.同步的接口 2.多线程但是按顺序来执行 3.生产消费模型 4.使用互斥加同步实现生产消费模型 (采用环形队列) 同步:在保证数据安全的前提下,让线程能够按照某种特定的顺序访问临界资源,从而有效避免饥饿问题 …

GraphTrip论文笔记【Information Fusion 92 (2023)】

Dual-grained human mobility learning for location-aware trip recommendation with spatial–temporal graph knowledge fusion 期刊:EI检索 Information Fusion 92 (2023) Challenges (1)异质交互信息的挖掘 POI位置信息、POI类别信息…

重新标记ImageNet:从全局标签到局部标签(附github代码及论文)

欢迎关注“计算机视觉研究院”计算机视觉研究院专栏作者:Edison_GImageNet可以说是最受欢迎的图像分类基准,但它也是一个具有显著噪声的标签。最近的研究表明,许多样本包含多个类,尽管被假定为单个标签基准。因此,他们…

【办公类-18-02】Python VScode 制作“照片整理.py”的exe文件(打包系列)

效果展示:背景需求:最近一年我都是机动班(非固定班主任),所以拍的照片不多,只需要每月把手机里的照片用QQ的“我的文件助手”导出来,然后打开VScode,找到“20211020按日期批量整理文…

独居老人一键式报警器

盾王居家养老一键式报警系统,居家养老一键式报警设备 ,一键通紧急呼救设备,一键通紧急呼救系统,一键通紧急呼救器 ,一键通紧急呼救终端,一键通紧急呼救主机终端产品简介: 老人呼叫系统主要应用于…

java网络编程-nio学习:阻塞和非阻塞

一、阻塞 阻塞模式下,相关方法都会导致线程暂停 ServerSocketChannel.accept 会在没有连接建立时让线程暂停 SocketChannel.read 会在没有数据可读时让线程暂停 阻塞的表现其实就是线程暂停了,暂停期间不会占用 cpu,但线程相当于闲置 单线…

Learning C++ No.11【string类实现】

引言: 北京时间:2023/2/19/8:48,昨天更新了有关进程状态的博客,然后在休息的时候,打开了腾讯视屏,然后看到了了一个电视剧,导致上头,从晚上6点看到了10点,把我宝贵的博客…

vue(5)

文章目录1. 监测数据原理1.1 通过问题引出1.2 开始1.3 Vue.set() 方法1.4 vue 监视 数组1.5 小练习2. 收集表数据3. 过滤器4. 内置指令4.1 v-text4.2 v-html4.3 v-cloak4.4 v-once4.5 v-pre1. 监测数据原理 1.1 通过问题引出 1.2 开始 要想解决上面的这个问题 ,需要…

python基于django幼儿园管理系统

目录 1 绪论 1 1.1课题背景 1 1.2课题研究现状 1 1.3初步设计方法与实施方案 2 1.4本文研究内容 2 2 系统开发环境 4 2.1 JAVA简介 4 2.2MyEclipse环境配置 4 2.3 B/S结构简介 4 2.4MySQL数据库 5 2.5 SPRINGBOOT框架 5 3 系统分析 6 3.1系统可行性分析 6 3.1.1经济可行性 6 3…

【2022.12.9】Lammps+Python 在计算g6(r)时遇到的问题

目录写在前面绘制g6( r )执行步骤【updated】如何检查图像的正确性:不是编程问题,而是数学问题的一个小bug废稿2则:写在前面 全部log: 【2022.11.16】LammpsPythonMATLAB在绘制维诺图时遇到的问题 绘制g6( r )执行步骤【updated…

Eureka原理浅析

文章目录1.简介2.组件2.1 Eureka Server2.1.1 主要功能2.1.2 自我保护机制2.1.3 数据同步方式2.1.4 Server的多级缓存和Client实例过期策略2.2 Eureka Client3.补充3.1 CAP偏重点3.2 功能扩展性3.3 工作流程1.简介 Eureka是Netflix开发的服务发现框架,本身是基于RE…