网站建设 中企动力烟台/品牌搜索引擎服务优化
用于可视化和探索每个 MEAN 堆栈背后的数据图的 ETL
您是否正在努力回答有关 MEANS Web 服务数据的紧急问题?哪里有 BI 可以快速回答“上个季度哪些亚洲的artisan.plus 用户触发了订单?”这个问题,而无需编写查询?使用 mongo2neo4j 、 Neo4j 和 SemSpect ,可以根据需要以可视化方式免费回答此类问题。这篇文章介绍了如何将 MongoDB 数据和对象模型转移到 Neo4j,以及如何使用 SemSpect 深入了解您的业务数据。
MEAN 堆栈
MEAN 堆栈 (MEANS) 是基于 MongoDB 、 Express.js 、 AngularJS 和 Node.js 构建的流行技术组合,适用于 Netflix、PayPal、Gmail、LinkedIn、YouTube 等云应用程序。在前端方面,此堆栈有多种变体,例如 MERN(使用 React 而不是 Angular)或 MEVN(使用 Vue.js )。无论如何,MongoDB 始终充当数据后端,作为管理集合中嵌套 JSON 对象的数据库。集合包含 JSON 对象,在 MongoDB 中称为文档,具有类似的结构(例如,一个用于用户的集合,一个用于产品的集合,一个用于订单的集合等)。
此堆栈通常会辅以对象数据建模 (ODM) 框架,例如MongoDB 上的 mongoose 。通过整合 mongoose,您可以无缝定义和实施数据模式,从而在集合之间或跨集合建立 JSON 对象之间的链接。这可以增强数据完整性并降低不一致的风险。
集合中隐藏的宝贵知识
MEAN 堆栈很棒,但它无法轻松洞察底层数据,甚至无法回答简单的业务问题。这是因为 JSON 数据集合不易探索。MongoDB 有一个 查询 API ,包括聚合和投影,但结果始终是 JSON。此外,该 API 有点麻烦,需要编程知识,有时您从一开始就不知道在数据中寻找什么。
这就是 mongo2neo4j 发挥作用的地方。通过自动转换为 Neo4j 的标记属性图 (LPG),可以使用 SemSpect 轻松可视化、探索和分析生成的图表。

mongo2neo4j 构建了从 MEAN 堆栈到图和图分析世界的桥梁
例如,在为咖啡库存管理应用程序 artisan.plus 规划新功能时,出现了一个问题:其 PRO 用户中是否有人只烘焙来自巴西的纯阿拉比卡咖啡混合物?调查这个问题后,只需在 SemSpect 中单击几下并加载相关的 artisan.plus 数据(约 120 万个节点和 360 万个关系),就会发现 59 位 PRO 用户进行了约 24,000 次此类混合烘焙。

SemSpect 使用来自 artisan.plus 的样本数据:有多少 PRO 用户将纯阿拉比卡咖啡与仅来自巴西的咖啡混合烘焙?
将您的平均值变成图表并进行探索
Mongo2neo4j、Neo4j 和 SemSpect 图形可视化和探索工具有效地解决了这种缺乏数据洞察力的问题。
mongo2neo4j 是将 MEANS 数据传输到本机图形的最快、最方便的方法,同时考虑到对象关系数据模型。但是,我们为什么要将数据映射到图形中呢?图形模型是处理对象和关系时最自然的数据模型——正是您在应用 mongoose 或任何其他 ODM 框架时在 MongoDB 中编码的内容。生成的图形接近对象关系数据模型。与分布在各个集合中的原始 JSON 表示相比,以对象和关系网络形式显示的图形更易于查询和理解。
简单来说:使用 mongo2neo4j,所有顶级 JSON 对象都将成为图节点。每个 JSON 对象的字段都会产生相应图节点的属性。默认情况下,嵌套数组元素也会成为节点,并通过关系链接到其原始节点。
对于 ODM 框架引入的每个对象引用(通过对象 ID),mongo2neo4j 都会与图形模型中对象的相应节点建立关系。正如我们稍后看到的,某些配置允许我们在必要时调整 JSON 对象到 Neo4j 节点的映射。
一旦我们的 JSON 集合可以作为数据图使用,就可以更轻松地查看节点之间的链接、掌握间接连接,并通过使用 SemSpect 等工具以交互方式探索图表来开发查询。
MEANS 示例
例如,让我们采用一个基于 MEAN 堆栈的简单商店应用程序,其中来自不同国家的用户可以订购各种产品。
我们使用随机生成的样本数据,其数据生成器由mongo2neo4j 示例目录 提供。当使用 Robo 3T 等 UI 检查 MongoDB 中的示例数据时,我们会看到四个集合,这是 在 mongoose 框架的帮助下在 models.js 中定义的 ODM 的结果。
代表订单的对象具有对用户(订购者)和产品(购买)的对象引用,如下图所示,一个订单的红色箭头所示。

