图数据建模:关于超级节点的一切

CS244W: Machine Learning with Graphs (4) ——网络中的社区结构 一、网络和社区 我们通常认为网络的结构是这样的: 那么是什么导致了这样的预期呢? 网络中的数据流是如何流动的? 不同结构的节点扮演了什么怎样不同的角色? 不同的链接(长与短)又分别扮演了什么怎样不同的角色? 在1960年Mark Granovetter对人们通过人际关系获取信息的研究中发现,人们通常经由不那么熟悉的人的介绍来获取工作。为什么这样的介绍人会比熟人更有帮助? 关于友谊关系的两个观点: 结构上,友谊关系遍布网络的不同部分 在人与人交往时,友谊不是弱就是强 而结构上,如果两个人都有一个共同的朋 阅读详情

图数据建模:关于超级节点的一切

译者:Shiny 亮小猪

作者:David Allen

原文:https://medium.com/neo4j/graph-modeling-all-about-super-nodes-d6ad7e11015b

本文是“图数据建模进阶”系列文章中的最新一篇,其他文章包括处理键、关系和分类变量。

今天我们将讨论超级节点,它们是什么,它们引起的问题以及如何处理它们。本文是对这些问题以及它们如何具体涉及到 Neo4j 的一个摘要和总结。

在这里插入图片描述

让我们开始吧。

什么是超级节点?

超级节点是碰巧有很多关系的节点。有多少关系?好吧,这并没有真正的定义,所以我们称之为很多。如果一个节点比其他节点具有更多的关系,相对于图中的其他内容,称它为超级节点是公平的。到底多少关系是太多了?这确实也是一件主观的事情,因为每个人都在使用具有不同内存配置的机器和写出不同查询模式的语句。

在这里插入图片描述

发现超级节点并不难。如果你正在可视化一个图,你看到了一个“毛线团”,那么这些密集连接的节点,它们看起来就像连接到了所有节点,它们可能就是超级节点。

在极端情况下,你甚至无法可视化超级节点,因为如果你真的在一个节点上有数百万个关系,那么可视化看到的将只是一团黑色,重叠的线条太多,无法真正看到任何东西。

超级节点是如何产生的?

有两个关键的原因:它们可能来自你正在建模的业务领域,或者来自你对该领域建模的方式。

业务领域本身:那些密集连接的网络

想象一下,我们将 Twitter 或微博建模为一个图,其中包含彼此关注的账户之间的关系。我们知道热门账户有很多粉丝,所以在这种图结构中,Lady Gaga 的节点将有超过 8200 万的关系。这非常超级,因为大多数普通用户只有 700 名粉丝。

在这里插入图片描述

密集连接网络的另一个例子可能是(:Flight)-[:DEPARTED_FROM]->(:Airport)。亚特兰大的哈茨菲尔德-杰克逊机场(JFK)每年可以轻松完成超过 200,000 次航班。这是很多的 -[:DEPARTED_FROM]-> 关系。

许多其他业务领域都有丰富的示例:

  • 经营很久的大型企业银行账户,每天进行数百或数千笔金融交易 (:Account)-[:TRANSFER]->(:Account)。
  • 其他社交网络,例如你可能在 LinkedIn 上认识的那些技术招聘人员,他们似乎拥有无数联系人。

领域建模方式:过度使用分类变量

在之前的一篇文章中,我写了关于分类变量并在 Neo4j 中对其进行建模的文章。分类变量只是一个可以接受少量值的属性。变量的“基数”是指它可以有多少不同的值。

示例:假设你将客户填写的性别字段建模为单独的节点。它是低基数,因为唯一的选项可能是男性、女性、未指定和其他。现在假设你有 100 万个客户帐户,那么我们可以确定,如果你将图建模为(:Customer)-[:GENDER]->(:Gender),(:Gender)节点将会是超级节点。

性别只是一个例子,这是一个将低基数变量建模为节点的普遍问题,尤其当你有一个包含数百万个节点的大型图需要引用该变量时。想象一下,亚马逊/淘宝只使用了少量产品类别(比如“家居园艺”、“电子产品”、“健康保健”),并将其数以千万计的产品都连接到一个类别节点 —— 同样的情况出现了。

数据量已超出模型

