gpt4 book ai didi

neo4j - 在 Rest 配置中使用 Neo4jTemplate 保存数据太慢

转载 作者:行者123 更新时间:2023-12-04 04:52:53 25 4
gpt4 key购买 nike

我正在使用 Spring 和 Neo4j 数据库进行项目。我将 Neo4j 数据库配置为 rest neo4j。这是配置:

<neo4j:config graphDatabaseService="graphDatabaseService" />
<bean id="graphDatabaseService" class="org.springframework.data.neo4j.rest.SpringRestGraphDatabase">
<constructor-arg index="0" value="http://localhost:7474/db/data" />
</bean>

一开始,我在域对象( @NodeEntity@RelatedTo 等)和存储库上使用符号来保存节点和关系。我的域对象是 用户 (id, name), 项目 (id, name, description, 术语列表), 条款 (内容,计数)。所以那里没有那么多属性,但即便如此,通过存储库保存对象,例如具有定义的 id 和名称的用户持续为 25 秒 .

我看到这种与neo4j数据库的通信还没有得到很好的优化,所以我 使用 Neo4jTemplate 打开 .

这是保存用户的示例(用户中的约束是字符串(“id”、“name”、“USER”):
public Node saveUser(User user) {
Node node = template.createNode();
node.setProperty(User.ID, user.getId());
node.setProperty(User.NAME, user.getName());
node.setProperty("_type", User.LABEL);

template.index(INDEX_ID, node, User.ID, user.getId());
return node;
}

这是一个保存项目及其术语关系的示例。所以每一项都是一个连接到项目的节点:
public Node saveItem(Item item) {
Node node = template.createNode();
node.setProperty(Item.ID, item.getId());
node.setProperty(Item.NAME, item.getName());
node.setProperty(Item.DESCRIPTION, item.getDescription());
node.setProperty("_type", Item.LABEL);

template.index(INDEX_ID, node, Item.ID, item.getId());

for(String termContent : item.getTerms()) {
Node term = termRepository.getNodeByContent(termContent);
if(term == null) {
term = termRepository.saveTerm(new Term(termContent));
} else {
termRepository.addCountToTerm(term);
}

int frequency = 1;

Relationship contains = node.createRelationshipTo(term, RelationshipTypes.CONTAINS);
contains.setProperty(Term.FREQUENCY, frequency);
}
return node;
}

对象 termRepository (它不扩展 GraphRespository<Term> )具有类似于保存用户的方法的方法。获取术语是这样完成的:
public Node getNodeByContent(String content) {
if(!template.getGraphDatabaseService().index().existsForNodes(INDEX_ID))
return null;
return template.lookup(INDEX_ID, Term.CONTENT, content).to(Node.class).singleOrNull();
}

而且, 最后我的问题是什么 .即使现在是 还是慢 ,插入用户(仅参数 id 和 name)并为 建立索引3 秒 , 并在它连接到条款的地方插入项目需要 30 秒 (对于 4 个条款 - 根据我在实际情况下拥有的 60-70 的数量,这是非常小的数量)。

拜托,您能给我一些提示或其他任何可以帮助我解决此类问题的方法吗?
提前致谢。

最佳答案

这真的很奇怪,你的服务器在哪里运行?似乎与网络设置有关。

我的意思是基于 REST 的 SDN 并不快,但也没有那么慢。

你也可以分享你的类(class)吗?

您不应通过网络进行单个属性更新。使用一次创建所有属性的密码语句。

还有 neo4jTemplate.createNode(map of properties) 将其作为一项操作执行。

关于neo4j - 在 Rest 配置中使用 Neo4jTemplate 保存数据太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17159221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com