生成的示例数据的集合
使用 MongoDB 查询语言通过 project 的级联可以找出法国用户订购了哪些产品 。但是,它过于复杂,绝对不适合临时数据分析。
因此,让我们使用 mongo2neo4j 提取数据集合并将其加载到 Neo4j 中,以查看数据如何显示在图形数据库中。我们只需安装 Python 包 mongo2neo4j 并运行数据转换:
Shell |
为了成功执行,必须设置一个 Neo4j 数据库并接受远程 Cypher 命令(后者是本地连接的默认设置)。
从开头的 person 示例来看,我们期望每个集合中的任何顶级对象都成为结果图中的节点。嵌套对象也应成为节点。
查看上面显示集合拼贴的图像时,商店数据中唯一的嵌套是“订单”集合对象中的“产品”字段。此类字段的相应值是一个对象数组,其中每个数组对象包含对“产品”对象的引用以及带有订购数量的整数值。如何通过节点和边以及节点/边属性将此结构转换为 LPG 模型?
最简单的方法是将订单节点通过某种产品订单关系链接到产品节点,其中产品数量由相应关系的相应属性表示,如下所示。

但是,如果每个数组元素都包含另一个对象引用,这种映射类型将导致问题。Neo4j 背后的 LPG 模型仅允许两个对象之间的关系。因此,在 LPG 中建模此类构造的更通用方法是借助专用的新节点。

在数据建模的背景下,这种模式称为 具体化, 因为它通过引入明确表示这种关系的节点来具体化这种关系。原始关系的节点链接结果节点,并且还可以与多个其他节点相关或存储金额等属性。
mongo2neo4j 将源自嵌套对象的所有关系具体化,以支持任何类型的 n 元关系。
微调 ETL 流程
mongo2neo4j 中实现的默认映射将 MongoDB 中的所有对象引用转换为 Neo4j 中生成的图形模型的关系,如前所述。有配置选项可以将 ODM 的隐式编码链接转换为关系或为节点分配特定标签,具体取决于原始对象的字段值。
例如,我们可以看到“countries”是一个与给定 ODM 设计中的其他集合无关的集合。但是,此集合中的“isoname”对象字段的值(即法国)似乎与用户的“country”字段的值相匹配。
为了建立从用户到其国家/地区的联系,我们可以配置 mongo2neo4j 来创建这种关系,通过提供一对 . 对作为匹配条件:
Shell |
要根据原始 MongoDB 对象的字段值为节点分配附加标签,我们可以使用“sublabel”选项。在我们的示例中,这对于根据用户的订阅计划对其进行分类非常有用。用户的订阅在“subscription”字段中编码为字符串值。要将这些值转换为 Neo4j 标签,我们指定哪些字段值应被视为标签(此处为“user.subscription”),标签是否应获得后缀(“_user”),以及如果没有值(“无订阅”)应使用什么标签:
Shell |
此外,还有更多映射选项,例如从映射过程中排除集合或字段,以及指定 MongoDB 和 Neo4j 连接详细信息的选项。 有关配置选项的详尽描述,请参阅 脚本参数。
上面集合中显示的 MongoDB 数据摘录最终如下所示。