通常,你将拥有一个适用于小型数据集的简单图数据模型,但你可能无法立即进行扩展以支持完整的生产数据,或者后续总数据集随时间的增长。想象一下客户/性别示例,拥有 1,000 名客户并不是什么大不了的事,但可能是 1000 万名客户时的障碍。同样,Lady Gaga 的账户在 2013 年对 Twitter 来说可能不是问题,但那是几亿用户之前的事了。

在建模中,请注意超级节点问题来自基数不匹配。如果每个产品都需要一个类别,并且产品的基数是 2000 万,而类别的基数是 12,那么这种巨大的不匹配可能会产生与类别一样多的超级节点。(:X)-[:RELATED_TO]->(:Y)在 X 和 Y 的基数不匹配的任何地方都可以看到相同的模式。

如果数据量已经超出现有的模型,是时候重构数据模型了。

为什么超级节点不好?

问题在于它们分叉的速度有多快,而给了我们太多需要考虑的路径。简而言之,一棵树的叶子很容易找到树干,树干则更难找到一片叶子。让我们看看超级节点损害读取性能的一些方式。

炸毁你的遍历

假设你编写了这样的 Cypher 查询:

MATCH (bob:TwitterUser { name: "bob" }) 
WITH bob 
MATCH p=(bob)-[:FOLLOWS*]-(:TwitterUser { name: "karla" })
RETURN p

这要求 Bob 和 Karla 之间的所有路径。如果有人关注 Lady Gaga,这个查询将是一场灾难,因为为了让 Neo4j 回答这个查询,它必须扩展到可能有 8000 万个其他帐户。通往 Karla 的路径数量将爆炸式增长。Bob 和 Karla 可能都住在纽约市,但请放心,此查询将需要查看 Gaga 的每个立陶宛和韩国粉丝(以及他们的所有粉丝,以及他们粉丝的粉丝等),以便返回结果。

在这里插入图片描述

减慢其他读取的速度

另一个问题是关系过滤。Neo4j(从 4.1 版开始)不支持关系属性的二级索引。想象一个查询来查找 Gaga 在 2020 年获得的所有粉丝。

MATCH (gaga:TwitterUser { name: 'ladygaga' })<-[r:FOLLOWS]-(u:User) 
WHERE r.date > date('2020-01-01') 
RETURN u.name, u.followers

此查询必须考虑所有超过 8000 万个关系,因为你无法索引关系上的date数据类型。当你需要在多个步骤的路径上使用关系过滤时,这会变得更重要,其中任何潜在的步骤都可能通过超级节点运行。

减慢写入速度

从 Neo4j 4.1 开始,当你使用MERGE在图中建立关系时,它会暂时锁定该事务的起始节点和目标节点。这对 Lady Gaga 来说非常糟糕,因为当她的下一张专辑发行时,我们会一直想为她建立新的[:FOLLOWS]关系。当我们添加新的关系时,她(在几分之一秒内)被锁定了而不能被世界其他地方的人关注,这将在她的国际粉丝群中引起问题。

如果你想跟进更多细节,DZone 上的这篇文章涵盖了性能影响的其他一些有趣方面。

并不总是世界末日

在某些情况下,超级节点可能无关紧要。

  • 如果超级节点位于路径的尽头,而你没有遍历它,则不会产生太大影响。
  • 如果超级节点不是高交易率查询或多用户更新的一部分,它可能是无害的。

好的,那我们该怎么办?

这是一点点艺术和一点点科学 —— 对你来说最好的答案是取决于你的业务领域,但这里有一个技术工具箱,可以充分利用好你的图。这些技术从简单到困难排序。

  • 关系的方向性
  • 连接提示
  • Lucene 关系索引
  • 标签和关系分离
  • 超级节点重构

我们将详细介绍其中的每一个,但实际上它们都归结为两类方法 —— 要么帮助数据库在运行查询时考虑更少的关系(这使得超级节点不那么超级),要么尝试分解或首先消除超级节点。有些技术是两者的结合。当然请记住:你不必只选择一种方法,你可以随意混合搭配。

关系方向性

Cypher 让我们可以将路径表示为无向 (:User)-[:FOLLOWS]-(:User) 或有向 (:User)-[:FOLLOWS]->(:User)。请始终使用有向路径,因为它减少了查询必须考虑的关系数量。

