Драйвер болта neo4j медленнее конечной точки http
Мы используем конечную точку http для запросов на чтение и планируем перейти на драйвер java bolt. Но в начальных тестах было замечено, что драйвер болта медленнее, чем конечная точка http. Ниже приведен код Java-драйвера, который мы используем.
Экземпляр драйвера, созданный на уровне контекста приложения: Driver neo4jReadDriver = GraphDatabase.driver("bolt://xyz.com", AuthTokens.basic("neo4j","neo4j"), Config.build(). WithMaxSessions(20).toConfig());
Код приложения для выполнения запроса:
Session session = neo4jReadDriver .session();
StatementResult result = session.run( "MATCH(p:GOE) return count(p) as cnt");
while ( result.hasNext() )
{
Record record = result.next();
System.out.println("Total number of GOEs:"+ record.get( "cnt").asInt());
}
result.consume();
session.close();
driver.close();
Этот запрос последовательно занимает вдвое больше времени, чем конечная точка http. Большую часть времени занимает driver.getSession(). Я что-то здесь не так делаю? Как получить высокую пропускную способность с помощью болтового Java-драйвера, когда параллельные пользователи выполняют запросы на чтение?
1 ответ
Из вашего описания неясно, какие аспекты Bolt вы сравниваете с какими аспектами HTTP и какие показатели вы измеряете. Максимальная пропускная способность? Задержка индивидуального запроса? И для какой нагрузки? Учитывали ли вы прогрев кеша в своих тестах?
Принимая во внимание то, что Bolt с состоянием и HTTP без сохранения состояния, нет смысла включать получение и выпуск сеанса в ваши измерения; действительно, это исказит ваши показания. Вместо этого сравнивайте только части запроса и результата.