之前提出的有关法国用户的所有产品的分析问题现在对应于来自节点法国(蓝色圆圈)的图形遍历请求,该请求遍历所有相关用户及其产品订单。这可以通过 Neo4j Cypher 查询语言轻松完成:
Shell |
编写这样的查询需要 Cypher 知识,但至少比 MongoDB 查询对应部分容易得多,因为 Cypher 使用基于文本的视觉描述来声明性地描述节点(写在圆括号中)和关系(写为“->”或“-[:relation-type]->”)查询模式。
然而,还有一种更简单的方法来编写此类查询 - 不需要任何查询语言技能或底层图形模型的知识:SemSpect。
SemSpect 和 MEANS
SemSpect 是一款无代码图形探索和可视化工具。它适用于 Neo4j 以及 RDF 图形数据。SemSpect 有一个免费版本,即 Neo4j Desktop 的 GraphApp,它有一些限制,但功能强大,足以认真探索大型 MongoDB 数据集 — — 至少对于我们的小示例而言。
注意 : 请确保您使用的是 Neo4j Desktop 1.5.9,您可以 下载 。最新版本 (1.6.0) 将 Neo4j Desktop 置于维护模式,不再允许安装图形应用程序。
如果我们 MEANS 示例中的数据已经使用 Neo4j Desktop 存储在 Neo4j DBMS 中(说明位于 GitHub 上的 mongo2neo4j 示例 中),那么 SemSpect 就近在咫尺。只需直接从 Neo4j 开发人员图形应用程序库 安装 SemSpect 图形应用程序即可。
安装和设置 SemSpect 后,您将在左侧列表中看到 mongo2neo4j 导入的标签,如下图所示,以红色框突出显示。为不同订阅计划生成的附加标签按用户标签排序。SemSpect 会自动推断标签之间的子标签包含情况。在这里,其中一个订阅标签的所有用户也始终带有用户标签。

现在,您只需将其中一个标签拖放到 SemSpect UI 中间画布中的探索窗格上即可。为了回答我们的查询,我们从“国家”标签开始。放置在探索窗格中后,我们会看到组(蓝色圆圈)内的 10 个国家节点(灰色圆点)。在搜索框中搜索“法国”并按 Enter 时,我们会看到代表法国的节点,并用显示其名称的旗帜突出显示。

要探索从此节点到法国用户订购产品的路径,我们可以选择该节点并使用上下文菜单“探索节点的连接”。由于此节点仅通过传出国家关系连接到用户节点,因此我们只能选择此关系进行探索。

通过反复扩展“订单”组,然后扩展“订单_产品”组,如下所示,我们最终到达“产品”组。来自法国的订单的 134 种产品节点中的数字显示了该产品链接到左侧组中节点的频率。换句话说,这些数字显示了这些产品的订购频率。
我们找到了两件被订购三次的产品。其中一件是饮料 Celestial Brew。选择此节点会在右侧的详细信息档案中显示其属性。

我们还可以详细检查对象详细信息,并根据特定节点属性值对其进行分类。让我们从产品对象开始。在探索窗格中选择产品组后,我们可以打开一个表格视图,其中逐行列出了组对象的所有属性。

我们可以借助字符串、数字或日期时间限制按任何属性过滤节点。例如,让我们过滤“饮料”类别的产品。表格显示了结果的预览,使用 应用过滤器 ,我们可以限制探索图中的组。

现在,该产品组最终由 1,000 种产品中的 213 种饮料组成。
SemSpect 的一个独特功能允许我们在探索图表时从组中定义新标签。新定义的标签“饮料”在标签树中被组织为一种特殊的产品,随时可以作为新探索或过滤的起点。

我们还能发现什么?
让我们看看我们能用 SemSpect 解决哪些其他分析任务。假设我们要回答以下问题:
2022 年 8 月免费订阅用户订购的最突出的产品是什么?
有没有尚未订购商品的用户?
第一个问题的答案是,从“free_user”开始探索,然后扩展到“订单”,最后扩展到“产品”。由于我们对特定时间范围内的订单感兴趣,因此我们必须打开“订单”的表格视图,并通过日期过滤器选择器将“订单日期”限制为 9 月之前和 7 月之后。