你可以利用你对超级节点的方向性的了解。Lady Gaga 有 8000 万粉丝(即入度),但她只关注了 121,000 个帐户(出度)。实际上,当你看到这一点时,她关注了这么多人真是太疯狂了,但是 —— 这两个查询之间存在巨大差异:

(:User)-[:FOLLOWS]-(:User { name: "ladygaga" }) (8000 万以上的关系)

(:User)<-[:FOLLOWS]-(:User { name: "ladygaga" }) (121,000 个关系)

在这里插入图片描述

连接提示

在这篇知识库文章中,Andrew Bowman 阐述了如何使用 Cypher 的连接提示(Join hints)来约束 Cypher 如何进行图遍历。如果你知道你的图中有一些超级节点,你可以使用这个技术来确保 Neo4j 的查询引擎不会遇到那个遍历问题。

与其对整篇文章进行总结,这里是关键部分,简要说明了它的工作原理:

MATCH (me:Person {name:'Me'})-[:FRIENDS_WITH]-(friend)-[:LIKES]->(a:Artist)<-[:LIKES]-(me) 
USING JOIN on a 
RETURN a , count(a) as likesInCommon

这种写法中 USING JOIN ON a 确保 Cypher 只能遍历到 :Artist 节点,永远不会穿过或离开它。如果所讨论的艺术家是拥有 8000 万粉丝的 Gaga,这将是一个很好的技巧。

有关此技术的更多信息,请查看 Cypher 手册的规划器提示部分。

Lucene 关系索引

在前面的部分中,我说过 Neo4j 不支持关系属性索引。这几乎是真的。实际上有一种特殊情况。可以使用 Lucene 来索引关系上的文本属性。

参考此文档,你可以像这样调用:

CALL db.index.fulltext.createRelationshipIndex("taggedByRelationshipIndex",["FOLLOWS"],["date"], { finally_consistent: "true" })

假设 :FOLLOWS 关系上的 date 属性是一个字符串,你可以使用它来过滤关系(利用索引),这在某些有限的情况下可以帮助解决问题。这本身并不是解决超级节点问题的灵丹妙药。因为将日期视为字符串以使其工作并不是很好。

标签和关系分离

解决超级节点问题的另一种方法是,各个密集连接的节点(如 Lady Gaga)看起来与图的其余部分一样,但实际上它们是特殊情况。推特上的大多数人(咳咳)没有 8000 万粉丝。因此,我们可以通过不同的标签将超级节点从图中分离出来。如果我们引入新标签会怎样?

在这里插入图片描述

  • (:TwitterUser)对于像我这样的普通人。
  • (:Celebrity)或(:VerifiedUser)对于超级账号。

这将使我们的遍历更加容易,因为如果我们愿意,我们仍然可以指定遍历所有节点,但是如果他们被标记不同,我们可以轻松地在遍历中排除名人。

关系也是如此 —— 我们可以对关系进行不同的标记,而不是对节点进行不同的标记:-[:FOLLOWS]-> 表示普通用户与用户的关系,而使用 -[:FAN]-> 表示对名人的无回报关系。

注意这对我们之前的查询示例做了什么:

MATCH p=(:TwitterUser { name: "bob" })-[:FOLLOWS*]-(:TwitterUser { name: "karla" })
RETURN p

如果我们引入了 [:FAN] 关系,突然间这个查询看起来就非常非常不同,因为我们不需要考虑 Lady Gaga。如果出于某种原因我们确实想要包括她,那么更改也是微不足道的:

MATCH p=(:TwitterUser { name: "bob" })-[:FOLLOWS|FAN*]-(:TwitterUser { name: "karla" })
RETURN p

区别很简单: -[:FOLLOWS|FAN*]->。

但是,这种方法的一个缺点是它仅适用于自然密集连接的领域。如果我们的问题是一个分类变量,如(:Gender),你无法用这种方法摆脱这个问题。(:Celebrity)它起作用的原因是因为我们可以从更大的图中分离出一小部分。(:Gender)当所有节点都是超级节点时,这将不起作用。

超级节点重构

可能最难的方法是重构你的图以将单个超级节点分解为多个节点。你可以拿走 Lady Gaga 的单个节点并将她分成 1,000 个 Gaga 副本。创建一系列等价关系,即 (gaga1:TwitterUser)-[:SAME_AS]->(gaga2:TwitterUser),然后制定一个策略,在 1,000 个“Gaga 克隆”之间分配您的应用程序关系。

