我使用的是OrientDB 2.1.4和blueprints-core-2.6.0。
我需要更新现有顶点上的值,或者如果不存在,则创建新顶点。(预计每45秒30k个顶点)
我的顶点类是: Device(Name,Type,ActiveSessionCount) --每个设备的"Name“都是唯一的实体。
如果设备存在,则需要更新设备上的ActiveSessionCount,否则创建新的设备顶点。
if (graph.getVertices(keyName, key).iterator().hasNext()) {
vertex = (OrientVertex) graph.getVertices(keyName, key).iterator().next();
} else {
vertex = graph.addVertex(className, attributeName, key);
}我正在尝试检查顶点是否存在,如果顶点已经存在,我已经获取了vertex对象以进行进一步更新,否则创建了一个新的vertex对象。
虽然,这是有效的,它需要几分钟来执行30k个记录,而我需要在45秒内完成相同的操作。
发布于 2015-11-04 17:24:38
尝试使用UPSERT。
UPSERT在记录已经存在的情况下更新记录,或者在记录不存在的情况下插入新的记录,所有这些都在一条语句中完成。
g.command(new OCommandSQL("update Device set Name='Device 3',Type='Type 3',ActiveSessionCount=3 upsert where Name='Device 3'' "));致以敬意,
米凯拉
https://stackoverflow.com/questions/33497382
复制相似问题