这将订单限制在 2022 年 8 月。由于过滤限制会立即传播到探索图中,因此我们看到 2022 年 8 月有三款产品被免费订阅用户订购了两次。选择产品组时,右侧的档案选项卡还提供了描述组节点的自然语言描述。您还可以将这组结果节点下载为 CSV 文件。

最后,要找到没有订购任何商品的用户,我们必须从所有“用户”开始,然后扩展到“订单”。 “用户”组中的浅灰色用户节点是未连接到右侧“订单”组中的任何节点的用户节点。 我们可以使用“用户”组的上下文菜单并选择“未连接到右侧任何组的节点”,轻松地为它们添加标记。

总结
很难对基于 MongoDB 数据库构建的服务的数据进行概览和洞察。这适用于所有使用 MongoDB 数据存储的应用程序,尤其是如果使用对象关系模型在集合之间建立对象引用,就像采用 MEAN 堆栈的情况一样。
我们提供了一个方便的工具包,其中包含 mongo2neo4j 数据转换器、Neo4j 数据库以及图形探索和查询应用程序 SemSpect,它建立了一个可配置的工作流程,可以真正连接隐藏在 MEAN 堆栈的 MongoDB 数据库中的点。这是查找数据或应用程序中的数据缺陷以及回答相关 BI 问题的关键。
好消息是,这里介绍的工作流程是免费的。mongo2neo4j和 Neo4j 社区都是 GPL 3.0, SemSpect 附带免费模型。但是,当您的数据增长到一定规模以上时,或者您希望使工作流程专业化,或者如果您想享受完整的性能和功能,您可以切换到 Neo4j 和 SemSpect 的企业版。
原文链接:https://medium.com/neo4j/graph-exploration-by-all-means-with-mongo2neo4j-and-semspect-382e55c14c4c
原文作者:
本文由 mdnice 多平台发布
相关文章:

使用 mongo2neo4j 和 SemSpect 通过各种方式进行图探索
用于可视化和探索每个 MEAN 堆栈背后的数据图的 ETL 您是否正在努力回答有关 MEANS Web 服务数据的紧急问题?哪里有 BI 可以快速回答“上个季度哪些亚洲的artisan.plus 用户触发了订单?”这个问题,而无需编写查询?使用 mongo2neo4…...

淘宝卖家难免遇到的商品问题 在淘宝买的东西出问题了,该如何维权
很多朋友对于淘宝卖家难免遇到的商品问题和在淘宝买的东西出问题了,该如何维权不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧! [1] 淘宝买东西,过了售后期,有质量问题怎…...

ffmpeg 安装 h264(x264)encoder
#下载并安装x264 # 切换root用户 sudo -i # 输入密码cd ~ mkdir FFmpeg7#下载并安装x264 git clone https://code.videolan.org/videolan/x264.git cd x264 mkdir build./configure --help # 报缺少asm 时 可加入--disable-asm # --prefix/home/llh/ffmpeg/build/ 指定安装目录…...

Java项目:基于SSM框架实现的健康综合咨询问诊平台【ssm+B/S架构+源码+数据库+毕业论文】
一、项目简介 本项目是一套基于SSM框架实现的健康综合咨询问诊平台 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、…...