这是最后的策略。

不过,它只会对某些查询模式有所帮助,原因如下:

  • 如果查询需要了解有关 Gaga 的所有信息,则需要重写查询以便能够考虑SAME_AS关系,而不仅仅是触及该节点的本地克隆。
  • 如果你需要穿越 Gaga,你还是回到了同样的境地;在遍历所有克隆之后,根据查询,您最终仍会获得 8000 万以上的总基数。
  • 选择和实施一种策略来分配“Gaga 克隆”之间的关系并保持平衡,以使其中一个克隆不会逐渐成长为自己的超级节点,因为 Gaga 会随着时间的推移吸引更多粉丝,因此更加复杂。

结论

总结所有这些情况和方法,以下是需要记住的关键点:

  • 超级节点是那些在图中紧密连接的节点,即相对于图中的平均关系数量而言,具有非常多的关系。
  • 超级节点很糟糕,因为它们会损害读写性能。
  • 超级节点来自几个不同的地方,但大多数通常来自业务领域的自然复杂性和建模方式。
  • 你在工具箱中有许多不同的工具来解决这个问题,对于高级图数据建模,你肯定需要注意这个问题,以便从图中获得最佳的性能。

快乐的图黑客!

本文是系列文章的一部分;如果你发现它有用,请考虑阅读:有关标签、关系、超级节点和分类变量的其他内容。

【图数据库与知识图谱入门】4.2 图数据建模的基本原则(完善版) 本文系统梳理了图数据建模的六大核心原则,并基于Neo4j提供了电商场景的实战代码示例。建模原则包括:以业务需求为核心、最小化实体与关系、合理区分节点与属性、关系显式化、语义化命名规范和适当冗余。通过Cypher语言实现了用户-商品-订单-品类等核心节点的创建,以及BUY、CONTAIN等显式关系的建立,完整演示了从理论到实践的建模过程。文中特别强调了关键避坑点,如区分节点与属性、关系必须显式化等,并提供了可直接执行的代码验证建模效果。 阅读详情

相关推荐

GraphX 图数据建模和存储

