Neo4J - 存储到关系与节点中

2024-03-17

我想知道将数据存储到关系或节点中是否有任何优点或缺点。

例如,如果我要将与讨论相关的评论存储到数据库中,我应该将评论数据存储在“评论”关系中,还是通过单独的关系存储在与讨论相关的“评论”节点中。


正确的数据模型取决于您需要进行的查询类型。您应该弄清楚您的查询是什么,然后确定满足这些条件的数据模型:

  1. 它可以回答您所有的疑问,
  2. 它允许您的查询足够快地完成,
  3. 它最大限度地减少了所需的数据库存储。

对于讨论评论,您可能想要查询按时间顺序排列的讨论线程。因此,您不仅需要存储发表评论的时间,还需要存储评论之间的关系(因为讨论可能会产生不相交的线程,这些线程不共享相同的先前评论)。

让我们尝试一个简单的测试用例。假设有 2 个不相交的线程由同一个初始注释(我们将其称为c1): [c1, c3] 和 [c1, c2, c4]。假设在这个简单的测试用例中,我们只对查询与某个主题相关的所有评论线程感兴趣。

如果评论属性存储在节点中,则数据可能如下所示:

(u1:User {name: "A"})-[:MADE]->(c1:Comment {time:0, text: "Fee"})-[:ABOUT]->(s1:Subject {title: "Jack"})
(u2:User {name: "B"})-[:MADE]->(c2:Comment {time:1, text: "Fie"})-[:ABOUT]->(c1)
(u3:User {name: "C"})-[:MADE]->(c3:Comment {time:3, text: "Foe"})-[:ABOUT]->(c1)
(u4:User {name: "D"})-[:MADE]->(c4:Comment {time:9, text: "Fum"})-[:ABOUT]->(c2)

如果您将评论属性存储在关系中,您可能会尝试类似以下的操作,但存在一个很大的缺陷。一个关系无法直接指向另一个关系(正如我们在第 2 行到第 4 行中尝试做的那样)。由于该模型在 Neo4j 中不合法,因此它无法满足上述任何标准。

(u1:User {name: "A"})-[c1:COMMENTED_ABOUT {time:0, text: "Fee"}]->(s1:Subject {title: "Jack"})
(u2:User {name: "B"})-[c2:COMMENTED_ABOUT {time:1, text: "Fie"}]->(c1)
(u3:User {name: "C"})-[c3:COMMENTED_ABOUT {time:3, text: "Foe"}]->(c1)
(u4:User {name: "D"})-[c4:COMMENTED_ABOUT {time:9, text: "Fum"}]->(c2)

因此,在我们的简单测试用例中,将属性存储在节点中似乎是唯一的选择。

这是一个获取不相交线程路径的查询,包括发表每个评论的用户(WHERE子句过滤掉部分线程):

