2015-04-14 2 views
1

Для игры MORPG hack'n'slash я в настоящее время с помощью Neo4j с рисунком, как это:Лучшее решение для нескольких запросов в течение ограниченного времени

У меня есть класс разъем Neo4j, создавая свою связь и реализующего Singleton и этот экземпляр используется всеми классами xxxMapper, вызывая Neo4jConnetor.getInstance(). query (String query), который возвращает итератор queryresult.

Atm Я задаю себе вопрос, игра будет иметь тонну запросов в секунду (например, 5 на игрока в секунду). Поэтому я не знаю, с точки зрения perfs, какой шаблон использовать, если я должен продолжать использовать мою систему 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"); 

ответ

2

встроенный GraphDatabaseService Neo4j является не объединяли и поточно.

Я бы не рекомендовал RestGraphDatabase и друзей, потому что он медленный и устаревший.

Просто используйте параметры вместо текстовых строк и не использовать дополнительный матч для запуска запроса.

Если вы ищете более быстрый доступ к драйверу JDBC (который скоро будет обновлен).

+0

Есть ли у них какие-либо руководства по созданию надежного соединителя с JDBC и Neo4J. Кроме того, я использую необязательное совпадение, потому что я хочу получить null, если это ничего не возвращает – Supamiu

Смежные вопросы