背景简单分析一下GraphX是怎么为图数据建模和存储的。入口可以看GraphLoader的函数,def edgeListFile( sc: SparkContext, path: String, canonicalOrientation: Boolean = false, numEdgePartitions: Int = -1, edgeS

张包峰的博客 7705

论文笔记——通过图卷积网络识别网络中的复杂节点

通过图卷积网络识别网络中的重要节点 识别网络中的重要节点一直以来是一个热门话题。收到图卷积网络的启发,本文将节点的影响力识别转换为一个回归问题。通过考虑网络的邻接矩阵和卷积神经网络,提出了RCNN方法,来更高效率的识别网络中有影响力的节点。整体思路如下:为每个节点产生一个特征矩阵,用卷积神经网络训练、预测节点的影响力。 1 背景知识 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 1.1、卷积神经网络 1.2、图

qq_37730871的博客 1971

Neo4j图数据库的节点与关系操作技巧

在当今大数据时代,数据之间的关系变得越来越复杂。传统的关系型数据库在处理复杂关系数据时往往显得力不从心,而图数据库则应运而生。Neo4j作为一款流行的开源图数据库,它以图的方式存储数据,能够高效地处理节点之间的复杂关系。例如,在社交网络中,用户之间的好友关系、关注关系;在知识图谱中,实体之间的语义关系等,使用Neo4j可以轻松地对这些关系进行建模和查询。掌握Neo4j图数据库的节点与关系操作技巧,对于开发人员、数据分析师等来说至关重要,它可以帮助我们更高效地存储、管理和分析复杂关系数据。

2502_91592937的博客 1万+

机器学习常用算法(一)R树的原理

R树是树的数据结构用于空间的访问方法,即索引多维信息等地理坐标,矩形或多边形。R树是由安东宁Guttman提出的在1984[ 1 ]已发现在理论和应用 的环境中大量使用。[ 2 ]一个树常见的实际使用情况可能是存储空间的物体如餐馆的位置,或者说典型的地图是由多边形:街道,建筑,湖泊,海岸 线的轮廓,并找到答案,快速查询如“找到所有的博物馆在我的当前位置”2公里,“在我的2公里位置检索所

chesian的专栏 5549

图像数据库基于内容检索的索引方法研究 (2006年)

为了提高图像数据库的检索效率,必须提高高维索引的效率.通过对SR-tree和X-tree的结构和性能分析,引入X-tree中超级节点的思想,改进了分裂算法,设计了一种新的高维索引结构ESR-tree(Extended SR-tree).ESR-tree采用超矩形和超球形相结合的包络方法,在节点结构中引入超级节点.通过改进插入和分裂算法,有效降低了重叠率,避免了不必要的分裂,更好地维持树的平衡.同时有效降低了CPU时间和I/O次数,提高了检索效率.实验表明,随着数据量和维数的增多,ESR-tree的性能明显

BeikeShop跨境电商独立站系统V1.5.0免授权全开源版

BeikeShop 一款开源好用的跨境电商系统,BeikeShop 是基于 Laravel 开发的一款开源商城系统,主要面向外贸/跨境电商行业提供商品管理、订单管理、会员管理、支付、物流、系统管理等功能。BeikeShop商城 Beike多语言商城 多货币商城B2C商城系统 代码100%开源 PHP商城系统 H5/PC商城 跨境电商系统 跨境商城系统 电商商城系统 Laravel 9 框架插件化开发,MVC架构 支持插件市场。Event 机制实现Hook功能,自定义可视化装修。

817

知识图谱:属性图数据模型与Cypher查询语言

属性图数据模型 属性图模型简介 属性图模型是一种不同于RDF 三元组的一种图数据模型 这个模型由点来表示现实世界中的实体,由边来表示实体与实体之间的关系。同时,点和边上都可以通过键值对的形式被关联上任意数量的属性和属性值 在这种图模型中,关系被提到了一个和实体本身一样重要的程度 从形式化的角度来看,属性图模型包含三种元素组成:值、图和表。 语法细节参考 属性图模型的符号列表 属性图模型组成元素:值 属性图模型组成元素:图 属性图模型组成元素:表 Cypher查询语言 简介 Cypher语言中

u014300149的博客 8000

嵌入式铁头山羊stm32-GPIO的四种输入模式-Day5

本文详细解析了GPIO的输入结构和工作原理,包括上拉/下拉模式、悬空设计、保护二极管机制等关键内容。重点阐述了不同输入模式下电流流向与电压变化,解释了上拉/下拉电阻、施密特触发器、保护二极管等元件的作用。特别对保护二极管的工作机制进行深入分析,说明其在过压/欠压时的钳位保护功能。同时解答了关于电压差、电流方向、负电压等常见疑问,并强调GPIO设计的灵活性(可配置上拉/下拉/悬空)是为了适应不同外设需求。全文通过电路分析和生活类比,帮助读者理解GPIO输入电路的工作原理和设计考量。

古泽汉书的博客 1965

一种针对图数据超级节点的数据建模优化解决方案

一种针对图数据超级节点的数据建模优化解决方案一种针对图数据超级节点的数据建模优化解决方案一、超级节点1.1 超级节点概念1.2 从图数据网络中寻找超级节点二、与超级节点相关的关键问题案例三、模拟超级节点3.1 服务器资源3.2 构建模拟数据的图数据模型3.3 模拟超级节点的数据规模四、超级节点建模优化4.1 关系结构优化方案4.2 标签细分遍历图可减少节点规模五、增删改操作优化5.1 服务器优化5.2 图库配置优化5.3 JVM调优5.4 批量操作5.5 服务器端操作文件六、检索效率提升6.1 查询优化6.

马超的博客 1320

最小二乘法(看完即会)

其中,X是数据矩阵,每一行是一个数据点,每一列是一个自变量(包括截距项),Y是观测值向量,β是待求的系数向量。为了找到使S最小的a和b的值,我们需要对S求关于a和b的偏导数,并令它们等于零。最小二乘法的数学公式通常用于线性回归问题,其中目标是找到一条直线(或更高维度的超平面),使得这条直线与给定数据点的误差平方和最小。同样地,通过求偏导数和令偏导数等于零,我们可以得到一个线性方程组,解这个方程组可以找到最优的b_0, b_1, …+ b_m*x_m,其中b_0是截距,b_1到b_m是各个自变量的系数。

qlkaicx的博客 2万+

C++ 图像线特征提取(CannyLine算法+opencv3.4.6)

C++ 图像线特征提取(CannyLine算法+opencv3.4.6)

weixin_43896283的博客 1084

阶段一-图数据库基础与PropertyGraph模型

本文摘要: 知识图谱与图数据库本质不同:知识图谱是知识表示方法,图数据库是存储查询引擎。知识图谱以实体关系为核心,适合表达网状知识结构,相比传统关系数据库和文档存储具有显著优势。 图数据库基于数学图论,将数据抽象为节点(Node)和关系(Relationship)组成的网络。Property Graph是最主流的图数据模型,包含四个核心元素: 节点(Node)表示实体,是基本存储单元 标签(Label)作为节点分类机制,支持多标签分类 属性(Property)以键值对形式存储详细信息。

weixin_51955414的博客 466

解决:请求的资源[/xxx/]不可用 描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。

解决:请求的资源[/xxx/]不可用 描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。

念兮为美 1万+

图数据库超级节点建模优化实战

图数据库超级节点建模优化实战 《针对图谱超级节点的一种优化解决方案 》,在这篇文章中设计了针对图数据库中超级节点的一系列优化方案。下面介绍一个实战操作。对于地域相关的数据进行建模优化。ps:所有实战操作都基于ongdb进行。 此实战优化操作,核心在于针对地域数据设计了一套标签体系,使得CYPHER更加具有表达力。从而更易于提升查询的性能。 一、MySQL模型 关系数据模型到图模型的设计,可以看到图模型更加富有表达力接近于人的思维。 二、图数据本体建模 可以看到通过标签体系的富化之后,本体模型

马超的博客 1288

杰理JL701N V142的SDK实现双备份自定义OTA教程和代码分享

摘要 本文档详细介绍了基于JL701N SDK的UART OTA升级功能开发方案。该方案采用双备份(Dual Bank)机制,通过串口实现安全可靠的固件远程更新。核心特性包括:1) 双备份升级机制确保升级失败可回滚;2) CRC-16/XMODEM校验保障数据完整性;3) 灵活的传输控制,支持自定义波特率和数据包大小。文档提供了完整的系统架构、API接口说明、通信协议规范以及移植指南,适用于生产烧录、现场升级等多种场景。配套Python升级工具简化了升级流程,使开发人员能够快速实现固件更新功能。