MATCH p=(s:Subject)<-[:ABOUT*]-(c:Comment)<-[m:MADE]-(u:User)
WHERE NOT (c)<-[:ABOUT]-()
RETURN p
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Neo4J - 存储到关系与节点中 的相关文章

  • neo4j中如何删除多个节点

    如何在neo4j中删除多个节点 不是全部 我有这个查询MATCH n where n name IS NULL delete n 它返回多个节点 我想删除所有这些节点 所有节点 这些节点是错误创建的 这就是为什么变成空 我面临的错误是 ja
  • 检查neo4j图中是否存在节点

    NOTE 我让这成为几个问题 而不是我问的简单问题 所以我将后续问题分解为他们自己的问题here https stackoverflow com questions 22867148 creating unique relationship
  • 无法将 Neo4j GORM 插件添加到 Grails 项目

    我想在我的 Grails 项目中使用 Neo4j 图形数据库 我创建了一个新的 Grails 项目 我使用的是 Intellij Ultimate Edition 该应用程序运行良好 当我尝试在 BuildConfig groovy 中添加
  • Gremlin 删除所有顶点

    我知道如何在 Gremlin 中通过 id 删除顶点 但现在我需要清理数据库 如何删除多个顶点 删除1v是这样的 ver g v 1 g removeVertex ver 我的意思是类似SQL的东西TRUNCATE 如何在不删除类的情况下删
  • 按关系属性排序 neo4j

    使用 Neo4j 1 9 3 我想创建一个音乐节目列表 在给定的节目中可能会表演三段 每件作品都有一个与之关联的作曲家 并且可能出现在许多不同的程序中 因此我无法在作品节点上放置序列号 我假设我可以创建该程序 其与每个部分的关系如下所示 p
  • 编写 Cypher 查询来创建随机节点之间的链接

    为了建立数据库 我想创建一小组 Person 节点 WITH Amy Bob Cal Dan Eve AS names FOREACH r IN range 0 size names 1 CREATE Person name names r
  • Neo4j:传统索引和自动索引与新标签库模式索引

    我目前正在寻找索引数据的最佳方法 从我的角度来看 有以下三个选项 1 遗留索引 索引管理器 API 2 自动索引 neo4j properties node auto indexing true ode keys indexable nam
  • 如何从 py2neo 获取自动节点 ID?

    我正在使用 py2neo 3 1 2 版本和 Neo4j 3 2 0 我有一个问题 在 Neo4J 的 Web 界面上 我可以运行以下查询来获取节点 id MATCH n Person RETURN ID n 我想知道 py2neo API
  • 使用 py2neo 在 neo4j 上查询写入性能

    目前 我正在努力寻找一种高性能的方法 使用 py2neo 运行多个查询 我的问题是 python 中有一大堆需要写入 neo4j 的写入查询 我现在尝试了多种方法来解决这个问题 对我来说最好的工作方法如下 from py2neo impor
  • Neo4j聚合函数

    我正在尝试使用SUM函数并将其结果存储为关系的新属性 但它不起作用 我使用的查询是 MATCH a Employee r CorporateMessage gt b WHERE a Eid 6001 AND b Eid IN 6002 60
  • neo4j 在从 csv 导入期间指定数据类型

    有没有办法在导入时告诉neo4j值的类型 例如 neo4j 是否知道 2015 0104T10 33 44 是日期还是字符串 thanks Neo4j 使用 Java 原始类型 字符串或数组作为属性值 没有日期类型 所以 2015 0104
  • Neo4j 客户端使用“DateTime?”展开

    我目前正在尝试展开具有 日期时间 的 TravelEdges 列表 但我不断收到以下错误 CypherTypeException 类型不匹配 需要一个地图 但是字符串 2018 05 21T08 38 00 我目前正在使用最新版本的 neo
  • 核心数据对多关系在将对象添加到父实体时创建重复项

    我是 Core Data 和 Objective c 的新手 我正在开发一个项目 从 Web 服务获取 JSON 数据并将其与核心数据同步 我成功地遵循了这个tutorial http www raywenderlich com 15916
  • JSON 到带有关系的核心数据

    下列的Ray Wenderlich 的新教程 http www raywenderlich com 15916 how to synchronize core data with a web service part 1我能够获取 JSON
  • 使用 py2neo 将 python 连接到 neo4j 时出错

    我使用 py2neo 将以下 python 代码写入 neo4j from py2neo import Graph from py2neo import neo4j Node Relationship sgraph Graph alice
  • Spring Neo4j:通过不同控制台执行时相同的密码查询花费不同的时间

    通过不同控制台执行相同的密码查询会花费不同的时间 通过执行spring data neo4j 花了 8 秒 Query MATCH user User uid 0 FRIEND friend User RETURN friend publi
  • 如何在 Neo4j 遍历的每一步中指定使用哪种关系类型作为当前节点的函数?

    我想使用 neo4j 遍历 API 遍历我的图 但我需要能够指定在每一步使用哪种关系类型 并且要使用的关系类型需要是当前节点的函数 有没有办法做到这一点 在当前的 Traverser API 中 您无法选择要遍历的确切关系 相反 您可以采用
  • spring data neo4j 5 - 没有名为“sessionFactory”的bean可用

    我正在使用 spring data neo4j 5 0 7 RELEASE 和 spring 5 0 6 RELEASE 使用文档中的配置https github com spring projects spring data neo4j
  • 在巨大的数据集上创建独特的节点和关系 NEO4J

    我的问题与这个非常相似 如何通过neo4j中导入的csv文件创建独特的节点和关系 https stackoverflow com questions 25090255 how to create unique nodes and relat
  • 使用 neo4j 建模有序树

    我刚刚开始使用 neo4j 并且了解图形和关系的原理 但是我在想要建模的某些结构方面遇到了一些麻烦 我想在编程语言项目中使用它 并存储已解析源文件的 AST 从那里 我计划向节点添加大量额外的数据和关系 以帮助分析和工具 但基本的 AST