SpringBoot源码阅读(4)——事件
从监听器到事件 SpringApplication运行中触发事件,多播器发送事件到监听器,监听器处理事件。 SpingApplication中事件都是经过SpringApplicationRunListeners类传送到各个监听器。 以starting事件为例 void starting(ConfigurableBootstrapContext boo…...

EDI安全:如何在2024年保护您的数据免受安全和隐私威胁
电子数据交换(EDI)支持使用标准化格式在组织之间自动交换业务文档。这种数字化转型彻底改变了业务通信,消除了对纸质交易的需求并加速了交易。然而,随着越来越依赖 EDI 来传输发票、采购订单和发货通知等敏感数据,EDI …...

RabbitMQ快速入门 - 图像化界面的简单操作
目录 1、RabbitMQ的安装 2、RabbitMQ基本介绍 3、简单案例 4、数据隔离 1、RabbitMQ的安装 官网链接:rabbitmq官网 (官网很详细,也可以在官网学习啦~) 基础入门:自主学习:最新版本:安装我…...

新版亚组交互效应函数(P for interaction)newscitb5 1.3版本发布--用于一键生成交互效应表
在SCI文章中,交互效应表格(通常是表五)能为文章锦上添花,增加文章的信服力,增加结果的可信程度,还能进行数据挖掘。什么是亚组,通常就是特殊类型人群,比如男女,种族等&am…...

gpt讲 Observable 对象
什么是 Observable? Observable 是一种用于处理异步数据流的数据类型。它可以发出多个值,这些值可以是同步或者异步产生的,并且可以在时间上发生变化。在 Angular 中,HttpClient 返回的响应对象、事件流以及许多其他异步任务都可…...

STM32的SPI接口详解
目录 1.SPI简介 2.SPI工作原理 3.SPI时序 3.1 CPOL(Clock Polarity,时钟极性): 3.2 CPHA(Clock Phase,时钟相位): 3.3 四种工作模式 4.相关代码 4.1使能片选信号 4.2使能通…...

谷歌+火狐浏览器——实现生成二维码并实现拖动——js技能提升
最新遇到的问题:前两个二维码拖动不了,只有第三个一维码生成后,才可以拖拽 【问题】:出现在都是绝对定位,但是没有指定z-index导致的。 解决办法:在方法中添加一个变量 renderDrag(id) {var isDragging f…...

128陷阱详解(从源码分析)
1、128陷阱描述 Integer 整型 -128~127 超过这个范围,比较会不准确 例子 public static void main(String[] args) {Integer a128;Integer b128;Integer e127;Integer f127;System.out.println(ab); //输出falseSystem.out.println(a.equals(b)); //输出trueS…...

点云处理实操 基于多项式重构的平滑和法线估计
目录 基于多项式重构的平滑和法线估计 一、什么是移动最小二乘法(Moving Least Squares, MLS) 二、算法原理 三、算法应用 四、PCL代码实践 基于多项式重构的平滑和法线估计 原文地址:Smoothing and normal estimation based on polynomial reconstruction — Point Cl…...

MongoDB在Linux下的安装与基本操作指南
MongoDB是一款高性能、开源的NoSQL数据库系统,特别适合处理大规模数据存储应用。本文将详细介绍MongoDB在Linux系统(以Ubuntu为例)上的安装步骤,以及如何进行基本的数据库操作,帮助你快速上手MongoDB。 一、在Linux上…...

端口占用快速解决
netstat -aon|findsstr 8989 taskkill /pid 13221 -t -f 命令解释 1.检查网络连接状态 2.终止特定进程 netstat -aon | findstr 8989 netstat: 这是一个网络状态统计工具,可以显示活动的网络连接、路由表、接口表、多播成员信息等。-a: 显示所有连接和监听端口。通…...

普中51单片机:矩阵按键扫描与应用详解(五)
文章目录 引言电路图开发板IO连接矩阵键盘的工作原理行列扫描逐行/逐列扫描 LCD1602代码库代码演示——暴力扫描代码演示——数码管(行列式)代码演示——线翻转法代码演示——LCD1602密码锁 引言 矩阵按键是一种通过行列交叉连接的按键阵列,可以有效地减少单片机I/…...

SQLite Glob 子句
SQLite Glob 子句 SQLite 的 GLOB 子句是一种强大的搜索工具,用于在数据库中执行模式匹配操作。它类似于 SQL 中的 LIKE 子句,但 GLOB 使用的是基于文件系统的通配符,而不是 SQL 的百分比 (%) 和下划线 (_) 通配符。在本文中,我们…...

Redis基础教程(十七):Redis数据备份与恢复
💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝Ὁ…...

基于FPGA的千兆以太网设计(1)----大白话解释什么是以太网
1、什么是以太网? 还记得初学以太网的时候,我就被一大堆专业名词给整懵了:什么以太网,互联网,MAC,IP,局域网,万维网,网络分层模型等等等等。慢着!我学的不是以太网吗?怎么出来这么一大堆东西? 啊!以太网究竟是什么?别急,我接下来就尽量用通俗的大白话来给你解释…...

wordpress的restfull API使用教程,之如何用postman调试API,以便能使用vue等前端框架开发主题
文章目录 API开发手册在postman中调试这里以 post 一篇文章为例,讲解如何调试: 步骤 1:生成应用密码步骤 2:配置Postman步骤 3:创建文章 参考链接 API开发手册 官方API手册:https://developer.wordpress.o…...

刷题刷题刷题
P1123 取数游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路: 从1,1开始dfs,若行数x>n则立马刷新最大值退出搜索,若y>m则进入下一行从第一列开始搜索即x1,y1,对当前的搜索点x,y的八个方向进行1,因为不能相邻 AC:…...

【Spring Boot】统一异常处理
目录 统一异常处理一. 概念二. 全局异常处理三. 处理特定异常 统一异常处理 一. 概念 其实统一异常是运用了AOP(对某一类事情的集中处理)的思维,简单概括就是在我们进行前后端数据交互的时候,抛出的任何的异常都能够自动捕获然后…...

java —— tomcat 部署项目
一、通过 war 包部署 1、将项目导出为 war 包; 2、将 war 包放置在 tomcat 目录下的 webapps 文件夹下,该 war 包稍时便自动解析为项目文件夹; 3、启动 tomcat 的 /bin 目录下的 startup.bat 文件,此时即可从浏览器访问项目首页…...

数据库的优点和缺点分别是什么
数据库作为数据存储和管理的核心组件,具有一系列显著的优点,同时也存在一些潜在的缺点。以下是对数据库优点和缺点的详细分析: 数据库的优点 数据一致性:数据库通过事务管理、锁机制、并发控制等技术手段,确保多个用户…...

考研数学暑期规划|50天吃透1000+660!
1000660这个组合当然可以 只不过1000的难度并不适合大多数人,很多同学跟的是张宇老师,但是最后却因为张宇1000题太难而改用其他的习题册比如880或者严选题之类的 当然,如果你的目标分数是120,可以去做1000题,因为100…...

GPT-5 一年半后发布?我们可能所受影响与应用领域
前言: IT之家6月22日消息,在美国达特茅斯工程学院周四公布的采访中,OpenAI首席技术官米拉穆拉蒂被问及GPT-5是否会在明年发布,给出了肯定答案并表示将在一年半后发布。此外,穆拉蒂在采访中还把GPT-4到GPT-5的飞跃描述…...

CSS上下悬浮特效
要实现一个上下悬浮的特效,可以使用CSS的keyframes规则和动画属性。以下是一个简单的示例: 代码示例 /* 定义一个名为floating的动画 */ keyframes floating {0% {transform: translateY(0); /* 初始位置 */}50% {transform: translateY(-4px); /* 向上…...

Knife4j的原理及应用详解(三)
本系列文章简介: 在当今快速发展的软件开发领域,API(Application Programming Interface,应用程序编程接口)作为不同软件应用之间通信的桥梁,其重要性日益凸显。随着微服务架构的兴起,API的数量…...

Android约束布局的概念与属性(1)
目录 1.相对定位约束2.居中和偏移约束 约束布局(ConstraintLayout)是当前Android Studio默认的布局方式,也是最灵活的一种布局方式。约束布局推荐使用所见即所得的模式进行布局,约束布局的大部分布局可以通…...

阿里巴巴开源自然语音交互框架;在抱抱脸上使用LivePortrait;58种提示技术的工具库
✨ 1: FunAudioLLM FunAudioLLM是一个为人类和大型语言模型(LLMs)之间自然语音交互打造的语音理解和生成基础框架。 FunAudioLLM 是阿里巴巴集团Tongyi SpeechTeam推出的用于增强人类与大语言模型(LLM)自然语音交互的框架。该框…...