qq_42014563的博客 274

6、高通8155座舱平台--摄像头系统

在项目中遇到过,很多从手机转过来的工程师,上来就按手机那套调Camera,结果发现根本跑不通——为什么?我踩过这个坑——一开始想靠软件打时间戳来对齐,结果发现两个sensor的曝光时间不一样,时间戳根本对不上。我记得第一次调AWB时,怎么调颜色都不对,后来发现是BLC的参数没配好——黑电平偏了,后面所有颜色校正都是错的。上层应用说「我要拍张照」,HAL把它翻译成「ISP你给我处理这帧数据,sensor你给我曝光一次」。8155上推荐用camx,它是高通新一代的Camera框架,性能更好,而且支持多路同步。

woailuojp的博客 56

图数据库的基本使用方法详解

文章摘要 本文系统介绍了图数据库的核心概念、技术特点及应用场景。图数据库以节点、关系和属性高效表达复杂网络关系,适用于社交网络、推荐系统等领域。重点讲解了Neo4j等主流图数据库的数据建模方法,包括Cypher查询语言的基本操作和复杂查询示例,并提供了Python连接Neo4j的代码实现。通过社交网络建模实例,展示了图数据库在关系遍历与推荐算法中的优势,为开发者提供从入门到实践的完整指南。(148字) 关键词:图数据库、Neo4j、Cypher、数据建模、复杂查询

百锦再的博客 1571

OpenOCD入门到精通:第28章 综合实战:RISC-V 调试

RISC-V调试实战摘要 本文介绍了RISC-V调试规范及其在OpenOCD中的实现。主要内容包括: RISC-V Debug规范的两个版本(0.11和0.13)及其差异,OpenOCD通过自动检测DTMCS寄存器版本号选择对应驱动实现。 RISC-V调试架构的分层设计,包含DTM、Debug Module、Program Buffer等核心组件,以及三种内存访问方式(progbuf、sysbus、abstract)。 以GD32VF103为例的实战调试配置,包括硬件连接、OpenOCD配置文件编写和GDB