随机推荐

  • iOS6中无法设置UITableViewCell的背景颜色?

    我开始在模拟器下测试我的应用程序 因为我没有任何 iOS 6 设备 并偶然发现了奇怪的问题 我无法设置 UITableViewCell 的 backgroundColor 属性 如果我这样 cell contentView backgrou
  • Windows 窗体线程和事件 - 列表框更新迅速,但进度条经历巨大延迟

    我们的团队正在创建一个新的招聘工作流程系统来取代旧的系统 我的任务是将旧数据迁移到新模式中 我决定通过创建一个小型 Windows 窗体项目来实现此目的 因为架构完全不同 并且直接的 TSQL 脚本并不是一个足够的解决方案 执行此工作的主要
  • Firebase 身份验证 - 电话 -“INVALID_CERT_HASH”

    当我尝试在本地 Android 设备中运行电话身份验证时 出现以下错误 GetAuthDomainTask Error getting project config Failed with E FirebaseAuth 25345 erro
  • 更改 NetBeans 项目中的 JRE

    我有一个使用 JRE 1 4 环境的 NetBeans 项目 这意味着我无法使用泛型 如何更改项目以使用 1 6 以便我可以使用泛型 In the Project选项卡 右键单击该项目并选择特性 在里面Library类别选择Java 平台
  • 在 C# 中更快地调用 PowerShell cmdlet

    我可以使用 C 中的 Powershell cmdlet 从 O365 获取用户详细信息 问题是获取时间 那太慢了 每个用户需要 2 秒 所以如果我有大量用户 就会导致时间问题 在这里我只想打印所有用户的信息 如名称 组详细信息 许可证 我
  • 在类内部使用具有非静态大小的数组

    我想使用一个可以在 4d 数组内为我存储值的类 Matrix 我想用SetSize为了设置的大小Matrix从我的main功能 class Value public int a int b int c int d sets the valu
  • Android 上的 Socket IO 连接失败

    我正在尝试使用 Socket IO Android 和 Node 创建一个简单的聊天 当我运行应用程序并尝试连接到服务器时 它总是因超时错误而失败 我不明白为什么 这是节点代码 app require express http requir
  • 使用 Watin 登录网页

    我尝试在网页上登录 网页上有两个带有输入的表单 输入具有相同的 Id 用户名 我怎样才能获得正确的输入来设置我的文本 这是我的错误代码 browser TextField Find ByName 用户名 TypeText test123 o
  • 如何从 8 位字节转换为 7 位字节(Base 256 到 Base 128)

    如何从 8 位字节转换为 7 位字节 Base 256 到 Base 128 我想做这样的事情 public string BytesToString byte in public byte StringToBytes string in
  • Angular Ag-Grid 无法正确显示

    我正在尝试使用角度Ag Grid https www ag grid com 在我的网络应用程序中 我已经遵循了这些教程 角网格 开始使用 ag Grid https www ag grid com angular getting star
  • Powershell 默认下拉值

    我有一个脚本 用户可以从下拉列表中选择选项 但如果用户没有选择任何内容 我就会收到错误 即使用户未输入值 如何设置返回的默认值 这是脚本 Edit This item to change the DropDown Values array
  • xquery 中的 SUM 和 GROUP BY 以及 1 个 xml 文件

    我有一个 SQL 查询 SELECT ShipVia SUM Freight FROM Orders GROUP BY ShipVia 它从访问数据库返回以下值 Ship Via TotalFreight 1 16 185 33 2 28
  • android - 如何创建可重用的函数?

    在我的 Android 项目中 我有很多活动 其中一些活动已经扩展了其他内容 例如地图活动或 BroadcastReceiver 如何创建一个可以从任何活动调用的函数 因为我不想在多个活动中重复任何代码 thanks 如果我有一些有用的函数
  • Scala 集合已排序、sortWith 和 sortBy 性能

    Scala在标准库中包含了几种用于对列表进行排序的方法 例如对列表进行排序list 可以使用 list sorted list sortWith lt list sortBy x gt x 虽然这些可能是对列表进行排序的最简单方法 但我发现
  • 用于分组 UITableView 的半透明 UITableViewCell?

    我想创建一个半透明分组表视图单元格 换句话说 我想看到分组的表格视图背景图案 但我不想要完全清晰的单元格 我见过很多关于透明单元的问题 但没有一个解决制作半透明 仅部分透明 单元的问题 这就是我正在尝试的 void tableView UI
  • 如何检测内存不足的段错误?

    如何检测段错误是否是由内存不足情况引起的 我有一个段错误 无法通过 valgrind 和 duma efence 进行诊断 因为它似乎使这些工具本身崩溃 Valgrind 不可能的事情发生了 duma mprotect 失败 无法分配内存
  • .sql 文件的存储过程

    SQL 2005 中是否有一个简单的过程可以将我的所有存储过程吐出到单独的 sql 文件中 我想将它们转移到 VSS 中 但我对单击每个文件获取源代码 将其转储到文本文件等的前景感到不太兴奋 在 SQL Management Studio
  • DocuSign 嵌入签名 returnUrl 长度限制?

    在处理 DocuSign 嵌入式签名流程 过去曾有效 时 我注意到在签署文档后 我被发送回的 returnUrl 中缺少 event 参数 returnUrl 看起来像 http www example com index php para
  • 什么是 Android 的 Smali 代码

    我将学习一些有关 Dalvik VM dex 和 Smali 的知识 我已经阅读过有关 smali 的内容 但仍然无法清楚地了解它在编译器链中的位置 以及它的目的是什么 这里有一些问题 据我所知 dalvik 与其他虚拟机一样运行字节码 对
  • Neo4J - 存储到关系与节点中

    我想知道将数据存储到关系或节点中是否有任何优点或缺点 例如 如果我要将与讨论相关的评论存储到数据库中 我应该将评论数据存储在 评论 关系中 还是通过单独的关系存储在与讨论相关的 评论 节点中 正确的数据模型取决于您需要进行的查询类型 您应该