Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用MMAPI移除边后,OrientDB不一致的顶点仍然存在

使用MMAPI移除边后,OrientDB不一致的顶点仍然存在
EN

Stack Overflow用户
提问于 2020-09-23 22:18:38
回答 1查看 55关注 0票数 0

考虑下面的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private void testMMAPIinLab() {
    OrientDB orientDB = new OrientDB("remote:localhost",OrientDBConfig.defaultConfig());
    
    OrientDBConfigBuilder poolCfg = OrientDBConfig.builder();
    poolCfg.addConfig(OGlobalConfiguration.DB_POOL_MIN, 5);
    poolCfg.addConfig(OGlobalConfiguration.DB_POOL_MAX, 10);
    //poolCfg.addConfig(OGlobalConfiguration.RID_BAG_EMBEDDED_TO_SBTREEBONSAI_THRESHOLD, -1);
    ODatabasePool dbPool = new ODatabasePool(orientDB,"lab", "root", "toor", poolCfg.build());
    
    
    ODatabaseSession db = dbPool.acquire();

    db.begin();
    System.out.println("creando el vértice....");
    OVertex v1 = db.newVertex();
    v1.save();
    System.out.println("save rid: "+v1.getIdentity().toString());
    
    OVertex v2 = db.newVertex();
    v2.save();
    System.out.println("v2 save rid: "+v2.getIdentity().toString());

    System.out.println("crear un edge.");
    OEdge oe = v1.addEdge(v2);
    v1.save();
    
    System.out.println("llamando a commit...");
    db.commit();
    db.close();
    
    System.out.println("configuración grabada:");
    System.out.println("v1: "+v1.getIdentity().toString());
    System.out.println("v2: "+v2.getIdentity().toString());
    System.out.println("edge: "+oe.getFrom()+" --> "+oe.getTo());
    
    // abrir otra transacción
    db = dbPool.acquire();
    db.begin();
    System.out.println("crear v3");
    OVertex v3 = db.newVertex();
    v3.save();
    System.out.println("v3 save rid: "+v3.getIdentity().toString());
    
    System.out.println("modificar v1...");
    v1.setProperty("value", "test");
    
    System.out.println("borrar relación con v2");
    // borrar el edge anterior
    Iterator<OEdge> toRemove = v1.getEdges(ODirection.OUT).iterator();
    while (toRemove.hasNext()) {
        OEdge removeEdge = toRemove.next();
        //removeEdge = (OEdge) edge;
        removeEdge.delete();
        removeEdge.save();
    }
    
    System.out.println("agregar una relación de v1 a v3");
    OEdge oe2 = v1.addEdge(v3);
    
    v1.save();

    // crera en edge nuevo a v3
    db.commit();
    
    System.out.println("v1 edges: "+v1.getEdges(ODirection.OUT));
    System.out.println("v3 post-commit rid: "+v3.getIdentity().toString());
    System.out.println("oe2: "+oe2.getFrom()+" --> "+oe2.getTo());
    
    db.close();
    
}

当你运行它的时候,你会得到带有两个外边的V1。一个包含已移除边的EdgeRID,另一个指向V3。如果您循环删除的边,它会显示{}并报告404错误。顶点被持久化,因此错误发生在数据库内部。

错误出在移除边缘的那段时间。如果你使用边引用,它可以工作,但在真实的代码中,我不知道顶点有多少边。

V2和V3具有正确的IN引用。

我该怎么解决这个问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-24 11:02:43

这取决于顶点在不同数据库会话之间共享的事实。

一个简单的修复方法是在第二个会话中使用顶点之前按ID重新加载它们:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// abrir otra transacción
db = dbPool.acquire();
db.begin();

//RELOAD THE VERTEX BEFORE USING IT AGAIN!
v1 = db.load(v1.getIdentity());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64037033