从事嵌入式linux android驱动开发,拥有全栈能力 282

图数据库重要节点建模:从业务问题到Neo4j实践

在知识图谱、社交网络与反欺诈等场景中,图数据库以节点和关系表达实体关联,通过遍历替代传统JOIN,解决多跳查询性能瓶颈。然而,建模初期若未能识别真正的核心节点,后续Cypher查询与性能优化将失去稳定基础。节点不是数据表的简单映射,而是需贴合业务问题、具备唯一性约束并支撑路径分析的实体。本文从图模型基础原理出发,阐述节点与属性的边界、核心实体的识别方法,并结合Neo4j与Cypher演示从约束创建、数据写入到多跳查询的完整流程,帮助开发者建立可扩展、可维护的图数据模型。

weixin_33910137的博客 461

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Graphene图数据建模工具

Graphene图数据建模工具Graphene图数据建模工具一、Graphene是什么?二、谁可以使用它?三、为什么需要这样的工具?四、核心功能五、演示界面六、如何使用? Here’s the table of contents: Graphene图数据建模工具 一、Graphene是什么?     Graphene是一个可视化WEB端工具,主要做属性图数据建模、图结构设计!可以协助数据工程师管理与迭代图数据模型版本,支持数据模型的分享与协作;可以构建逻辑图谱、设计

马超的博客 1488

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

图数据建模基础

图数据建模基础

分享学习路线、运维调优与故障等解决方案 921

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Neo4j和py2neo进行图数据库的数据建模和查询

图数据库是一种非关系型数据库,它使用图结构存储数据,主要用于处理复杂的关系网络。图数据库主要由节点(Node)、关系(Relationship)、属性(Property)构成。节点可以代表实体,关系则描述节点之间如何相互关联。

2401_82881413的博客 2061

neo4j 删除某个节点_图数据库Neo4j数据建模系列(二) — 数据建模准则

如果您曾经使用过对象模型或实体关系图,则带标签的属性图模型看起来会很熟悉。图数据建模是用户将任意域描述为节点的连接图以及与属性和标签的关系的过程。Neo4j图形数据模型旨在以Cypher查询返回子图,并通过为图数据库组织数据结构来解决业务和技术问题。一、图数据模型=白板友好图数据模型通常被称为“白板友好型”。通常,在设计传统的数据模型时,人们在白板上绘制示例数据,并将其与绘制的其他数据连接以显示不...

weixin_39822423的博客 456

数据库技术栈 —— 图数据库HugeGraph入门

开篇不说废话,实际上手后,我认为百度开源并后续放弃维护转由社区维护的HugeGraph改进空间十分巨大,话里意思自己体会,原因可以看这个视频,图不是伪需求,但为此硬要搞一些丑陋的实现就绝对是造方轮子,把知识图谱等同于图数据库绝对是错上加错。

键盘国治理专家的博客 937

大数据时代建模——图数据库建模

导读:云计算环境下,传统关系型数据库在大数据库建模、海量数据存储方面存在瓶颈,对树形结构与半结构化数据的建模比较困难。本文介绍一种全新的建模方式——图数据库建模。应用图数据库模型更具扩展性、灵活性、高可靠性和高性能,能建立高细粒度的数据模型,非常适合复杂关系的建模和推理,有较高的实用价值。

创邻科技 1787

Apache HugeGraph实战教程:10分钟学会图数据建模

Apache HugeGraph是一款开源的**分布式图数据库**,支持存储和管理百亿级别的图数据,具备高性能和可扩展性。本教程将带您快速掌握图数据建模的核心概念和实践方法,让您在10分钟内学会如何设计高效的图数据结构。✨ ## 什么是图数据建模?🤔 图数据建模是将现实世界中的复杂关系抽象为**图结构**的过程。在图数据库中,数据以**节点(Vertex)**、**边(Edge)**和**属

gitblog_00796的博客 994
上一篇: Neo4j 中文开发者月刊 - 202208期
下一篇: Neo4j 中文开发者月刊 - 202209期
Neo4j 开发者
博客等级 码龄5年 300粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值