gpt4 book ai didi

java - 有限时间内多次查询的最佳解决方案

转载 作者:行者123 更新时间:2023-11-30 03:28:34 24 4
gpt4 key购买 nike

对于 MORPG Hack'n'Slash 游戏,我目前正在使用 Neo4j,其模式如下:

我有一个 Neo4J 连接器类,创建连接并实现 Singleton,每个 xxxMapper 类都使用此实例,调用 Neo4jConnetor.getInstance().query(String query) 返回查询结果的迭代器。

Atm 我在问自己一个问题,游戏每秒会有大量查询(例如每个玩家每秒 5 个)。因此,就性能而言,我不知道应该使用哪种模式,是否应该继续使用我的 Singleton 系统或使用另一个系统(例如 Neo4jConnector 池或其他我还不知道的东西)。

这是连接器类:

public class Neo4jConnector{

private String urlRest;
private String url = "http://localhost:7474";
protected QueryEngine<?> engine;
protected static Neo4jConnector INSTANCE = new Neo4jConnector();

private Neo4jConnector(){
urlRest = url+"/db/data";
final RestAPI graphDb = new RestAPIFacade(urlRest);
engine = new RestCypherQueryEngine(graphDb);
}

public static Neo4jConnector getInstance(){
if (INSTANCE == null)
{
INSTANCE = new Neo4jConnector();
}
return INSTANCE;
}

@SuppressWarnings("unchecked")
public Iterator<Map<String, Object>> query(String query){
QueryResult<Map<String, Object>> row = (QueryResult<Map<String, Object>>) engine.query(query, Collections.EMPTY_MAP);
return row.iterator();
}
}

以及此类的示例调用:

Iterator<Map<String, Object>> iterator = Neo4jConnector.getInstance().query("optional Match(u:User{username:'"+username+"'}) return u.password as password, u.id as id");

最佳答案

Neo4j 的嵌入式 GraphDatabaseService 不是池化的且线程安全的。

我不会推荐 RestGraphDatabase 和 friend ,因为它很慢而且过时。

只需使用参数而不是文字字符串,并且不要使用可选匹配来启动查询。

如果您寻求更快的访问速度,请查看 JDBC 驱动程序(很快就会更新)。

关于java - 有限时间内多次查询的最佳解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29622464/

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