复制
相关文章
OrientDB 系列(1) —— 初识 OrientDB
OrientDB 的下载地址: http://www.orientdb.org/download
求和小熊猫
2022/05/07
1K0
OrientDB 系列(1) —— 初识 OrientDB
[GraphDB普及系列]了解Multi-Model API
OrientDB诞生之初是文档数据库,其中包含的无索引链接设计让它完美地具备了图数据库的能力,但彼时其核心API依然是Document API,随后,基于Apache TinkerPop 2.x 实现的Graph API,作为一个单独的组件加入其中。这种割裂的API设计,显然不符合OrientDB多模型数据库的定位。因此,v3.0版本之后,Multi-Model API作为新的核心出现在整个API体系中。
曲水流觞
2019/10/27
8920
[GraphDB普及系列]了解Multi-Model API
根据顶点边数和点信息输出邻接矩阵
// ConsoleApplication23.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include #include using namespace std; #define MAXVEX 100 typedef char VertexType; typedef int EdgeType; typedef struct { VertexType vexs[MAXVEX]; Edge
川川菜鸟
2021/10/18
4150
图数据库调研
注意,这里只是说了通过 提供类似图的语义查询功能,并没有规定图的存储结构。图数据库的主要优点:
Spark学习技巧
2020/09/27
6.6K0
图数据库调研
g2o优化顶点和边1 2 3 (长文)
小绿最近在学习视觉SLAM十四讲里面的程序,前两天跑来问我关于g2o优化库怎么使用,这两天小白整理网上的一些资料,与小伙伴分一起分享一下。
小白学视觉
2019/10/24
2.4K0
边工作边溶解,这种心脏起搏器不用手术移除了
选自IEEE Spectrum 机器之心编译 机器之心编辑部 来自美国西北大学的研究团队为心脏病患者开发了一种可溶解的智能起搏器,并与可穿戴的传感器网络相连,全面监测患者心律,预计将在 5 年内投入临床使用。 进行心脏血管手术后,许多患者需要一个临时起搏器来帮助他们稳定心率。该装置由一个脉冲发生器、一根或多根绝缘导线以及每根导线末端的电极组成。脉冲发生器是一个有金属外壳,包含小型计算机和电池的电子电路,它负责调节发送到心脏的脉冲。电线的一端连接脉冲发生器,另一端连接的电极则放置在心脏的一个腔室内。 但传统的
机器之心
2022/08/25
2540
边工作边溶解,这种心脏起搏器不用手术移除了
HugeGraph笔记·OrientDB笔记
https://hugegraph.github.io/hugegraph-doc/
陈黎栋
2020/02/18
7000
探索图数据库在数据资产可视化中的应用
随着社交、电商、金融、物联网等行业的快速发展,现实组成了一张庞大的关系网,传统数据库很难处理关系运算,大数据行业需要处理的数据之间的关系随着数据量呈几何指数增长,亟需一种支持海量复杂数据关系运算的数据库,图数据库应运而生。本文将探讨图数据库在数据资产可视化中的应用。
yuanyi928
2020/07/14
1.9K0
Win系统安装Neo4j
Neo4j 是目前最流行的图形数据库,支持完整的事务,在属性图中,图是由顶点(Vertex),边(Edge)和属性(Property)组成的,顶点和边都可以设置属性,顶点也称作节点,边也称作关系,每个节点和关系都可以由一个或多个属性。Neo4j创建的图是用顶点和边构建一个有向图,其查询语言cypher已经成为事实上的标准。
海天一树
2018/10/08
1.2K0
Win系统安装Neo4j
图解Spark Graphx实现顶点关联邻接顶点的collectNeighbors函数原理
在一张社区网络里,可能需要查询出各个顶点邻接关联的顶点集合,类似查询某个人关系比较近的都有哪些人的场景。
朱季谦
2023/09/01
7301
图解Spark Graphx实现顶点关联邻接顶点的collectNeighbors函数原理
采用公共云的障碍正在减弱,但服务器的危险仍然存在
随着公共云继续扩展到主流IT,企业采用公共云的障碍似乎正在降低。麦肯锡公司最近的一项研究表明,云计算环境的安全问题不像过去那么突出。 如今,采用公共云变得越来越容易,企业对其安全性或有效性的需求比过去
静一
2018/03/28
8710
采用公共云的障碍正在减弱,但服务器的危险仍然存在
thinkphp开发的网站配置cdn后仍然很慢原因一解
thinkphp配置文件,设置【'SESSION_AUTO_START'=>false,】,源站中Pragma:no-cache消失。
信和网站维护中心
2022/07/13
9950
Ubuntu 换源后仍然报错:404、没有 Release 文件
关键词:Ubuntu 21.10、换源、404 Not Found、没有 Release 文件
他叫自己MR.张
2022/10/31
7.6K1
LeetCode 5234. 移除字母异位词后的结果数组
给你一个下标从 0 开始的字符串 words ,其中 words[i] 由小写英文字符组成。
Michael阿明
2022/05/16
4000
WordPress 提示”存在不一致的文件权限”的解决办法
有时候我们升级 wordpress 博客版本或者升级插件的时候,会提示:更新失败:因为我们不能复制一些文件,升级未被安装。这通常是因为存在不一致的文件权限。这一般是因为 wordpress 权限不够导致的。 其实 wordpress 升级、更新的时候遇到类似提示,差不多都是权限不够导致的,这类问题挺普遍的。 相关阅读: WordPress 后台编辑主题无“更新文件”按钮的解决办法 linux 如何修改文件夹所属用户名和用户组 解决 WordPress 插件更新“需要访问您网页服务器权限”的问题 比如本文遇到
魏艾斯博客www.vpsss.net
2018/06/01
1.6K0
ssh登录配置公钥后仍然需要密码登录的问题处理
如果看到有说不能访问 ~/.ssh/authorized_keys 这个文件的,可以尝试下修改.ssh目录的权限为700,authorized_keys 文件的权限为 600
前Thoughtworks-杨焱
2021/12/07
1.1K0
ssh登录配置公钥后仍然需要密码登录的问题处理
如果看到有说不能访问 ~/.ssh/authorized_keys 这个文件的,可以尝试下修改.ssh目录的权限为700,authorized_keys 文件的权限为 600
前Thoughtworks-杨焱
2021/12/07
2.1K0
LeetCode 2273. 移除字母异位词后的结果数组
给你一个下标从 0 开始的字符串 words ,其中 words[i] 由小写英文字符组成。
Michael阿明
2022/11/27
4880
点击加载更多

相似问题

如何在OrientDB中移除与顶点的边连接?

113

多顶点间的OrientDb边

17

Boost图-删除顶点后,顶点仍然存在

12

特定顶点上的OrientDb极限边

11

边和顶点性质的OrientDB组合

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文